Skip to content

Commit 1f1b382

Browse files
committed
chore: bump to 7.2.0 and update build files
1 parent aaee241 commit 1f1b382

10 files changed

+66
-49
lines changed

CHANGES.md

+9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# CHANGES for jsonpath-plus
22

3+
## 7.2.0
4+
5+
- perf: optimize walk method by 10%-34% (@jacobroschen)
6+
- chore: add types to exports field (@awlayton)
7+
8+
## 7.1.0
9+
10+
- perf: improve evaluation speed of conditional queries (@jacobroschen)
11+
312
## 7.0.0
413

514
- Breaking change: Bump `engines` to 12

dist/index-browser-esm.js

+13-11
Original file line numberDiff line numberDiff line change
@@ -635,21 +635,21 @@ JSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, c
635635
addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`
636636
} else if (loc === '*') {
637637
// all child properties
638-
this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {
639-
addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true, true));
638+
this._walk(val, function (m) {
639+
addRet(_this3._trace(x, val[m], push(path, m), val, m, callback, true, true));
640640
});
641641
} else if (loc === '..') {
642642
// all descendent parent properties
643643
// Check remaining expression with val's immediate children
644644
addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));
645645

646-
this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {
646+
this._walk(val, function (m) {
647647
// We don't join m and x here because we only want parents,
648648
// not scalar values
649-
if (_typeof(v[m]) === 'object') {
649+
if (_typeof(val[m]) === 'object') {
650650
// Keep going with recursive descent on val's
651651
// object children
652-
addRet(_this3._trace(unshift(l, _x), v[m], push(p, m), v, m, cb, true));
652+
addRet(_this3._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));
653653
}
654654
}); // The parent sel computation is handled in the frame above using the
655655
// ancestor object of val
@@ -686,9 +686,11 @@ JSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, c
686686
throw new Error('Eval [?(expr)] prevented in JSONPath expression.');
687687
}
688688

689-
this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {
690-
if (_this3._eval(l.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, '$1'), v[m], m, p, par, pr)) {
691-
addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true));
689+
var safeLoc = loc.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, '$1');
690+
691+
this._walk(val, function (m) {
692+
if (_this3._eval(safeLoc, val[m], m, path, parent, parentPropName)) {
693+
addRet(_this3._trace(x, val[m], push(path, m), val, m, callback, true));
692694
}
693695
});
694696
} else if (loc[0] === '(') {
@@ -844,16 +846,16 @@ JSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, c
844846
return ret;
845847
};
846848

847-
JSONPath.prototype._walk = function (loc, expr, val, path, parent, parentPropName, callback, f) {
849+
JSONPath.prototype._walk = function (val, f) {
848850
if (Array.isArray(val)) {
849851
var n = val.length;
850852

851853
for (var i = 0; i < n; i++) {
852-
f(i, loc, expr, val, path, parent, parentPropName, callback);
854+
f(i);
853855
}
854856
} else if (val && _typeof(val) === 'object') {
855857
Object.keys(val).forEach(function (m) {
856-
f(m, loc, expr, val, path, parent, parentPropName, callback);
858+
f(m);
857859
});
858860
}
859861
};

dist/index-browser-esm.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index-browser-esm.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index-browser-umd.cjs

+13-11
Original file line numberDiff line numberDiff line change
@@ -641,21 +641,21 @@
641641
addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`
642642
} else if (loc === '*') {
643643
// all child properties
644-
this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {
645-
addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true, true));
644+
this._walk(val, function (m) {
645+
addRet(_this3._trace(x, val[m], push(path, m), val, m, callback, true, true));
646646
});
647647
} else if (loc === '..') {
648648
// all descendent parent properties
649649
// Check remaining expression with val's immediate children
650650
addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));
651651

652-
this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {
652+
this._walk(val, function (m) {
653653
// We don't join m and x here because we only want parents,
654654
// not scalar values
655-
if (_typeof(v[m]) === 'object') {
655+
if (_typeof(val[m]) === 'object') {
656656
// Keep going with recursive descent on val's
657657
// object children
658-
addRet(_this3._trace(unshift(l, _x), v[m], push(p, m), v, m, cb, true));
658+
addRet(_this3._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));
659659
}
660660
}); // The parent sel computation is handled in the frame above using the
661661
// ancestor object of val
@@ -692,9 +692,11 @@
692692
throw new Error('Eval [?(expr)] prevented in JSONPath expression.');
693693
}
694694

695-
this._walk(loc, x, val, path, parent, parentPropName, callback, function (m, l, _x, v, p, par, pr, cb) {
696-
if (_this3._eval(l.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, '$1'), v[m], m, p, par, pr)) {
697-
addRet(_this3._trace(unshift(m, _x), v, p, par, pr, cb, true));
695+
var safeLoc = loc.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, '$1');
696+
697+
this._walk(val, function (m) {
698+
if (_this3._eval(safeLoc, val[m], m, path, parent, parentPropName)) {
699+
addRet(_this3._trace(x, val[m], push(path, m), val, m, callback, true));
698700
}
699701
});
700702
} else if (loc[0] === '(') {
@@ -850,16 +852,16 @@
850852
return ret;
851853
};
852854

853-
JSONPath.prototype._walk = function (loc, expr, val, path, parent, parentPropName, callback, f) {
855+
JSONPath.prototype._walk = function (val, f) {
854856
if (Array.isArray(val)) {
855857
var n = val.length;
856858

857859
for (var i = 0; i < n; i++) {
858-
f(i, loc, expr, val, path, parent, parentPropName, callback);
860+
f(i);
859861
}
860862
} else if (val && _typeof(val) === 'object') {
861863
Object.keys(val).forEach(function (m) {
862-
f(m, loc, expr, val, path, parent, parentPropName, callback);
864+
f(m);
863865
});
864866
}
865867
};

0 commit comments

Comments
 (0)