| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /*
- @license
- Rollup.js v3.29.4
- Sat, 21 Sep 2024 06:29:06 GMT - commit 2ef77c00ec2635d42697cff2c0567ccc8db34fb4
- https://github.com/rollup/rollup
- Released under the MIT License.
- */
- 'use strict';
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- const getLogFilter = filters => {
- if (filters.length === 0)
- return () => true;
- const normalizedFilters = filters.map(filter => filter.split('&').map(subFilter => {
- const inverted = subFilter.startsWith('!');
- if (inverted)
- subFilter = subFilter.slice(1);
- const [key, ...value] = subFilter.split(':');
- return { inverted, key: key.split('.'), parts: value.join(':').split('*') };
- }));
- return (log) => {
- nextIntersectedFilter: for (const intersectedFilters of normalizedFilters) {
- for (const { inverted, key, parts } of intersectedFilters) {
- const isFilterSatisfied = testFilter(log, key, parts);
- if (inverted ? isFilterSatisfied : !isFilterSatisfied) {
- continue nextIntersectedFilter;
- }
- }
- return true;
- }
- return false;
- };
- };
- const testFilter = (log, key, parts) => {
- let rawValue = log;
- for (let index = 0; index < key.length; index++) {
- if (!rawValue) {
- return false;
- }
- const part = key[index];
- if (!(part in rawValue)) {
- return false;
- }
- rawValue = rawValue[part];
- }
- let value = typeof rawValue === 'object' ? JSON.stringify(rawValue) : String(rawValue);
- if (parts.length === 1) {
- return value === parts[0];
- }
- if (!value.startsWith(parts[0])) {
- return false;
- }
- const lastPartIndex = parts.length - 1;
- for (let index = 1; index < lastPartIndex; index++) {
- const part = parts[index];
- const position = value.indexOf(part);
- if (position === -1) {
- return false;
- }
- value = value.slice(position + part.length);
- }
- return value.endsWith(parts[lastPartIndex]);
- };
- exports.getLogFilter = getLogFilter;
- //# sourceMappingURL=getLogFilter.js.map
|