@ngutil/data 0.0.91 → 0.0.93
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/fesm2022/ngutil-data.mjs +148 -88
- package/fesm2022/ngutil-data.mjs.map +1 -1
- package/package.json +3 -3
- package/provider/provider.d.ts +11 -1
- package/query/filter.d.ts +5 -3
- package/query/grouper.d.ts +1 -1
- package/query/query-property.d.ts +5 -1
- package/query/query.d.ts +2 -1
- package/source/proxy.directive.d.ts +1 -1
- package/source/source.d.ts +2 -2
package/fesm2022/ngutil-data.mjs
CHANGED
|
@@ -58,6 +58,10 @@ function normalize(obj, normalizer) {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
class QueryProperty extends BehaviorSubject {
|
|
61
|
+
constructor(provider) {
|
|
62
|
+
super(undefined);
|
|
63
|
+
this.provider = provider;
|
|
64
|
+
}
|
|
61
65
|
set(value) {
|
|
62
66
|
this.#nextClone(value != null ? this.norm(value) : undefined);
|
|
63
67
|
}
|
|
@@ -93,8 +97,9 @@ class QueryProperty extends BehaviorSubject {
|
|
|
93
97
|
}
|
|
94
98
|
class QueryPropertySet extends Observable {
|
|
95
99
|
#combined;
|
|
96
|
-
constructor(...names) {
|
|
100
|
+
constructor(provider, ...names) {
|
|
97
101
|
super(dest => this.#combined.subscribe(dest));
|
|
102
|
+
this.provider = provider;
|
|
98
103
|
const observables = [];
|
|
99
104
|
const props = {};
|
|
100
105
|
for (const name of names) {
|
|
@@ -109,31 +114,60 @@ class QueryPropertySet extends Observable {
|
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
|
|
117
|
+
var FilterOp;
|
|
118
|
+
(function (FilterOp) {
|
|
119
|
+
FilterOp["Eq"] = "==";
|
|
120
|
+
FilterOp["EqStrict"] = "===";
|
|
121
|
+
FilterOp["EqInsesitive"] = "==*";
|
|
122
|
+
FilterOp["Neq"] = "!=";
|
|
123
|
+
FilterOp["NeqStrict"] = "!==";
|
|
124
|
+
FilterOp["NeqInsesitive"] = "!=*";
|
|
125
|
+
FilterOp["Gt"] = ">";
|
|
126
|
+
FilterOp["GtInsesitive"] = ">*";
|
|
127
|
+
FilterOp["Gte"] = ">=";
|
|
128
|
+
FilterOp["GteInsesitive"] = ">=*";
|
|
129
|
+
FilterOp["Lt"] = "<";
|
|
130
|
+
FilterOp["LtInsesitive"] = "<*";
|
|
131
|
+
FilterOp["Lte"] = "<=";
|
|
132
|
+
FilterOp["LteInsesitive"] = "<=*";
|
|
133
|
+
FilterOp["Contains"] = "%";
|
|
134
|
+
FilterOp["ContainsInsesitive"] = "%*";
|
|
135
|
+
FilterOp["StartsWith"] = "^";
|
|
136
|
+
FilterOp["StartsWithInsesitive"] = "^*";
|
|
137
|
+
FilterOp["EndsWith"] = "$";
|
|
138
|
+
FilterOp["EndsWithInsesitive"] = "$*";
|
|
139
|
+
FilterOp["Similarity"] = "**";
|
|
140
|
+
FilterOp["Regexp"] = "~";
|
|
141
|
+
FilterOp["RegexpInsesitive"] = "~*";
|
|
142
|
+
FilterOp["Or"] = "|";
|
|
143
|
+
FilterOp["And"] = "&";
|
|
144
|
+
})(FilterOp || (FilterOp = {}));
|
|
112
145
|
const OPERATORS = [
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
146
|
+
FilterOp.Eq,
|
|
147
|
+
FilterOp.EqStrict,
|
|
148
|
+
FilterOp.EqInsesitive,
|
|
149
|
+
FilterOp.Neq,
|
|
150
|
+
FilterOp.NeqStrict,
|
|
151
|
+
FilterOp.NeqInsesitive,
|
|
152
|
+
FilterOp.Gt,
|
|
153
|
+
FilterOp.GtInsesitive,
|
|
154
|
+
FilterOp.Gte,
|
|
155
|
+
FilterOp.GteInsesitive,
|
|
156
|
+
FilterOp.Lt,
|
|
157
|
+
FilterOp.LtInsesitive,
|
|
158
|
+
FilterOp.Lte,
|
|
159
|
+
FilterOp.LteInsesitive,
|
|
160
|
+
FilterOp.Contains,
|
|
161
|
+
FilterOp.ContainsInsesitive,
|
|
162
|
+
FilterOp.StartsWith,
|
|
163
|
+
FilterOp.StartsWithInsesitive,
|
|
164
|
+
FilterOp.EndsWith,
|
|
165
|
+
FilterOp.EndsWithInsesitive,
|
|
166
|
+
FilterOp.Similarity,
|
|
167
|
+
FilterOp.Regexp,
|
|
168
|
+
FilterOp.RegexpInsesitive,
|
|
169
|
+
FilterOp.Or,
|
|
170
|
+
FilterOp.And
|
|
137
171
|
];
|
|
138
172
|
function asOperators(value) {
|
|
139
173
|
const ops = intersection(Object.keys(value), OPERATORS);
|
|
@@ -143,7 +177,7 @@ function asOperators(value) {
|
|
|
143
177
|
});
|
|
144
178
|
}
|
|
145
179
|
else {
|
|
146
|
-
return [{ op:
|
|
180
|
+
return [{ op: FilterOp.Eq, value }];
|
|
147
181
|
}
|
|
148
182
|
}
|
|
149
183
|
/**
|
|
@@ -167,7 +201,7 @@ function filterNormalize(filters) {
|
|
|
167
201
|
}
|
|
168
202
|
function _normalizeFilter(filters, parent) {
|
|
169
203
|
if ("op" in filters && "value" in filters) {
|
|
170
|
-
if (filters["op"] ===
|
|
204
|
+
if (filters["op"] === FilterOp.Or || filters["op"] === FilterOp.And) {
|
|
171
205
|
return { op: filters["op"], value: filters["value"].map((v) => _normalizeFilter(v, parent)) };
|
|
172
206
|
}
|
|
173
207
|
if ("path" in filters) {
|
|
@@ -176,16 +210,16 @@ function _normalizeFilter(filters, parent) {
|
|
|
176
210
|
}
|
|
177
211
|
const norm = flattenDeep(Object.entries(filters).map(([path, value]) => {
|
|
178
212
|
switch (path) {
|
|
179
|
-
case
|
|
213
|
+
case FilterOp.And:
|
|
180
214
|
if (!Array.isArray(value)) {
|
|
181
|
-
throw new Error(`Operator AND (${
|
|
215
|
+
throw new Error(`Operator AND (${FilterOp.And}) must have array type`);
|
|
182
216
|
}
|
|
183
|
-
return { op:
|
|
184
|
-
case
|
|
217
|
+
return { op: FilterOp.And, value: value.map(v => _normalizeFilter(v, parent)) };
|
|
218
|
+
case FilterOp.Or:
|
|
185
219
|
if (!Array.isArray(value)) {
|
|
186
|
-
throw new Error(`Operator OR (${
|
|
220
|
+
throw new Error(`Operator OR (${FilterOp.Or}) must have array type`);
|
|
187
221
|
}
|
|
188
|
-
return { op:
|
|
222
|
+
return { op: FilterOp.Or, value: value.map(v => _normalizeFilter(v, parent)) };
|
|
189
223
|
// TODO: check all filter, and if not found filter key, taht object maybne not a filter
|
|
190
224
|
default:
|
|
191
225
|
if (isPlainObject(value)) {
|
|
@@ -195,7 +229,7 @@ function _normalizeFilter(filters, parent) {
|
|
|
195
229
|
return { path: parent, op: path, value };
|
|
196
230
|
}
|
|
197
231
|
else {
|
|
198
|
-
return { path, op:
|
|
232
|
+
return { path, op: FilterOp.EqStrict, value };
|
|
199
233
|
}
|
|
200
234
|
}
|
|
201
235
|
}));
|
|
@@ -206,7 +240,7 @@ function _normalizeFilter(filters, parent) {
|
|
|
206
240
|
return norm[0];
|
|
207
241
|
}
|
|
208
242
|
else {
|
|
209
|
-
return { op:
|
|
243
|
+
return { op: FilterOp.And, value: norm };
|
|
210
244
|
}
|
|
211
245
|
}
|
|
212
246
|
function _filterCompile(filters) {
|
|
@@ -222,9 +256,9 @@ function _filterCompile(filters) {
|
|
|
222
256
|
}
|
|
223
257
|
function _filterCompileNorm(filter, getPath) {
|
|
224
258
|
switch (filter.op) {
|
|
225
|
-
case
|
|
259
|
+
case FilterOp.And:
|
|
226
260
|
return and_(filter.value.map(v => _filterCompileNorm(v, getPath)));
|
|
227
|
-
case
|
|
261
|
+
case FilterOp.Or:
|
|
228
262
|
return or_(filter.value.map(v => _filterCompileNorm(v, getPath)));
|
|
229
263
|
default:
|
|
230
264
|
return _filterComplileNormPath(getPath(filter.path), filter.op, filter.value, getPath);
|
|
@@ -234,68 +268,70 @@ function _filterComplileNormPath(getter, op, value, getPath) {
|
|
|
234
268
|
let lower;
|
|
235
269
|
let regex;
|
|
236
270
|
switch (op) {
|
|
237
|
-
case
|
|
271
|
+
case FilterOp.And:
|
|
238
272
|
return and_(value.map(v => _filterCompileNorm(v, getPath)));
|
|
239
|
-
case
|
|
273
|
+
case FilterOp.Or:
|
|
240
274
|
return or_(value.map(v => _filterCompileNorm(v, getPath)));
|
|
241
|
-
case
|
|
275
|
+
case FilterOp.Eq:
|
|
242
276
|
// eslint-disable-next-line eqeqeq
|
|
243
277
|
return matcher(getter, v => v == value);
|
|
244
|
-
case
|
|
278
|
+
case FilterOp.EqStrict:
|
|
245
279
|
return matcher(getter, v => v === value);
|
|
246
|
-
case
|
|
280
|
+
case FilterOp.EqInsesitive:
|
|
247
281
|
lower = String(value).toLocaleLowerCase();
|
|
248
282
|
return matcher(getter, v => String(v).toLocaleLowerCase() === lower);
|
|
249
|
-
case
|
|
283
|
+
case FilterOp.Neq:
|
|
250
284
|
// eslint-disable-next-line eqeqeq
|
|
251
285
|
return matcher(getter, v => v != value);
|
|
252
|
-
case
|
|
286
|
+
case FilterOp.NeqStrict:
|
|
253
287
|
return matcher(getter, v => v !== value);
|
|
254
|
-
case
|
|
288
|
+
case FilterOp.NeqInsesitive:
|
|
255
289
|
lower = String(value).toLocaleLowerCase();
|
|
256
290
|
return matcher(getter, v => String(v).toLocaleLowerCase() !== lower);
|
|
257
|
-
case
|
|
291
|
+
case FilterOp.Gt:
|
|
258
292
|
return matcher(getter, v => v > value);
|
|
259
|
-
case
|
|
293
|
+
case FilterOp.GtInsesitive:
|
|
260
294
|
lower = String(value).toLocaleLowerCase();
|
|
261
295
|
return matcher(getter, v => String(v).toLocaleLowerCase() > lower);
|
|
262
|
-
case
|
|
296
|
+
case FilterOp.Gte:
|
|
263
297
|
return matcher(getter, v => v >= value);
|
|
264
|
-
case
|
|
298
|
+
case FilterOp.GteInsesitive:
|
|
265
299
|
lower = String(value).toLocaleLowerCase();
|
|
266
300
|
return matcher(getter, v => String(v).toLocaleLowerCase() >= lower);
|
|
267
|
-
case
|
|
301
|
+
case FilterOp.Lt:
|
|
268
302
|
return matcher(getter, v => v < value);
|
|
269
|
-
case
|
|
303
|
+
case FilterOp.LtInsesitive:
|
|
270
304
|
lower = String(value).toLocaleLowerCase();
|
|
271
305
|
return matcher(getter, v => String(v).toLocaleLowerCase() < lower);
|
|
272
|
-
case
|
|
306
|
+
case FilterOp.Lte:
|
|
273
307
|
return matcher(getter, v => v <= value);
|
|
274
|
-
case
|
|
308
|
+
case FilterOp.LteInsesitive:
|
|
275
309
|
lower = String(value).toLocaleLowerCase();
|
|
276
310
|
return matcher(getter, v => String(v).toLocaleLowerCase() <= lower);
|
|
277
|
-
case
|
|
311
|
+
case FilterOp.Contains:
|
|
278
312
|
lower = String(value);
|
|
279
313
|
return matcher(getter, v => (Array.isArray(v) ? v.includes(value) : String(v).includes(lower)));
|
|
280
|
-
case
|
|
314
|
+
case FilterOp.ContainsInsesitive:
|
|
315
|
+
case FilterOp.Similarity:
|
|
316
|
+
// TODO: proper similarity test
|
|
281
317
|
lower = String(value).toLocaleLowerCase();
|
|
282
318
|
return matcher(getter, v => String(v).toLocaleLowerCase().includes(lower));
|
|
283
|
-
case
|
|
319
|
+
case FilterOp.StartsWith:
|
|
284
320
|
lower = String(value);
|
|
285
321
|
return matcher(getter, v => String(v).startsWith(lower));
|
|
286
|
-
case
|
|
322
|
+
case FilterOp.StartsWithInsesitive:
|
|
287
323
|
lower = String(value).toLocaleLowerCase();
|
|
288
324
|
return matcher(getter, v => String(v).toLocaleLowerCase().startsWith(lower));
|
|
289
|
-
case
|
|
325
|
+
case FilterOp.EndsWith:
|
|
290
326
|
lower = String(value);
|
|
291
327
|
return matcher(getter, v => String(v).endsWith(lower));
|
|
292
|
-
case
|
|
328
|
+
case FilterOp.EndsWithInsesitive:
|
|
293
329
|
lower = String(value).toLocaleLowerCase();
|
|
294
330
|
return matcher(getter, v => String(v).toLocaleLowerCase().endsWith(lower));
|
|
295
|
-
case
|
|
331
|
+
case FilterOp.Regexp:
|
|
296
332
|
regex = value instanceof RegExp ? value : new RegExp(value, "msv");
|
|
297
333
|
return matcher(getter, v => regex.test(v));
|
|
298
|
-
case
|
|
334
|
+
case FilterOp.RegexpInsesitive:
|
|
299
335
|
regex = value instanceof RegExp ? value : new RegExp(value, "msvi");
|
|
300
336
|
return matcher(getter, v => regex.test(v));
|
|
301
337
|
}
|
|
@@ -340,29 +376,29 @@ function filterMerge(...filters) {
|
|
|
340
376
|
const value = filters
|
|
341
377
|
.filter(v => v && ((Array.isArray(v) && v.length > 0) || (isPlainObject(v) && Object.keys(v).length > 0)))
|
|
342
378
|
.map(filter => deepClone(filter));
|
|
343
|
-
return compact({ op:
|
|
379
|
+
return compact({ op: FilterOp.And, value });
|
|
344
380
|
}
|
|
345
381
|
class FilterProperty extends QueryProperty {
|
|
346
382
|
merge(a, b) {
|
|
347
|
-
return filterMerge(a, b);
|
|
383
|
+
return this.provider.filterMerge(a, b);
|
|
348
384
|
}
|
|
349
385
|
norm(a) {
|
|
350
|
-
return filterNormalize(a);
|
|
386
|
+
return this.provider.filterNormalize(a);
|
|
351
387
|
}
|
|
352
388
|
}
|
|
353
389
|
class FilterPropertySet extends QueryPropertySet {
|
|
354
390
|
newProperty() {
|
|
355
|
-
return new FilterProperty(
|
|
391
|
+
return new FilterProperty(this.provider);
|
|
356
392
|
}
|
|
357
393
|
merge(...args) {
|
|
358
|
-
return filterMerge(...args);
|
|
394
|
+
return this.provider.filterMerge(...args);
|
|
359
395
|
}
|
|
360
396
|
}
|
|
361
397
|
function filterSimplify(filters) {
|
|
362
398
|
if (isTruthy(filters)) {
|
|
363
399
|
filters = compact(filterNormalize(filters));
|
|
364
400
|
const result = {};
|
|
365
|
-
if (filters["op"] ===
|
|
401
|
+
if (filters["op"] === FilterOp.And) {
|
|
366
402
|
filters = filters["value"];
|
|
367
403
|
if (filters == null) {
|
|
368
404
|
return result;
|
|
@@ -373,7 +409,7 @@ function filterSimplify(filters) {
|
|
|
373
409
|
}
|
|
374
410
|
for (const f of filters) {
|
|
375
411
|
if (f["value"] != null &&
|
|
376
|
-
(f["op"] ===
|
|
412
|
+
(f["op"] === FilterOp.Eq || f["op"] === FilterOp.EqStrict || f["op"] === FilterOp.EqInsesitive)) {
|
|
377
413
|
result[f["path"]] = f["value"];
|
|
378
414
|
}
|
|
379
415
|
}
|
|
@@ -384,7 +420,7 @@ function filterSimplify(filters) {
|
|
|
384
420
|
}
|
|
385
421
|
}
|
|
386
422
|
function compact(filters) {
|
|
387
|
-
if (filters.op ===
|
|
423
|
+
if (filters.op === FilterOp.And || filters.op === FilterOp.Or) {
|
|
388
424
|
if (isFalsy(filters.value)) {
|
|
389
425
|
return null;
|
|
390
426
|
}
|
|
@@ -487,18 +523,18 @@ function grouperNormalize(grouper) { }
|
|
|
487
523
|
// }
|
|
488
524
|
class GrouperProperty extends QueryProperty {
|
|
489
525
|
norm(a) {
|
|
490
|
-
return grouperNormalize;
|
|
526
|
+
return this.provider.grouperNormalize(a);
|
|
491
527
|
}
|
|
492
528
|
merge(a, b) {
|
|
493
|
-
return grouperMerge(a, b);
|
|
529
|
+
return this.provider.grouperMerge(a, b);
|
|
494
530
|
}
|
|
495
531
|
}
|
|
496
532
|
class GrouperPropertySet extends QueryPropertySet {
|
|
497
533
|
newProperty() {
|
|
498
|
-
return new GrouperProperty(
|
|
534
|
+
return new GrouperProperty(this.provider);
|
|
499
535
|
}
|
|
500
536
|
merge(...args) {
|
|
501
|
-
return grouperMerge(...args);
|
|
537
|
+
return this.provider.grouperMerge(...args);
|
|
502
538
|
}
|
|
503
539
|
}
|
|
504
540
|
|
|
@@ -694,10 +730,10 @@ function sorterMerge(...sorters) {
|
|
|
694
730
|
}
|
|
695
731
|
class SorterProperty extends QueryProperty {
|
|
696
732
|
norm(a) {
|
|
697
|
-
return sorterNormalize(a);
|
|
733
|
+
return this.provider.sorterNormalize(a);
|
|
698
734
|
}
|
|
699
735
|
merge(a, b) {
|
|
700
|
-
return sorterMerge(a, b);
|
|
736
|
+
return this.provider.sorterMerge(a, b);
|
|
701
737
|
}
|
|
702
738
|
}
|
|
703
739
|
class SorterPropertySet extends QueryPropertySet {
|
|
@@ -711,10 +747,10 @@ class SorterPropertySet extends QueryPropertySet {
|
|
|
711
747
|
return this.of(name).pipe(map(v => (v != null ? !v.isAsc : undefined)));
|
|
712
748
|
}
|
|
713
749
|
newProperty() {
|
|
714
|
-
return new SorterProperty(
|
|
750
|
+
return new SorterProperty(this.provider);
|
|
715
751
|
}
|
|
716
752
|
merge(...args) {
|
|
717
|
-
return sorterMerge(...args);
|
|
753
|
+
return this.provider.sorterMerge(...args);
|
|
718
754
|
}
|
|
719
755
|
}
|
|
720
756
|
|
|
@@ -726,18 +762,18 @@ function slimerCompile(slimer) {
|
|
|
726
762
|
function slimerMerge(...slimers) { }
|
|
727
763
|
class SlimerProperty extends QueryProperty {
|
|
728
764
|
norm(a) {
|
|
729
|
-
return slimerNormalize(a);
|
|
765
|
+
return this.provider.slimerNormalize(a);
|
|
730
766
|
}
|
|
731
767
|
merge(a, b) {
|
|
732
|
-
return slimerMerge(a, b);
|
|
768
|
+
return this.provider.slimerMerge(a, b);
|
|
733
769
|
}
|
|
734
770
|
}
|
|
735
771
|
class SlimerPropertySet extends QueryPropertySet {
|
|
736
772
|
newProperty() {
|
|
737
|
-
return new SlimerProperty(
|
|
773
|
+
return new SlimerProperty(this.provider);
|
|
738
774
|
}
|
|
739
775
|
merge(...args) {
|
|
740
|
-
return slimerMerge(...args);
|
|
776
|
+
return this.provider.slimerMerge(...args);
|
|
741
777
|
}
|
|
742
778
|
}
|
|
743
779
|
|
|
@@ -804,11 +840,11 @@ function sliceEq(a, b) {
|
|
|
804
840
|
// TODO: sliceConcat(...slices: Slice[]): Slice[]
|
|
805
841
|
// TODO: sliceDiff(slice: Slice): Slice[]
|
|
806
842
|
|
|
807
|
-
function querySubject(...names) {
|
|
808
|
-
const filter = new FilterPropertySet(...names);
|
|
809
|
-
const sorter = new SorterPropertySet(...names);
|
|
810
|
-
const slimer = new SlimerPropertySet(...names);
|
|
811
|
-
const grouper = new GrouperPropertySet(...names);
|
|
843
|
+
function querySubject(provider, ...names) {
|
|
844
|
+
const filter = new FilterPropertySet(provider, ...names);
|
|
845
|
+
const sorter = new SorterPropertySet(provider, ...names);
|
|
846
|
+
const slimer = new SlimerPropertySet(provider, ...names);
|
|
847
|
+
const grouper = new GrouperPropertySet(provider, ...names);
|
|
812
848
|
const result = combineLatest({ filter, sorter, slimer, grouper }).pipe(shareReplay(1));
|
|
813
849
|
readonlyProp(result, "filter", filter);
|
|
814
850
|
readonlyProp(result, "sorter", sorter);
|
|
@@ -974,7 +1010,7 @@ class DataSource extends DataSource$1 {
|
|
|
974
1010
|
#slice;
|
|
975
1011
|
#reload;
|
|
976
1012
|
#query;
|
|
977
|
-
constructor(provider, store = new MemoryStore(), query$ = querySubject("normal", "forced")) {
|
|
1013
|
+
constructor(provider, store = new MemoryStore(), query$ = querySubject(provider, "normal", "forced")) {
|
|
978
1014
|
super();
|
|
979
1015
|
this.provider = provider;
|
|
980
1016
|
this.store = store;
|
|
@@ -1120,6 +1156,30 @@ class DataProvider {
|
|
|
1120
1156
|
clampSlice(slice) {
|
|
1121
1157
|
return of(slice);
|
|
1122
1158
|
}
|
|
1159
|
+
filterNormalize(filter) {
|
|
1160
|
+
return filterNormalize(filter);
|
|
1161
|
+
}
|
|
1162
|
+
filterMerge(...filters) {
|
|
1163
|
+
return filterMerge(...filters);
|
|
1164
|
+
}
|
|
1165
|
+
sorterNormalize(sorter) {
|
|
1166
|
+
return sorterNormalize(sorter);
|
|
1167
|
+
}
|
|
1168
|
+
sorterMerge(...sorters) {
|
|
1169
|
+
return sorterMerge(...sorters);
|
|
1170
|
+
}
|
|
1171
|
+
grouperNormalize(grouper) {
|
|
1172
|
+
return grouperNormalize(grouper);
|
|
1173
|
+
}
|
|
1174
|
+
grouperMerge(...groupers) {
|
|
1175
|
+
return grouperMerge(...groupers);
|
|
1176
|
+
}
|
|
1177
|
+
slimerNormalize(slimer) {
|
|
1178
|
+
return slimerNormalize(slimer);
|
|
1179
|
+
}
|
|
1180
|
+
slimerMerge(...slimers) {
|
|
1181
|
+
return slimerMerge(...slimers);
|
|
1182
|
+
}
|
|
1123
1183
|
/**
|
|
1124
1184
|
* @returns New data source instance
|
|
1125
1185
|
*/
|
|
@@ -1517,5 +1577,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
1517
1577
|
* Generated bundle index. Do not edit.
|
|
1518
1578
|
*/
|
|
1519
1579
|
|
|
1520
|
-
export { ArrayProvider, CollectionStore, DataProvider, DataSource, DataSourceModule, DataSourceProxy, DataSourceProxyBusy, DataSourceProxyFilter, DataSourceProxyGrouper, DataSourceProxySlimer, DataSourceProxySorter, LocalProvider, MemoryStore, ModelMeta, ModelRefByIndex, ModelRefByKey, ModelRefNorm, ObservableProvider, UnknownMeta, filterBy, filterMerge, filterNormalize, filterSimplify, groupBy, grouperMerge, pathGetterCompile, queryExecutor, querySubject, sliceApply, sliceClamp, sliceEq, sliceInsert, sliceMerge, sliceToPages, slimBy, slimerMerge, sortBy, sorterMerge, sorterNormalize };
|
|
1580
|
+
export { ArrayProvider, CollectionStore, DataProvider, DataSource, DataSourceModule, DataSourceProxy, DataSourceProxyBusy, DataSourceProxyFilter, DataSourceProxyGrouper, DataSourceProxySlimer, DataSourceProxySorter, FilterOp, LocalProvider, MemoryStore, ModelMeta, ModelRefByIndex, ModelRefByKey, ModelRefNorm, ObservableProvider, UnknownMeta, filterBy, filterMerge, filterNormalize, filterSimplify, groupBy, grouperMerge, pathGetterCompile, queryExecutor, querySubject, sliceApply, sliceClamp, sliceEq, sliceInsert, sliceMerge, sliceToPages, slimBy, slimerMerge, sortBy, sorterMerge, sorterNormalize };
|
|
1521
1581
|
//# sourceMappingURL=ngutil-data.mjs.map
|