@rentman/rm-core 7.1.1 → 8.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 (81) hide show
  1. package/changelog.md +10 -0
  2. package/dist/rm-core.js +1176 -917
  3. package/dist/rm-core.min.js +2 -2
  4. package/dist/types/classes/ApiFormatter.d.ts +16 -15
  5. package/dist/types/classes/ApiRequestService.d.ts +9 -8
  6. package/dist/types/classes/ApiResponseProcessor.d.ts +12 -13
  7. package/dist/types/classes/ChangesCompilation.d.ts +5 -3
  8. package/dist/types/classes/ChangesDelta.d.ts +5 -4
  9. package/dist/types/classes/ChangesDeltaBase.d.ts +5 -5
  10. package/dist/types/classes/CollectionEntryService.d.ts +5 -4
  11. package/dist/types/classes/CollectionMatcherBase.d.ts +5 -4
  12. package/dist/types/classes/CollectionMatcherCachedCollectionProcessor.d.ts +6 -5
  13. package/dist/types/classes/CollectionResourceService.d.ts +2 -2
  14. package/dist/types/classes/ColumnCache.d.ts +8 -7
  15. package/dist/types/classes/ColumnExpansion.d.ts +3 -2
  16. package/dist/types/classes/ColumnHandler.d.ts +9 -8
  17. package/dist/types/classes/ColumnInfo.d.ts +6 -6
  18. package/dist/types/classes/ColumnSet.d.ts +5 -4
  19. package/dist/types/classes/ColumnSubsetCache.d.ts +3 -2
  20. package/dist/types/classes/ColumnUtil.d.ts +12 -11
  21. package/dist/types/classes/ConversionMapService.d.ts +6 -5
  22. package/dist/types/classes/CreateRequest.d.ts +5 -4
  23. package/dist/types/classes/CreatedChangesDelta.d.ts +7 -6
  24. package/dist/types/classes/InternalChangesDelta.d.ts +4 -3
  25. package/dist/types/classes/ItemCache.d.ts +13 -12
  26. package/dist/types/classes/ItemCreateService.d.ts +5 -4
  27. package/dist/types/classes/ItemEntryService.d.ts +8 -7
  28. package/dist/types/classes/KeyService.d.ts +7 -6
  29. package/dist/types/classes/LockService.d.ts +11 -11
  30. package/dist/types/classes/ModuleChangesCompilation.d.ts +3 -2
  31. package/dist/types/classes/QueryColumnExtractor.d.ts +11 -11
  32. package/dist/types/classes/QueryContainsLocalIdParser.d.ts +10 -10
  33. package/dist/types/classes/QueryLinkedToParser.d.ts +11 -11
  34. package/dist/types/classes/QueryLocallyMatchableParser.d.ts +10 -10
  35. package/dist/types/classes/QueryMatcher.d.ts +4 -3
  36. package/dist/types/classes/QueryParser.d.ts +15 -13
  37. package/dist/types/classes/QueryParserBase.d.ts +14 -23
  38. package/dist/types/classes/QueryParserIdUpdater.d.ts +10 -10
  39. package/dist/types/classes/QueryService.d.ts +4 -9
  40. package/dist/types/classes/RequestBuffer.d.ts +5 -4
  41. package/dist/types/classes/RequestBufferManager.d.ts +5 -4
  42. package/dist/types/classes/RequestColumnExpansion.d.ts +4 -3
  43. package/dist/types/classes/SocketMessageHandler.d.ts +4 -3
  44. package/dist/types/classes/TemplateCache.d.ts +4 -3
  45. package/dist/types/classes/Util.d.ts +1 -1
  46. package/dist/types/classes/cache/AbstractCache.d.ts +8 -8
  47. package/dist/types/classes/cache/CachedQueryHandlerBase.d.ts +13 -12
  48. package/dist/types/classes/cache/CollectionMatcherCachedQueryProcessor.d.ts +6 -5
  49. package/dist/types/classes/cache/ItemHandlerBase.d.ts +14 -11
  50. package/dist/types/classes/cache/server/ServerCache.d.ts +8 -7
  51. package/dist/types/classes/cache/server/ServerCachedQueryHandler.d.ts +6 -6
  52. package/dist/types/classes/cache/server/ServerItemHandler.d.ts +10 -9
  53. package/dist/types/classes/cache/transaction/TransactionCache.d.ts +31 -30
  54. package/dist/types/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +6 -6
  55. package/dist/types/classes/cache/transaction/TransactionCollectionHandler.d.ts +3 -2
  56. package/dist/types/classes/cache/transaction/TransactionItemHandler.d.ts +23 -20
  57. package/dist/types/classes/cache/transaction/TransactionValidator.d.ts +3 -2
  58. package/dist/types/constants.d.ts +1 -1
  59. package/dist/types/factories/CollectionEntryFactory.d.ts +2 -2
  60. package/dist/types/factories/CollectionMatcherFactory.d.ts +4 -4
  61. package/dist/types/factories/CollectionResourceFactory.d.ts +2 -2
  62. package/dist/types/factories/ColumnExpansionFactory.d.ts +3 -2
  63. package/dist/types/factories/ColumnInfoFactory.d.ts +4 -3
  64. package/dist/types/factories/ColumnSetFactory.d.ts +6 -5
  65. package/dist/types/factories/ColumnSubsetCacheFactory.d.ts +3 -2
  66. package/dist/types/factories/CreateRequestFactory.d.ts +2 -2
  67. package/dist/types/factories/ItemEntryFactory.d.ts +2 -2
  68. package/dist/types/factories/ItemResourceFactory.d.ts +2 -2
  69. package/dist/types/factories/QueryMatcherFactory.d.ts +3 -2
  70. package/dist/types/factories/TemplateFactory.d.ts +3 -2
  71. package/dist/types/interfaces/ApiRequestServiceInterface.d.ts +9 -8
  72. package/dist/types/interfaces/AuthInterface.d.ts +2 -1
  73. package/dist/types/interfaces/LinkTreeServiceInterface.d.ts +1 -1
  74. package/dist/types/models/CollectionEntry.d.ts +5 -4
  75. package/dist/types/models/CollectionOptions.d.ts +14 -8
  76. package/dist/types/models/CollectionResource.d.ts +27 -26
  77. package/dist/types/models/ItemEntry.d.ts +2 -2
  78. package/dist/types/models/ItemResource.d.ts +18 -14
  79. package/dist/types/models/Template.d.ts +4 -3
  80. package/dist/types/types/ItemTypesCollection.d.ts +138 -55
  81. package/package.json +5 -3
@@ -1,25 +1,24 @@
1
+ import { ApiEnumItemType, ApiFields } from '@rentman/backend-types';
1
2
  import { TransactionCache } from '../classes';
2
3
  import { ItemResourceFactory } from '../factories';
3
4
  import { ItemEntry } from '../models';
4
- import { ColumnIdTypeMap, EntryParentNull, FieldMap, ItemType, PromiseInterface, ResponseColumn } from '../types';
5
- export declare class ItemResource<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> {
5
+ import { EntryParentNull, ExtractApiItemType, FieldMap, PromiseInterface, ResponseColumnMap } from '../types';
6
+ export declare class ItemResource<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> {
6
7
  protected readonly factory: ItemResourceFactory;
7
8
  readonly entry: ItemEntry<ItemTypeType>;
8
9
  protected readonly _isNew: boolean;
9
10
  protected readonly transaction: TransactionCache;
10
- columns: {
11
- [columnId: string]: ResponseColumn;
12
- };
13
- fields: FieldMap<ItemTypeType, Fields>;
14
- initial: Readonly<FieldMap<ItemTypeType, Fields>>;
11
+ columns: ResponseColumnMap<ItemTypeType, ColumnIds>;
12
+ fields: FieldMap<ItemTypeType, ColumnIds>;
13
+ initial: Readonly<FieldMap<ItemTypeType, ColumnIds>>;
15
14
  constructor(factory: ItemResourceFactory, entry: ItemEntry<ItemTypeType>, _isNew: boolean, transaction: TransactionCache);
16
15
  onConstruct(): void;
17
16
  /**
18
17
  * @description
19
18
  * Updates the fields of the item and calls onChange, when updating many fields of many items it's better to create a {@link ChangesDelta ChangesDelta} yourself so all changes can be applied at once
20
19
  */
21
- setFields(values: Partial<Fields>): PromiseInterface<this>;
22
- copyFields(destination?: FieldMap<ItemTypeType>): Fields;
20
+ setFields(values: Partial<FieldMap<ItemTypeType, ColumnIds>>): PromiseInterface<this>;
21
+ copyFields(destination?: FieldMap<ItemTypeType, []>): FieldMap<ItemTypeType, ColumnIds>;
23
22
  /**
24
23
  * Fetches the ItemResource's parent with the current fields
25
24
  *
@@ -33,7 +32,7 @@ export declare class ItemResource<ItemTypeType extends ItemType = any, Fields ex
33
32
  * @deprecated
34
33
  * Use {@link TransactionCache.applyChangesDelta transaction.applyChangesDelta} instead
35
34
  */
36
- callOnChange(previous: Fields): void;
35
+ callOnChange(previous: FieldMap<ItemTypeType, ColumnIds>): void;
37
36
  /**
38
37
  * @description
39
38
  * Utility function to easily check if a field is changed.
@@ -50,7 +49,7 @@ export declare class ItemResource<ItemTypeType extends ItemType = any, Fields ex
50
49
  * }
51
50
  * }
52
51
  */
53
- compareItemField(columnId: keyof Fields, previous: Fields): boolean;
52
+ compareItemField(columnId: ColumnIds[number], previous: FieldMap<ItemTypeType, ColumnIds>): boolean;
54
53
  hasChanges(): boolean;
55
54
  setTransactionParameters(parameters: any): void;
56
55
  /**
@@ -61,7 +60,7 @@ export declare class ItemResource<ItemTypeType extends ItemType = any, Fields ex
61
60
  isLocal(): boolean;
62
61
  toJSON(): {
63
62
  columns: string[];
64
- fields: Fields;
63
+ fields: FieldMap<ItemTypeType, ColumnIds>;
65
64
  entry: ItemEntry<ItemTypeType>;
66
65
  };
67
66
  /**
@@ -70,7 +69,10 @@ export declare class ItemResource<ItemTypeType extends ItemType = any, Fields ex
70
69
  *
71
70
  * @param columnPath Can either be an array of columnIds (['column', 'column2']) or a config column string ('column>column2')
72
71
  */
73
- getDerivedValue<T extends any = any>(columnPath: string[] | string): T | undefined;
72
+ getDerivedValue<T1 extends string>(columnPath: T1): any | undefined;
73
+ getDerivedValue<T1 extends ColumnIds[number]>(columnPath: [T1]): FieldMap<ItemTypeType>[T1] | undefined;
74
+ getDerivedValue<T1 extends ColumnIds[number], T2 extends keyof ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>]>(columnPath: [T1, T2]): FieldMap<ExtractApiItemType<ApiFields[ItemTypeType][T1]>>[T2] | undefined;
75
+ getDerivedValue<T1 extends ColumnIds[number], T2 extends keyof ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>], T3 extends keyof ApiFields[ExtractApiItemType<ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>][T2]>]>(columnPath: [T1, T2, T3]): FieldMap<ExtractApiItemType<ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>][T2]>>[T3] | undefined;
74
76
  /**
75
77
  * @description
76
78
  * Traverses the column path and returns the fields of the derived item, returns undefined if the item isn't found
@@ -80,5 +82,7 @@ export declare class ItemResource<ItemTypeType extends ItemType = any, Fields ex
80
82
  * @remark
81
83
  * Assumes the derived item's values are already cached
82
84
  */
83
- getDerivedValues<DerivedFields extends FieldMap = any>(columnPath: string[]): Readonly<DerivedFields> | undefined;
85
+ getDerivedValues<T1 extends ColumnIds[number]>(columnPath: [T1]): FieldMap<ExtractApiItemType<ApiFields[ItemTypeType][T1]>> | undefined;
86
+ getDerivedValues<T1 extends ColumnIds[number], T2 extends keyof ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>]>(columnPath: [T1, T2]): FieldMap<ExtractApiItemType<ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>][T2]>> | undefined;
87
+ getDerivedValues<T1 extends ColumnIds[number], T2 extends keyof ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>], T3 extends keyof ApiFields[ExtractApiItemType<ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>][T2]>]>(columnPath: [T1, T2, T3]): FieldMap<ExtractApiItemType<ApiFields[ExtractApiItemType<ApiFields[ExtractApiItemType<ApiFields[ItemTypeType][T1]>][T2]>]>> | undefined;
84
88
  }
@@ -1,11 +1,12 @@
1
+ import { ApiEnumItemType, ApiFields } from '@rentman/backend-types';
1
2
  import { ColumnSet } from '../classes';
2
3
  import { TemplateFactory } from '../factories';
3
- import { ApiRequestColumnMap, ApiResponse, ColumnIdTypeMap, FieldMap, ItemType, ResponseColumnItemTypeMap } from '../types';
4
- export declare class Template<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> {
4
+ import { ApiRequestColumnMap, ApiResponse, FieldMap, ResponseColumnItemTypeMap } from '../types';
5
+ export declare class Template<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = any> {
5
6
  itemType: ItemTypeType;
6
7
  response: ApiResponse;
7
8
  responseColumns: ResponseColumnItemTypeMap;
8
9
  columns: ColumnSet<ItemTypeType>;
9
10
  constructor(factory: TemplateFactory, itemType: ItemTypeType, response: ApiResponse, additionalRequestColumns: ApiRequestColumnMap, additionalResponseColumns: ResponseColumnItemTypeMap);
10
- getFields(): FieldMap<ItemTypeType, Fields>;
11
+ getFields(): FieldMap<ItemTypeType, ColumnIds>;
11
12
  }
@@ -1,26 +1,89 @@
1
+ import { ApiEnumApiType, ApiEnumApiTypeTsTypeMapping, ApiEnumItemType, ApiFields, ApiQuery as BackendApiQuery, ApiQueryConditionComparator as BackendTypesApiQueryConditionComparator, ApiQueryConditionComparatorShort as BackendApiQueryConditionComparatorShort, ApiQueryConditionCustom, ApiQueryConditionIn, ApiQueryConditionInShort, ApiQueryConditionLinkedTo, ApiQueryConditionSearch, ApiQueryConditionSubQuery, GetColumnType, ItemId } from '@rentman/backend-types';
2
+ import moment from 'moment';
1
3
  import { ApiResponseProcessor, ColumnSet, RequestColumnExpansion } from '../classes';
2
4
  import { CollectionResource, ItemEntry, ItemEntryOptionsInterface, ItemResource } from '../models';
3
5
  import { CollectionOptions } from '../models/CollectionOptions';
6
+ export declare type ApiEnumApiTypeToTsTypeMap = {
7
+ [ApiEnumApiType.TYPE_TOKEN]: string;
8
+ [ApiEnumApiType.TYPE_ID]: number;
9
+ [ApiEnumApiType.TYPE_ORDER]: number;
10
+ [ApiEnumApiType.TYPE_PARENTID]: number;
11
+ [ApiEnumApiType.TYPE_PARENTTYPE]: ApiEnumItemType;
12
+ [ApiEnumApiType.TYPE_ITEMID]: number;
13
+ [ApiEnumApiType.TYPE_ITEMTYPE]: ApiEnumItemType;
14
+ [ApiEnumApiType.TYPE_PASSWORD]: string;
15
+ [ApiEnumApiType.TYPE_IP]: string;
16
+ [ApiEnumApiType.TYPE_COORDINATE]: number;
17
+ [ApiEnumApiType.TYPE_BLOB]: string;
18
+ [ApiEnumApiType.TYPE_BITFLAG]: number;
19
+ [ApiEnumApiType.TYPE_NUMBER]: number;
20
+ [ApiEnumApiType.TYPE_VOLUME]: number;
21
+ [ApiEnumApiType.TYPE_WEIGHT]: number;
22
+ [ApiEnumApiType.TYPE_DISTANCE]: number;
23
+ [ApiEnumApiType.TYPE_DIMENSION]: number;
24
+ [ApiEnumApiType.TYPE_QUANTITY]: number;
25
+ [ApiEnumApiType.TYPE_POWER]: number;
26
+ [ApiEnumApiType.TYPE_CURRENT]: number;
27
+ [ApiEnumApiType.TYPE_DOUBLE]: number;
28
+ [ApiEnumApiType.TYPE_PRICE]: number;
29
+ [ApiEnumApiType.TYPE_BOOL]: boolean;
30
+ [ApiEnumApiType.TYPE_INT]: number;
31
+ [ApiEnumApiType.TYPE_EMAIL]: string;
32
+ [ApiEnumApiType.TYPE_PHONE]: string;
33
+ [ApiEnumApiType.TYPE_URL]: string;
34
+ [ApiEnumApiType.TYPE_PERCENTAGE]: number;
35
+ [ApiEnumApiType.TYPE_TEXT]: string;
36
+ [ApiEnumApiType.TYPE_LONGTEXT]: string;
37
+ [ApiEnumApiType.TYPE_HTML]: string;
38
+ [ApiEnumApiType.TYPE_DATE]: moment.Moment;
39
+ [ApiEnumApiType.TYPE_DATETIME]: moment.Moment;
40
+ [ApiEnumApiType.TYPE_DURATION]: moment.Duration;
41
+ [ApiEnumApiType.TYPE_ITEM]: number;
42
+ [ApiEnumApiType.TYPE_LINK]: number;
43
+ [ApiEnumApiType.TYPE_CHILD]: number;
44
+ [ApiEnumApiType.TYPE_SIBLING]: number;
45
+ [ApiEnumApiType.TYPE_JSON]: any;
46
+ [ApiEnumApiType.TYPE_ENUM]: string;
47
+ [ApiEnumApiType.TYPE_COUNTRY]: string;
48
+ [ApiEnumApiType.TYPE_COLOR]: string;
49
+ [ApiEnumApiType.TYPE_TEXTREPLACE]: string;
50
+ [ApiEnumApiType.TYPE_FILESIZE]: number;
51
+ [ApiEnumApiType.TYPE_ICON]: string;
52
+ };
4
53
  export declare type ParentIdMap<T> = {
5
54
  [parentId: number]: T;
6
55
  };
7
- export declare type EntryParent = {
8
- itemType: string;
9
- itemId: number;
56
+ export declare type EntryParent<ItemTypeType extends ApiEnumItemType = any> = {
57
+ itemType: ItemTypeType;
58
+ itemId: ItemId;
10
59
  };
11
- export declare type EntryParentNull = EntryParent | null;
12
- /**
13
- * @description
14
- * Used for fields that belong to a specific itemType
15
- */
16
- export declare type FieldMap<_ItemTypeType extends ItemType = any, Values = ColumnIdTypeMap> = Values;
17
- export declare type ColumnIdTypeMap<Fields extends object = any> = Fields;
60
+ export declare type EntryParentNull<ItemTypeType extends ApiEnumItemType = any> = EntryParent<ItemTypeType> | null;
61
+ export declare type FieldMap<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = {
62
+ [ColumnId in ColumnIds[number]]: GetFieldValueType<ItemTypeType, ColumnId>;
63
+ };
64
+ export declare type ExtractApiType<T> = T extends {
65
+ type: any;
66
+ } ? T['type'] : never;
67
+ export declare type ExtractApiEnum<T> = T extends {
68
+ enum: any;
69
+ } ? T['enum'] : never;
70
+ export declare type ExtractApiItemType<T> = T extends {
71
+ itemType: any;
72
+ } ? T['itemType'] : never;
73
+ export declare type ExtractApiNullable<T> = T extends {
74
+ nullable: any;
75
+ } ? T['nullable'] : never;
76
+ export declare type ExtractApiFieldType<T> = T extends {
77
+ type: keyof ApiEnumApiTypeToTsTypeMap;
78
+ } ? ApiEnumApiTypeToTsTypeMap[T['type']] : never;
79
+ export declare type GetFieldValueType<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]> = ExtractApiType<ApiFields[ItemTypeType][ColumnId]> extends ApiEnumApiType.TYPE_ENUM ? keyof ExtractApiEnum<ApiFields[ItemTypeType][ColumnId]> : GetNullableValueType<ItemTypeType, ColumnId>;
80
+ declare type GetNullableValueType<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]> = ExtractApiNullable<ApiFields[ItemTypeType][ColumnId]> extends false ? ExtractApiFieldType<ApiFields[ItemTypeType][ColumnId]> : ExtractApiType<ApiFields[ItemTypeType][ColumnId]> extends ApiEnumApiType.TYPE_DATETIME ? ExtractApiFieldType<ApiFields[ItemTypeType][ColumnId]> : ExtractApiType<ApiFields[ItemTypeType][ColumnId]> extends ApiEnumApiType.TYPE_DATE ? ExtractApiFieldType<ApiFields[ItemTypeType][ColumnId]> : ExtractApiType<ApiFields[ItemTypeType][ColumnId]> extends ApiEnumApiType.TYPE_DURATION ? ExtractApiFieldType<ApiFields[ItemTypeType][ColumnId]> : null | ExtractApiFieldType<ApiFields[ItemTypeType][ColumnId]>;
18
81
  export declare type ItemOptionsInterface = ItemEntryOptionsInterface;
19
- export interface CollectionDefinition<ItemTypeType extends ItemType = any> {
82
+ export interface CollectionDefinition<ItemTypeType extends ApiEnumItemType = any> {
20
83
  itemType: ItemTypeType;
21
84
  options: CollectionOptions;
22
85
  }
23
- export interface LinkCollectionDefinition<ItemTypeType extends ItemType = any> extends CollectionDefinition<ItemTypeType> {
86
+ export interface LinkCollectionDefinition<ItemTypeType extends ApiEnumItemType = any> extends CollectionDefinition<ItemTypeType> {
24
87
  linkField: string;
25
88
  }
26
89
  export declare enum StateKeyType {
@@ -30,7 +93,7 @@ export declare enum StateKeyType {
30
93
  export declare type StateKey = {
31
94
  type: StateKeyType;
32
95
  template?: string;
33
- itemId?: number;
96
+ itemId?: ItemId;
34
97
  };
35
98
  export declare type SocketMessageType = 'event' | 'notification';
36
99
  export interface SocketMessage {
@@ -53,14 +116,19 @@ export interface SocketMessage {
53
116
  sent: string;
54
117
  forceEvaluate: boolean;
55
118
  };
56
- body: any;
119
+ body: {
120
+ itemType: ApiEnumItemType;
121
+ eventType: string;
122
+ } & {
123
+ [key: string]: any;
124
+ };
57
125
  messageType: SocketMessageType;
58
126
  }
59
127
  export interface SocketMessageCreate extends SocketMessage {
60
128
  body: {
61
129
  eventType: 'create';
62
130
  columns: ResponseColumnItemTypeMap;
63
- itemType: ItemType;
131
+ itemType: ApiEnumItemType;
64
132
  items: {
65
133
  [itemType: string]: {
66
134
  [itemId: number]: {
@@ -75,7 +143,7 @@ export interface SocketMessageUpdate extends SocketMessage {
75
143
  body: {
76
144
  eventType: 'update';
77
145
  columns: ResponseColumnItemTypeMap;
78
- itemType: ItemType;
146
+ itemType: ApiEnumItemType;
79
147
  items: {
80
148
  [itemType: string]: {
81
149
  [itemId: number]: {
@@ -90,7 +158,7 @@ export interface SocketMessageLinkTo extends SocketMessage {
90
158
  body: {
91
159
  eventType: 'linkto';
92
160
  columns: ResponseColumnItemTypeMap;
93
- itemType: ItemType;
161
+ itemType: ApiEnumItemType;
94
162
  items: {
95
163
  [itemType: string]: {
96
164
  [itemId: number]: {
@@ -104,13 +172,15 @@ export interface SocketMessageLinkTo extends SocketMessage {
104
172
  export interface SocketMessageDelete extends SocketMessage {
105
173
  body: {
106
174
  eventType: 'delete';
107
- itemType: ItemType;
175
+ itemType: ApiEnumItemType;
108
176
  items: ItemId[];
109
177
  };
110
178
  }
111
179
  export interface FunctionChangesResolveSocketMessage extends SocketMessage {
112
180
  body: {
113
- itemType: 'FunctionChangesResolve';
181
+ itemType: ApiEnumItemType.FunctionChangesResolve;
182
+ eventType: 'update';
183
+ } & {
114
184
  [key: string]: any;
115
185
  };
116
186
  }
@@ -120,15 +190,13 @@ export declare type ItemResourceItemIdMap<T extends ItemResource = ItemResource>
120
190
  export declare type ItemResourcesItemTypeMap<T extends ItemResource = ItemResource> = {
121
191
  [itemType: string]: T[];
122
192
  };
123
- export declare type ItemId = number;
124
- export declare type ItemType = string;
125
193
  export declare type ItemMap<T> = {
126
194
  [itemType: string]: {
127
195
  [itemId: string]: T;
128
196
  };
129
197
  };
130
- export declare type ItemEntryMap<ItemTypeType extends ItemType> = ItemMap<ItemEntry<ItemTypeType>>;
131
- export declare type ItemEntryParentIdMap<ItemTypeType extends ItemType> = ParentIdMap<Array<ItemEntry<ItemTypeType>>>;
198
+ export declare type ItemEntryMap<ItemTypeType extends ApiEnumItemType = any> = ItemMap<ItemEntry<ItemTypeType>>;
199
+ export declare type ItemEntryParentIdMap<ItemTypeType extends ApiEnumItemType> = ParentIdMap<Array<ItemEntry<ItemTypeType>>>;
132
200
  export declare type ConversionMap = {
133
201
  [itemId: number]: number;
134
202
  };
@@ -140,24 +208,23 @@ export declare type ItemError = {
140
208
  message: string;
141
209
  };
142
210
  export declare type CollectionQuery = {
143
- object: object;
211
+ object: BackendApiQuery;
144
212
  string: string;
145
213
  };
146
- export declare type CollectionResourceParentIdMap<ItemTypeType extends ItemType = any> = ParentIdMap<CollectionResource<ItemTypeType>>;
147
- export declare type ResponseColumn = any;
148
- export declare type ResponseColumnMap = {
149
- [columnId: string]: ResponseColumn;
214
+ export declare type CollectionResourceParentIdMap<ItemTypeType extends ApiEnumItemType = any> = ParentIdMap<CollectionResource<ItemTypeType>>;
215
+ export declare type ResponseColumnMap<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = any> = {
216
+ [ColumnId in ColumnIds[number]]: GetColumnType<ItemTypeType, ColumnId>;
150
217
  };
151
218
  export declare type ResponseColumnItemTypeMap = {
152
219
  [itemType: string]: ResponseColumnMap;
153
220
  };
154
- export declare type ColumnExpansionResult<ItemTypeType extends ItemType = any> = {
221
+ export declare type ColumnExpansionResult<ItemTypeType extends ApiEnumItemType = any> = {
155
222
  merged: ColumnSet<ItemTypeType>;
156
223
  difference: ColumnSet<ItemTypeType>;
157
224
  };
158
- export declare type RootColumnMap = {
159
- [columnId: string]: {
160
- apiColumn: ResponseColumn;
225
+ export declare type RootColumnMap<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = any> = {
226
+ [ColumnId in ColumnIds[number]]: {
227
+ apiColumn: GetColumnType<ItemTypeType, ColumnId>;
161
228
  children: RootColumnMap;
162
229
  };
163
230
  };
@@ -169,7 +236,6 @@ export declare type TemplateItemResourceMap<T extends ItemResource<any>> = {
169
236
  export declare type ItemTypeMap<T = any> = {
170
237
  [itemType: string]: T;
171
238
  };
172
- export declare type ApiQuery = any;
173
239
  export declare type ApiRequestItemValues = {
174
240
  values?: any;
175
241
  links?: {
@@ -196,11 +262,11 @@ export declare type ApiRequestLimit = {
196
262
  export declare type ApiRequestMoveItems = {
197
263
  [itemType: string]: ItemId[];
198
264
  };
199
- export declare type CreateRequestEntry<ItemTypeType extends ItemType> = {
265
+ export declare type CreateRequestEntry<ItemTypeType extends ApiEnumItemType> = {
200
266
  request: {
201
267
  requestType: 'create';
202
268
  itemType?: ItemTypeType;
203
- parentType?: ItemType;
269
+ parentType?: ApiEnumItemType;
204
270
  parentId?: {
205
271
  [itemId: string]: ItemId;
206
272
  };
@@ -214,12 +280,14 @@ export declare enum ApiLinkTreeType {
214
280
  ITEMTABLE = "itemtable",
215
281
  DIRECT = "direct"
216
282
  }
217
- export declare type ApiLinkTreeEntry = {
283
+ export declare type ApiLinkTreeEntryItemTable = {
218
284
  type: ApiLinkTreeType.ITEMTABLE;
219
- } | {
285
+ };
286
+ export declare type ApiLinkTreeEntryDirect = {
220
287
  type: ApiLinkTreeType.DIRECT;
221
288
  field: string;
222
289
  };
290
+ export declare type ApiLinkTreeEntry = ApiLinkTreeEntryItemTable | ApiLinkTreeEntryDirect;
223
291
  export declare type ApiLinkTree = {
224
292
  [itemType: string]: {
225
293
  [childType: string]: ApiLinkTreeEntry;
@@ -229,34 +297,49 @@ export declare type ApiLinkTree = {
229
297
  * @description
230
298
  * Callback to determine if an item should be included in the create delta, return `false` to exclude the item
231
299
  */
232
- export declare type FilterItemEntryCallback = <ItemTypeType extends ItemType, Fields extends ColumnIdTypeMap = any>(itemType: ItemTypeType, fields: FieldMap<ItemTypeType, Fields>) => boolean;
233
- export declare type ModifyFieldsCallback = <ItemTypeType extends ItemType, Fields extends ColumnIdTypeMap = any>(itemType: ItemTypeType, fields: FieldMap<ItemTypeType, Fields>, itemIdConversionMap?: ItemIdConversionMap) => void;
300
+ export declare type FilterItemEntryCallback<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = (itemType: ItemTypeType, fields: FieldMap<ItemTypeType, ColumnIds>) => boolean;
301
+ export declare type ModifyFieldsCallback<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = (itemType: ItemTypeType, fields: FieldMap<ItemTypeType, ColumnIds>, itemIdConversionMap?: ItemIdConversionMap) => void;
234
302
  /**
235
303
  * @description
236
304
  * Returns 'false' if the field changed
237
305
  */
238
- export declare type CompareFieldCallback<Fields extends ColumnIdTypeMap, T extends keyof Fields = string> = (field: T) => boolean;
239
- export declare type FieldChangeCallbackArgs<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = {
306
+ export declare type CompareFieldCallback<Fields extends FieldMap, T extends keyof Fields = string> = (field: T) => boolean;
307
+ export declare type FieldChangeCallbackArgs<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = {
240
308
  itemEntry: ItemEntry<ItemTypeType>;
241
- compareField: CompareFieldCallback<Fields>;
242
- fields: FieldMap<ItemTypeType, Fields>;
309
+ compareField: CompareFieldCallback<ColumnIds>;
310
+ fields: FieldMap<ItemTypeType, ColumnIds>;
243
311
  isCalledAfterSocketUpdate: boolean;
244
- previous: FieldMap<ItemTypeType, Fields>;
312
+ previous: FieldMap<ItemTypeType, ColumnIds>;
245
313
  };
246
- export declare type FieldChangeCallback<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = (args: FieldChangeCallbackArgs<ItemTypeType, Fields>) => void;
314
+ export declare type FieldChangeCallback<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = (args: FieldChangeCallbackArgs<ItemTypeType, ColumnIds>) => void;
247
315
  export declare type DeregFunction = () => void;
248
- export declare type OnChangeCallbackArgs<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = FieldChangeCallbackArgs<ItemTypeType, Fields>;
249
- export declare type OnChangeCallback<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = FieldChangeCallback<ItemTypeType, Fields>;
250
- export declare type OnAddCallbackArgs<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = {
251
- itemResources: Array<ItemResource<ItemTypeType, Fields>>;
252
- collectionResource: CollectionResource<ItemTypeType, Fields>;
316
+ export declare type OnChangeCallbackArgs<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = FieldChangeCallbackArgs<ItemTypeType, ColumnIds>;
317
+ export declare type OnChangeCallback<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = FieldChangeCallback<ItemTypeType, ColumnIds>;
318
+ export declare type OnAddCallbackArgs<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = {
319
+ itemResources: Array<ItemResource<ItemTypeType, ColumnIds>>;
320
+ collectionResource: CollectionResource<ItemTypeType, ColumnIds>;
253
321
  isInitialCall: boolean;
254
322
  isCalledAfterSocketUpdate: boolean;
255
323
  };
256
- export declare type OnAddCallback<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = (args: OnAddCallbackArgs<ItemTypeType, Fields>) => void;
257
- export declare type OnRemoveCallbackArgs<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = {
258
- itemResources: Array<ItemResource<ItemTypeType, Fields>>;
259
- collectionResource: CollectionResource<ItemTypeType, Fields>;
324
+ export declare type OnAddCallback<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = (args: OnAddCallbackArgs<ItemTypeType, ColumnIds>) => void;
325
+ export declare type OnRemoveCallbackArgs<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = {
326
+ itemResources: Array<ItemResource<ItemTypeType, ColumnIds>>;
327
+ collectionResource: CollectionResource<ItemTypeType, ColumnIds>;
260
328
  isCalledAfterSocketUpdate: boolean;
261
329
  };
262
- export declare type OnRemoveCallback<ItemTypeType extends ItemType = any, Fields extends ColumnIdTypeMap = any> = (args: OnRemoveCallbackArgs<ItemTypeType, Fields>) => void;
330
+ export declare type OnRemoveCallback<ItemTypeType extends ApiEnumItemType = any, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>> = (args: OnRemoveCallbackArgs<ItemTypeType, ColumnIds>) => void;
331
+ /************************************/
332
+ export declare type ApiQueryConditionComparatorShort<ItemTypeType extends ApiEnumItemType = any, ColumnId extends keyof ApiFields[ItemTypeType] = any> = BackendApiQueryConditionComparatorShort<ItemTypeType, ColumnId> & {
333
+ [_T in ColumnId]: 'NOW' | ApiEnumApiTypeTsTypeMapping[ExtractApiType<ApiFields[ItemTypeType][ColumnId]>];
334
+ };
335
+ export interface ApiQueryConditionComparator<ItemTypeType extends ApiEnumItemType = any, ColumnId extends keyof ApiFields[ItemTypeType] = keyof ApiFields[ItemTypeType]> extends BackendTypesApiQueryConditionComparator {
336
+ value: 'NOW' | ApiEnumApiTypeTsTypeMapping[ExtractApiType<ApiFields[ItemTypeType][ColumnId]>];
337
+ }
338
+ declare type ApiQueryCondition<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]> = ApiQueryConditionComparatorShort<ItemTypeType, ColumnId> | ApiQueryConditionComparator<ItemTypeType, ColumnId> | ApiQueryConditionIn<ItemTypeType, ColumnId> | ApiQueryConditionInShort<ItemTypeType, ColumnId> | ApiQueryConditionLinkedTo | ApiQueryConditionSubQuery<ItemTypeType> | ApiQueryConditionSearch | ApiQueryConditionCustom;
339
+ export declare type ApiQueryWithConditions<ItemTypeType extends ApiEnumItemType = any> = {
340
+ operator?: 'and' | 'AND' | 'or' | 'OR';
341
+ conditions: Array<ApiQuery<ItemTypeType>>;
342
+ not?: boolean;
343
+ };
344
+ export declare type ApiQuery<ItemTypeType extends ApiEnumItemType = any, ColumnId extends keyof ApiFields[ItemTypeType] = any> = ApiQueryWithConditions<ItemTypeType> | ApiQueryCondition<ItemTypeType, ColumnId>;
345
+ export {};
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "@rentman/rm-core",
3
- "version": "7.1.1",
3
+ "version": "8.0.0",
4
4
  "description": "Rentman core functionalities",
5
5
  "main": "./dist/rm-core.js",
6
6
  "types": "./dist/types/index.d.ts",
7
- "dependencies": {},
7
+ "dependencies": {
8
+ "@rentman/backend-types": "0.0.7"
9
+ },
8
10
  "repository": {
9
11
  "type": "git",
10
12
  "url": "https://github.com/rentmanpublic/frontend-core"
@@ -15,7 +17,7 @@
15
17
  "clean-webpack-plugin": "^0.1.19",
16
18
  "ts-loader": "^6.2.1",
17
19
  "tslint": "5.19.0",
18
- "typescript": "^3.7.2",
20
+ "typescript": "^3.9.2",
19
21
  "typescript-tslint-plugin": "^0.5.5",
20
22
  "uglifyjs-webpack-plugin": "^1.2.5",
21
23
  "webpack": "4.41.2",