| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- @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.
- */
- 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]);
- };
- export { getLogFilter };
|