@epam/uui-db 4.5.0 → 4.5.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.
- package/bundle-stats.json +1 -1
- package/index.d.ts +1 -1
- package/index.js +1395 -1373
- package/index.js.map +1 -1
- package/package.json +4 -4
- package/readme.md +17 -17
- package/src/Db.d.ts +12 -12
- package/src/DbRef.d.ts +48 -48
- package/src/DbTable.d.ts +34 -34
- package/src/IxSet.d.ts +27 -27
- package/src/ListLoadingTracker.d.ts +18 -18
- package/src/Loader.d.ts +23 -23
- package/src/Scheduler.d.ts +18 -18
- package/src/SimpleLoadingTracker.d.ts +8 -8
- package/src/__benchmarks__/filter.d.ts +1 -1
- package/src/__benchmarks__/index.d.ts +2 -2
- package/src/__benchmarks__/pkLookup.d.ts +1 -1
- package/src/__benchmarks__/pkUpdate.d.ts +1 -1
- package/src/__benchmarks__/query.d.ts +1 -1
- package/src/__benchmarks__/sorting.d.ts +1 -1
- package/src/__benchmarks__/testData.d.ts +14 -14
- package/src/index.d.ts +8 -8
- package/src/patchHelpers.d.ts +17 -17
- package/src/reactHooks.d.ts +6 -6
- package/src/tempIds.d.ts +27 -27
- package/src/types.d.ts +116 -116
- package/src/utils.d.ts +9 -9
package/src/tempIds.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { DbTablesSet, DbPatch, DbFieldSchema, DbSaveResponse } from "./types";
|
|
2
|
-
import { Db } from "./Db";
|
|
3
|
-
import { DataQueryFilter } from '@epam/uui';
|
|
4
|
-
export declare function getTempId(): number;
|
|
5
|
-
export declare function isTempId(val: any): val is number;
|
|
6
|
-
export interface IClientIdsMap {
|
|
7
|
-
clientToServer(id: number): any;
|
|
8
|
-
serverToClient(tableName: string, id: any): number;
|
|
9
|
-
clientToServerRequest<T>(request: T): T;
|
|
10
|
-
clientToServerDataFilter(filter: DataQueryFilter<any>): DataQueryFilter<any>;
|
|
11
|
-
}
|
|
12
|
-
export declare class TempIdMap<TTables extends DbTablesSet<TTables>> implements IClientIdsMap {
|
|
13
|
-
private db;
|
|
14
|
-
private serverToClientIds;
|
|
15
|
-
private clientToServerIds;
|
|
16
|
-
constructor(db: Db<TTables>);
|
|
17
|
-
clientToServer: (id: number) => any;
|
|
18
|
-
serverToClient: (tableName: string, id: any) => number;
|
|
19
|
-
clientToServerRequest: (request: any) => any;
|
|
20
|
-
clientToServerDataFilter: (filter: DataQueryFilter<any>) => DataQueryFilter<any>;
|
|
21
|
-
private copyPatch;
|
|
22
|
-
protected mapFields(patch: DbPatch<TTables>, filter: (schema: DbFieldSchema<any, any>, name: string) => boolean, callback: (fieldName: any, fieldSchema: DbFieldSchema<any, any>, fieldValue: any, entityPatch: any, tableName: keyof TTables) => void): void;
|
|
23
|
-
protected getServerToClientMap(tableName: keyof TTables): Map<any, any>;
|
|
24
|
-
serverToClientPatch(patch: DbPatch<TTables>): DbPatch<TTables>;
|
|
25
|
-
clientToServerPatch(patch: DbPatch<TTables>): DbPatch<TTables>;
|
|
26
|
-
appendServerMapping(response: DbSaveResponse<TTables>): void;
|
|
27
|
-
}
|
|
1
|
+
import { DbTablesSet, DbPatch, DbFieldSchema, DbSaveResponse } from "./types";
|
|
2
|
+
import { Db } from "./Db";
|
|
3
|
+
import { DataQueryFilter } from '@epam/uui';
|
|
4
|
+
export declare function getTempId(): number;
|
|
5
|
+
export declare function isTempId(val: any): val is number;
|
|
6
|
+
export interface IClientIdsMap {
|
|
7
|
+
clientToServer(id: number): any;
|
|
8
|
+
serverToClient(tableName: string, id: any): number;
|
|
9
|
+
clientToServerRequest<T>(request: T): T;
|
|
10
|
+
clientToServerDataFilter(filter: DataQueryFilter<any>): DataQueryFilter<any>;
|
|
11
|
+
}
|
|
12
|
+
export declare class TempIdMap<TTables extends DbTablesSet<TTables>> implements IClientIdsMap {
|
|
13
|
+
private db;
|
|
14
|
+
private serverToClientIds;
|
|
15
|
+
private clientToServerIds;
|
|
16
|
+
constructor(db: Db<TTables>);
|
|
17
|
+
clientToServer: (id: number) => any;
|
|
18
|
+
serverToClient: (tableName: string, id: any) => number;
|
|
19
|
+
clientToServerRequest: (request: any) => any;
|
|
20
|
+
clientToServerDataFilter: (filter: DataQueryFilter<any>) => DataQueryFilter<any>;
|
|
21
|
+
private copyPatch;
|
|
22
|
+
protected mapFields(patch: DbPatch<TTables>, filter: (schema: DbFieldSchema<any, any>, name: string) => boolean, callback: (fieldName: any, fieldSchema: DbFieldSchema<any, any>, fieldValue: any, entityPatch: any, tableName: keyof TTables) => void): void;
|
|
23
|
+
protected getServerToClientMap(tableName: keyof TTables): Map<any, any>;
|
|
24
|
+
serverToClientPatch(patch: DbPatch<TTables>): DbPatch<TTables>;
|
|
25
|
+
clientToServerPatch(patch: DbPatch<TTables>): DbPatch<TTables>;
|
|
26
|
+
appendServerMapping(response: DbSaveResponse<TTables>): void;
|
|
27
|
+
}
|
|
28
28
|
//# sourceMappingURL=tempIds.d.ts.map
|
package/src/types.d.ts
CHANGED
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
import { DataQuery } from '@epam/uui';
|
|
2
|
-
import { DbTable } from "./DbTable";
|
|
3
|
-
import { IClientIdsMap } from './tempIds';
|
|
4
|
-
export declare type DbTablesSet<TTables extends DbTablesSet<TTables>> = {
|
|
5
|
-
[TEntityName in keyof TTables]: DbTable<any, any, TTables>;
|
|
6
|
-
};
|
|
7
|
-
export declare type DbTablePatch<TEntity> = Partial<TEntity>[];
|
|
8
|
-
export declare type DbTableEntityByTable<TTable, TTables extends DbTablesSet<TTables>> = TTable extends DbTable<infer TEntity, any, TTables> ? TEntity : void;
|
|
9
|
-
export declare type DbTableIdByTable<TTable, TTables extends DbTablesSet<TTables>> = TTable extends DbTable<any, infer TId, TTables> ? TId : void;
|
|
10
|
-
declare type DbTablePatchByTable<TTable, TTables extends DbTablesSet<TTables>> = DbTablePatch<DbTableEntityByTable<TTable, TTables>>;
|
|
11
|
-
export declare type DbPatch<TTables extends DbTablesSet<TTables>> = {
|
|
12
|
-
[TEntityName in keyof TTables]?: DbTablePatchByTable<TTables[TEntityName], TTables>;
|
|
13
|
-
};
|
|
14
|
-
export declare enum DbRelationType {
|
|
15
|
-
Aggregation = 0,
|
|
16
|
-
Association = 1
|
|
17
|
-
}
|
|
18
|
-
export declare type DbFieldFk<TEntity> = {
|
|
19
|
-
tableName: string | ((entity: TEntity) => string);
|
|
20
|
-
relationType: DbRelationType;
|
|
21
|
-
};
|
|
22
|
-
export interface DbFieldSchema<TField extends keyof TEntity, TEntity> {
|
|
23
|
-
fk?: DbFieldFk<TEntity>;
|
|
24
|
-
isGenerated?: boolean;
|
|
25
|
-
isClientOnly?: boolean;
|
|
26
|
-
isReadOnly?: boolean;
|
|
27
|
-
default?: TEntity[TField];
|
|
28
|
-
toServer?: (value: TEntity[TField]) => TEntity[TField];
|
|
29
|
-
toClient?: (value: TEntity[TField]) => TEntity[TField];
|
|
30
|
-
disableFlatten?: boolean;
|
|
31
|
-
}
|
|
32
|
-
export declare type DbPkFieldType = string | number | (string | number)[];
|
|
33
|
-
export declare type BeforeUpdateContext<TEntity, TId extends DbPkFieldType, TTables extends DbTablesSet<TTables>> = {
|
|
34
|
-
clientIdsMap: IClientIdsMap;
|
|
35
|
-
schema: DbEntitySchema<TEntity, TId, TTables>;
|
|
36
|
-
tables: DbTablesSet<TTables>;
|
|
37
|
-
};
|
|
38
|
-
declare type DbEntityBeforeUpdateResult<TEntity, TTables extends DbTablesSet<TTables>> = {
|
|
39
|
-
entity: TEntity;
|
|
40
|
-
dependentEntities?: DbPatch<TTables>;
|
|
41
|
-
};
|
|
42
|
-
declare type DbTableIndexDefinition<TEntity> = keyof TEntity;
|
|
43
|
-
export declare type DbEntitySchema<TEntity, TId extends DbPkFieldType, TTables extends DbTablesSet<TTables>> = {
|
|
44
|
-
tableName: keyof TTables;
|
|
45
|
-
typeName: string;
|
|
46
|
-
searchBy?: (keyof TEntity)[];
|
|
47
|
-
fields?: Partial<{
|
|
48
|
-
[TField in keyof TEntity]: DbFieldSchema<TField, TEntity>;
|
|
49
|
-
}>;
|
|
50
|
-
isClientOnly?: boolean | ((entity: Partial<TEntity>) => boolean);
|
|
51
|
-
beforeUpdate?: (entity: TEntity, context: BeforeUpdateContext<TEntity, TId, TTables>) => DbEntityBeforeUpdateResult<TEntity, TTables>;
|
|
52
|
-
primaryKey: TId extends any[] ? KeysOfType<TEntity, string | number>[] : KeysOfType<TEntity, string | number>;
|
|
53
|
-
indexes?: DbTableIndexDefinition<TEntity>[];
|
|
54
|
-
};
|
|
55
|
-
export declare type DbSchema<TTables extends DbTablesSet<TTables>> = {
|
|
56
|
-
[TTypeName in keyof TTables]: DbEntitySchema<any, any, TTables>;
|
|
57
|
-
};
|
|
58
|
-
export interface DbQuery<TEntity> extends DataQuery<TEntity> {
|
|
59
|
-
}
|
|
60
|
-
export interface IQueryable<TEntity, TId> {
|
|
61
|
-
query(q: DbQuery<TEntity>): TEntity[];
|
|
62
|
-
byId(id: TId): TEntity;
|
|
63
|
-
}
|
|
64
|
-
export interface ServerError {
|
|
65
|
-
message?: string;
|
|
66
|
-
}
|
|
67
|
-
declare type DbSaveEntityResponse<TEntity, TId> = {
|
|
68
|
-
id: TId;
|
|
69
|
-
payload: Partial<TEntity>;
|
|
70
|
-
};
|
|
71
|
-
export interface DbSaveResponse<TTables extends DbTablesSet<TTables>> {
|
|
72
|
-
submit: {
|
|
73
|
-
[EntityName in keyof TTables]?: DbSaveEntityResponse<DbTableEntityByTable<TTables[EntityName], TTables>, DbTableIdByTable<TTables[EntityName], TTables>>[];
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
export declare type DbViewFunction<TDb, TResult, TParams = void, TDependencies = void> = (db: TDb, parameters?: TParams, dependencies?: TDependencies) => TResult;
|
|
77
|
-
export interface DbViewOptions<TDb, TResult, TParams, TDependencies = void> {
|
|
78
|
-
getKey?: (parameters: TParams) => string;
|
|
79
|
-
getDependencies?: (db: TDb, parameters: TParams) => TDependencies;
|
|
80
|
-
compareDependencies?: (prev: TDependencies, next: TDependencies) => boolean;
|
|
81
|
-
compareResults?: (prev: TResult, current: TResult) => boolean;
|
|
82
|
-
traceDiff?: boolean;
|
|
83
|
-
}
|
|
84
|
-
export interface DbView<TDb, TResult, TParams = void, TDependencies = void> extends DbViewOptions<TDb, TResult, TParams, TDependencies> {
|
|
85
|
-
compute: DbViewFunction<TDb, TResult, TParams, TDependencies>;
|
|
86
|
-
}
|
|
87
|
-
export declare type KeysOfType<T, TProp> = {
|
|
88
|
-
[P in keyof T]: T[P] extends TProp ? P : never;
|
|
89
|
-
}[keyof T];
|
|
90
|
-
export interface DbSubscription<TValue, TParams> {
|
|
91
|
-
update(params: TParams): TValue;
|
|
92
|
-
currentValue: TValue;
|
|
93
|
-
currentParams: TParams;
|
|
94
|
-
onUpdate: (newValue: TValue) => void;
|
|
95
|
-
unsubscribe: () => void;
|
|
96
|
-
}
|
|
97
|
-
export declare type ViewCacheItem = {
|
|
98
|
-
dependencies: any;
|
|
99
|
-
currentValue: any;
|
|
100
|
-
computedOnDb: any;
|
|
101
|
-
};
|
|
102
|
-
export interface LoadingState<TRequest> {
|
|
103
|
-
isLoading: boolean;
|
|
104
|
-
isComplete: boolean;
|
|
105
|
-
request: TRequest;
|
|
106
|
-
missing?: TRequest;
|
|
107
|
-
}
|
|
108
|
-
export interface ILoadingTracker<TRequest, TResult> {
|
|
109
|
-
diff(request: TRequest): TRequest;
|
|
110
|
-
append(request: TRequest, result?: TResult): void;
|
|
111
|
-
count?(request: TRequest): {
|
|
112
|
-
knownCount: number;
|
|
113
|
-
exactCount: number;
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
export {};
|
|
1
|
+
import { DataQuery } from '@epam/uui';
|
|
2
|
+
import { DbTable } from "./DbTable";
|
|
3
|
+
import { IClientIdsMap } from './tempIds';
|
|
4
|
+
export declare type DbTablesSet<TTables extends DbTablesSet<TTables>> = {
|
|
5
|
+
[TEntityName in keyof TTables]: DbTable<any, any, TTables>;
|
|
6
|
+
};
|
|
7
|
+
export declare type DbTablePatch<TEntity> = Partial<TEntity>[];
|
|
8
|
+
export declare type DbTableEntityByTable<TTable, TTables extends DbTablesSet<TTables>> = TTable extends DbTable<infer TEntity, any, TTables> ? TEntity : void;
|
|
9
|
+
export declare type DbTableIdByTable<TTable, TTables extends DbTablesSet<TTables>> = TTable extends DbTable<any, infer TId, TTables> ? TId : void;
|
|
10
|
+
declare type DbTablePatchByTable<TTable, TTables extends DbTablesSet<TTables>> = DbTablePatch<DbTableEntityByTable<TTable, TTables>>;
|
|
11
|
+
export declare type DbPatch<TTables extends DbTablesSet<TTables>> = {
|
|
12
|
+
[TEntityName in keyof TTables]?: DbTablePatchByTable<TTables[TEntityName], TTables>;
|
|
13
|
+
};
|
|
14
|
+
export declare enum DbRelationType {
|
|
15
|
+
Aggregation = 0,
|
|
16
|
+
Association = 1
|
|
17
|
+
}
|
|
18
|
+
export declare type DbFieldFk<TEntity> = {
|
|
19
|
+
tableName: string | ((entity: TEntity) => string);
|
|
20
|
+
relationType: DbRelationType;
|
|
21
|
+
};
|
|
22
|
+
export interface DbFieldSchema<TField extends keyof TEntity, TEntity> {
|
|
23
|
+
fk?: DbFieldFk<TEntity>;
|
|
24
|
+
isGenerated?: boolean;
|
|
25
|
+
isClientOnly?: boolean;
|
|
26
|
+
isReadOnly?: boolean;
|
|
27
|
+
default?: TEntity[TField];
|
|
28
|
+
toServer?: (value: TEntity[TField]) => TEntity[TField];
|
|
29
|
+
toClient?: (value: TEntity[TField]) => TEntity[TField];
|
|
30
|
+
disableFlatten?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare type DbPkFieldType = string | number | (string | number)[];
|
|
33
|
+
export declare type BeforeUpdateContext<TEntity, TId extends DbPkFieldType, TTables extends DbTablesSet<TTables>> = {
|
|
34
|
+
clientIdsMap: IClientIdsMap;
|
|
35
|
+
schema: DbEntitySchema<TEntity, TId, TTables>;
|
|
36
|
+
tables: DbTablesSet<TTables>;
|
|
37
|
+
};
|
|
38
|
+
declare type DbEntityBeforeUpdateResult<TEntity, TTables extends DbTablesSet<TTables>> = {
|
|
39
|
+
entity: TEntity;
|
|
40
|
+
dependentEntities?: DbPatch<TTables>;
|
|
41
|
+
};
|
|
42
|
+
declare type DbTableIndexDefinition<TEntity> = keyof TEntity;
|
|
43
|
+
export declare type DbEntitySchema<TEntity, TId extends DbPkFieldType, TTables extends DbTablesSet<TTables>> = {
|
|
44
|
+
tableName: keyof TTables;
|
|
45
|
+
typeName: string;
|
|
46
|
+
searchBy?: (keyof TEntity)[];
|
|
47
|
+
fields?: Partial<{
|
|
48
|
+
[TField in keyof TEntity]: DbFieldSchema<TField, TEntity>;
|
|
49
|
+
}>;
|
|
50
|
+
isClientOnly?: boolean | ((entity: Partial<TEntity>) => boolean);
|
|
51
|
+
beforeUpdate?: (entity: TEntity, context: BeforeUpdateContext<TEntity, TId, TTables>) => DbEntityBeforeUpdateResult<TEntity, TTables>;
|
|
52
|
+
primaryKey: TId extends any[] ? KeysOfType<TEntity, string | number>[] : KeysOfType<TEntity, string | number>;
|
|
53
|
+
indexes?: DbTableIndexDefinition<TEntity>[];
|
|
54
|
+
};
|
|
55
|
+
export declare type DbSchema<TTables extends DbTablesSet<TTables>> = {
|
|
56
|
+
[TTypeName in keyof TTables]: DbEntitySchema<any, any, TTables>;
|
|
57
|
+
};
|
|
58
|
+
export interface DbQuery<TEntity> extends DataQuery<TEntity> {
|
|
59
|
+
}
|
|
60
|
+
export interface IQueryable<TEntity, TId> {
|
|
61
|
+
query(q: DbQuery<TEntity>): TEntity[];
|
|
62
|
+
byId(id: TId): TEntity;
|
|
63
|
+
}
|
|
64
|
+
export interface ServerError {
|
|
65
|
+
message?: string;
|
|
66
|
+
}
|
|
67
|
+
declare type DbSaveEntityResponse<TEntity, TId> = {
|
|
68
|
+
id: TId;
|
|
69
|
+
payload: Partial<TEntity>;
|
|
70
|
+
};
|
|
71
|
+
export interface DbSaveResponse<TTables extends DbTablesSet<TTables>> {
|
|
72
|
+
submit: {
|
|
73
|
+
[EntityName in keyof TTables]?: DbSaveEntityResponse<DbTableEntityByTable<TTables[EntityName], TTables>, DbTableIdByTable<TTables[EntityName], TTables>>[];
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export declare type DbViewFunction<TDb, TResult, TParams = void, TDependencies = void> = (db: TDb, parameters?: TParams, dependencies?: TDependencies) => TResult;
|
|
77
|
+
export interface DbViewOptions<TDb, TResult, TParams, TDependencies = void> {
|
|
78
|
+
getKey?: (parameters: TParams) => string;
|
|
79
|
+
getDependencies?: (db: TDb, parameters: TParams) => TDependencies;
|
|
80
|
+
compareDependencies?: (prev: TDependencies, next: TDependencies) => boolean;
|
|
81
|
+
compareResults?: (prev: TResult, current: TResult) => boolean;
|
|
82
|
+
traceDiff?: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface DbView<TDb, TResult, TParams = void, TDependencies = void> extends DbViewOptions<TDb, TResult, TParams, TDependencies> {
|
|
85
|
+
compute: DbViewFunction<TDb, TResult, TParams, TDependencies>;
|
|
86
|
+
}
|
|
87
|
+
export declare type KeysOfType<T, TProp> = {
|
|
88
|
+
[P in keyof T]: T[P] extends TProp ? P : never;
|
|
89
|
+
}[keyof T];
|
|
90
|
+
export interface DbSubscription<TValue, TParams> {
|
|
91
|
+
update(params: TParams): TValue;
|
|
92
|
+
currentValue: TValue;
|
|
93
|
+
currentParams: TParams;
|
|
94
|
+
onUpdate: (newValue: TValue) => void;
|
|
95
|
+
unsubscribe: () => void;
|
|
96
|
+
}
|
|
97
|
+
export declare type ViewCacheItem = {
|
|
98
|
+
dependencies: any;
|
|
99
|
+
currentValue: any;
|
|
100
|
+
computedOnDb: any;
|
|
101
|
+
};
|
|
102
|
+
export interface LoadingState<TRequest> {
|
|
103
|
+
isLoading: boolean;
|
|
104
|
+
isComplete: boolean;
|
|
105
|
+
request: TRequest;
|
|
106
|
+
missing?: TRequest;
|
|
107
|
+
}
|
|
108
|
+
export interface ILoadingTracker<TRequest, TResult> {
|
|
109
|
+
diff(request: TRequest): TRequest;
|
|
110
|
+
append(request: TRequest, result?: TResult): void;
|
|
111
|
+
count?(request: TRequest): {
|
|
112
|
+
knownCount: number;
|
|
113
|
+
exactCount: number;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export {};
|
|
117
117
|
//# sourceMappingURL=types.d.ts.map
|
package/src/utils.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export declare let objectKeys: <T>(obj: T) => (keyof T)[];
|
|
2
|
-
export declare function defaultCompareViewDependencies<T>(prev: T, next: T): boolean;
|
|
3
|
-
/**
|
|
4
|
-
* Deep diff between two object, using lodash
|
|
5
|
-
* @param {Object} object Object compared
|
|
6
|
-
* @param {Object} base Object to compare with
|
|
7
|
-
* @return {Object} Return a new object who represent the diff
|
|
8
|
-
*/
|
|
9
|
-
export declare function difference(object: any, base: any): any;
|
|
1
|
+
export declare let objectKeys: <T>(obj: T) => (keyof T)[];
|
|
2
|
+
export declare function defaultCompareViewDependencies<T>(prev: T, next: T): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Deep diff between two object, using lodash
|
|
5
|
+
* @param {Object} object Object compared
|
|
6
|
+
* @param {Object} base Object to compare with
|
|
7
|
+
* @return {Object} Return a new object who represent the diff
|
|
8
|
+
*/
|
|
9
|
+
export declare function difference(object: any, base: any): any;
|
|
10
10
|
//# sourceMappingURL=utils.d.ts.map
|