@servicetitan/data-query 27.5.0 → 27.7.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.
- package/dist/data-source/in-memory-data-source.d.ts +4 -1
- package/dist/data-source/in-memory-data-source.d.ts.map +1 -1
- package/dist/data-source/in-memory-data-source.js +17 -7
- package/dist/data-source/in-memory-data-source.js.map +1 -1
- package/package.json +2 -2
- package/src/data-source/in-memory-data-source.ts +17 -7
|
@@ -5,10 +5,13 @@ import { DataResult } from '../data-result.interface';
|
|
|
5
5
|
import { DataSource, IdType } from './data-source';
|
|
6
6
|
export declare class InMemoryDataSource<T, TId extends IdType = never> implements DataSource<T, TId> {
|
|
7
7
|
idSelector?: (row: T) => TId;
|
|
8
|
+
private clone;
|
|
8
9
|
private data;
|
|
9
10
|
private preprocessors;
|
|
10
11
|
private cached?;
|
|
11
|
-
constructor(data: T[], idSelector?: (row: T) => TId, preprocessors?: Preprocessors<T
|
|
12
|
+
constructor(data: T[], idSelector?: (row: T) => TId, preprocessors?: Preprocessors<T>, { cloneCustomizer }?: {
|
|
13
|
+
cloneCustomizer?: (value: any) => any;
|
|
14
|
+
});
|
|
12
15
|
getData(state: State): Promise<DataResult<T>>;
|
|
13
16
|
addData(row: T, index?: number): Promise<Awaited<T>>;
|
|
14
17
|
updateData(id: TId, changes: Partial<T>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-data-source.d.ts","sourceRoot":"","sources":["../../src/data-source/in-memory-data-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"in-memory-data-source.d.ts","sourceRoot":"","sources":["../../src/data-source/in-memory-data-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKnD,qBAAa,kBAAkB,CAAC,CAAC,EAAE,GAAG,SAAS,MAAM,GAAG,KAAK,CAAE,YAAW,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC;IACxF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC;IAE7B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,aAAa,CAAmB;IAExC,OAAO,CAAC,MAAM,CAAC,CAGb;gBAGE,IAAI,EAAE,CAAC,EAAE,EACT,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAC5B,aAAa,GAAE,aAAa,CAAC,CAAC,CAAM,EACpC,EAAE,eAAe,EAAE,GAAE;QAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;KAAO;IAUvE,OAAO,CAAC,KAAK,EAAE,KAAK;IAsBpB,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM;IAYxB,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAgBvC,UAAU,CAAC,EAAE,EAAE,GAAG;IAiBxB,0BAA0B,CAAC,MAAM,EAAE,yBAAyB;CAM/D"}
|
|
@@ -10,15 +10,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { filterBy } from '../filtering/filter-expression.factory';
|
|
11
11
|
import { process } from '../array.operators';
|
|
12
12
|
import cloneDeep from 'lodash/cloneDeep';
|
|
13
|
+
import cloneDeepWith from 'lodash/cloneDeepWith';
|
|
13
14
|
import { toJS, comparer } from 'mobx';
|
|
14
15
|
export class InMemoryDataSource {
|
|
15
|
-
constructor(data, idSelector, preprocessors = {}) {
|
|
16
|
+
constructor(data, idSelector, preprocessors = {}, { cloneCustomizer } = {}) {
|
|
16
17
|
Object.defineProperty(this, "idSelector", {
|
|
17
18
|
enumerable: true,
|
|
18
19
|
configurable: true,
|
|
19
20
|
writable: true,
|
|
20
21
|
value: void 0
|
|
21
22
|
});
|
|
23
|
+
Object.defineProperty(this, "clone", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: void 0
|
|
28
|
+
});
|
|
22
29
|
Object.defineProperty(this, "data", {
|
|
23
30
|
enumerable: true,
|
|
24
31
|
configurable: true,
|
|
@@ -37,7 +44,10 @@ export class InMemoryDataSource {
|
|
|
37
44
|
writable: true,
|
|
38
45
|
value: void 0
|
|
39
46
|
});
|
|
40
|
-
this.
|
|
47
|
+
this.clone = cloneCustomizer
|
|
48
|
+
? (value) => cloneDeepWith(value, cloneCustomizer)
|
|
49
|
+
: cloneDeep;
|
|
50
|
+
this.data = this.clone(toJS(data));
|
|
41
51
|
this.idSelector = idSelector;
|
|
42
52
|
this.preprocessors = preprocessors;
|
|
43
53
|
}
|
|
@@ -54,18 +64,18 @@ export class InMemoryDataSource {
|
|
|
54
64
|
const { total } = sortedAndFiltered;
|
|
55
65
|
return Promise.resolve({
|
|
56
66
|
total,
|
|
57
|
-
data:
|
|
67
|
+
data: this.clone(data),
|
|
58
68
|
});
|
|
59
69
|
}
|
|
60
70
|
addData(row, index) {
|
|
61
71
|
if (index !== undefined) {
|
|
62
|
-
this.data.splice(index, 0,
|
|
72
|
+
this.data.splice(index, 0, this.clone(row));
|
|
63
73
|
}
|
|
64
74
|
else {
|
|
65
|
-
this.data.push(
|
|
75
|
+
this.data.push(this.clone(row));
|
|
66
76
|
}
|
|
67
77
|
this.cached = undefined;
|
|
68
|
-
return Promise.resolve(
|
|
78
|
+
return Promise.resolve(this.clone(row));
|
|
69
79
|
}
|
|
70
80
|
updateData(id, changes) {
|
|
71
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -98,7 +108,7 @@ export class InMemoryDataSource {
|
|
|
98
108
|
const set = new Set(this.data);
|
|
99
109
|
const inFilter = filterBy(this.data, filter, this.preprocessors);
|
|
100
110
|
inFilter.forEach(dataItem => set.delete(dataItem));
|
|
101
|
-
return
|
|
111
|
+
return this.clone(Array.from(set));
|
|
102
112
|
}
|
|
103
113
|
}
|
|
104
114
|
//# sourceMappingURL=in-memory-data-source.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-data-source.js","sourceRoot":"","sources":["../../src/data-source/in-memory-data-source.ts"],"names":[],"mappings":";;;;;;;;;AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEtC,MAAM,OAAO,kBAAkB;
|
|
1
|
+
{"version":3,"file":"in-memory-data-source.js","sourceRoot":"","sources":["../../src/data-source/in-memory-data-source.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/data-query",
|
|
3
|
-
"version": "27.
|
|
3
|
+
"version": "27.7.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"cli": {
|
|
33
33
|
"webpack": false
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "27efae7a3654b22f8a7c563950522cda0b2ae078"
|
|
36
36
|
}
|
|
@@ -6,11 +6,13 @@ import { filterBy } from '../filtering/filter-expression.factory';
|
|
|
6
6
|
import { process } from '../array.operators';
|
|
7
7
|
import { DataSource, IdType } from './data-source';
|
|
8
8
|
import cloneDeep from 'lodash/cloneDeep';
|
|
9
|
+
import cloneDeepWith from 'lodash/cloneDeepWith';
|
|
9
10
|
import { toJS, comparer } from 'mobx';
|
|
10
11
|
|
|
11
12
|
export class InMemoryDataSource<T, TId extends IdType = never> implements DataSource<T, TId> {
|
|
12
13
|
idSelector?: (row: T) => TId;
|
|
13
14
|
|
|
15
|
+
private clone: <U>(value: U) => U;
|
|
14
16
|
private data: T[];
|
|
15
17
|
private preprocessors: Preprocessors<T>;
|
|
16
18
|
|
|
@@ -19,8 +21,16 @@ export class InMemoryDataSource<T, TId extends IdType = never> implements DataSo
|
|
|
19
21
|
result: DataResult<T>;
|
|
20
22
|
};
|
|
21
23
|
|
|
22
|
-
constructor(
|
|
23
|
-
|
|
24
|
+
constructor(
|
|
25
|
+
data: T[],
|
|
26
|
+
idSelector?: (row: T) => TId,
|
|
27
|
+
preprocessors: Preprocessors<T> = {},
|
|
28
|
+
{ cloneCustomizer }: { cloneCustomizer?: (value: any) => any } = {}
|
|
29
|
+
) {
|
|
30
|
+
this.clone = cloneCustomizer
|
|
31
|
+
? <U>(value: U) => cloneDeepWith(value, cloneCustomizer)
|
|
32
|
+
: cloneDeep;
|
|
33
|
+
this.data = this.clone(toJS(data));
|
|
24
34
|
this.idSelector = idSelector;
|
|
25
35
|
this.preprocessors = preprocessors;
|
|
26
36
|
}
|
|
@@ -43,20 +53,20 @@ export class InMemoryDataSource<T, TId extends IdType = never> implements DataSo
|
|
|
43
53
|
|
|
44
54
|
return Promise.resolve({
|
|
45
55
|
total,
|
|
46
|
-
data:
|
|
56
|
+
data: this.clone(data),
|
|
47
57
|
} as DataResult<T>);
|
|
48
58
|
}
|
|
49
59
|
|
|
50
60
|
addData(row: T, index?: number) {
|
|
51
61
|
if (index !== undefined) {
|
|
52
|
-
this.data.splice(index, 0,
|
|
62
|
+
this.data.splice(index, 0, this.clone(row));
|
|
53
63
|
} else {
|
|
54
|
-
this.data.push(
|
|
64
|
+
this.data.push(this.clone(row));
|
|
55
65
|
}
|
|
56
66
|
|
|
57
67
|
this.cached = undefined;
|
|
58
68
|
|
|
59
|
-
return Promise.resolve(
|
|
69
|
+
return Promise.resolve(this.clone(row));
|
|
60
70
|
}
|
|
61
71
|
|
|
62
72
|
async updateData(id: TId, changes: Partial<T>) {
|
|
@@ -96,6 +106,6 @@ export class InMemoryDataSource<T, TId extends IdType = never> implements DataSo
|
|
|
96
106
|
const set = new Set(this.data);
|
|
97
107
|
const inFilter = filterBy(this.data, filter, this.preprocessors);
|
|
98
108
|
inFilter.forEach(dataItem => set.delete(dataItem));
|
|
99
|
-
return
|
|
109
|
+
return this.clone(Array.from(set));
|
|
100
110
|
}
|
|
101
111
|
}
|