venue-js 1.0.0-next.1 → 1.0.0-next.2
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/index.d.mts +33 -24
- package/dist/index.d.ts +33 -24
- package/dist/index.js +26 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +26 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -3
package/dist/index.mjs
CHANGED
|
@@ -360,6 +360,26 @@ var createPopulator = ({
|
|
|
360
360
|
};
|
|
361
361
|
};
|
|
362
362
|
|
|
363
|
+
// src/data/utils/match-filters.ts
|
|
364
|
+
function isInFilter(filter) {
|
|
365
|
+
return typeof filter === "object" && filter !== null && "$in" in filter && Array.isArray(filter.$in);
|
|
366
|
+
}
|
|
367
|
+
var someIntersect = (a, b) => a.some((v) => b.includes(v));
|
|
368
|
+
function matchFilter(value, filter) {
|
|
369
|
+
if (Array.isArray(value)) {
|
|
370
|
+
if (isInFilter(filter)) return someIntersect(value, filter.$in);
|
|
371
|
+
return value.includes(filter);
|
|
372
|
+
} else {
|
|
373
|
+
if (isInFilter(filter)) return filter.$in.includes(value);
|
|
374
|
+
return value === filter;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
function matchFilters(item, filters) {
|
|
378
|
+
return Object.entries(filters).every(([key, filter]) => {
|
|
379
|
+
return matchFilter(item.properties[key], filter);
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
|
|
363
383
|
// src/data/getDataClient.ts
|
|
364
384
|
var getDataClient = (options) => {
|
|
365
385
|
const observers = /* @__PURE__ */ new Map();
|
|
@@ -435,7 +455,12 @@ var getDataClient = (options) => {
|
|
|
435
455
|
queryKey: [featureType, "list", params],
|
|
436
456
|
queryFn: async () => {
|
|
437
457
|
const features = await internalFilterByType(featureType);
|
|
438
|
-
|
|
458
|
+
const filters = params.filters ?? {};
|
|
459
|
+
let result = features;
|
|
460
|
+
if (params.filters) {
|
|
461
|
+
result = features.filter((f) => matchFilters(f, filters));
|
|
462
|
+
}
|
|
463
|
+
return params.populate === true ? await Promise.all(result.map((f) => populator[featureType](f))) : result;
|
|
439
464
|
},
|
|
440
465
|
...options2 ?? {}
|
|
441
466
|
});
|