@skeptools/skep-organization-project 0.0.15 → 0.0.16
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/.jsii +113 -3
- package/API.md +74 -43
- package/lib/skep-organization-project.js +1 -1
- package/node_modules/liquidjs/README.md +17 -10
- package/node_modules/liquidjs/dist/context/context.d.ts +7 -1
- package/node_modules/liquidjs/dist/drop/drop.d.ts +1 -1
- package/node_modules/liquidjs/dist/filters/array.d.ts +14 -14
- package/node_modules/liquidjs/dist/filters/html.d.ts +6 -5
- package/node_modules/liquidjs/dist/filters/math.d.ts +9 -9
- package/node_modules/liquidjs/dist/filters/string.d.ts +22 -21
- package/node_modules/liquidjs/dist/fs/map-fs.d.ts +13 -0
- package/node_modules/liquidjs/dist/fs/node-require.d.ts +1 -2
- package/node_modules/liquidjs/dist/index.d.ts +1 -1
- package/node_modules/liquidjs/dist/liquid-options.d.ts +28 -2
- package/node_modules/liquidjs/dist/liquid.browser.min.js +1 -1
- package/node_modules/liquidjs/dist/liquid.browser.min.js.map +1 -1
- package/node_modules/liquidjs/dist/{liquid.browser.esm.js → liquid.browser.mjs} +443 -227
- package/node_modules/liquidjs/dist/liquid.browser.umd.js +604 -368
- package/node_modules/liquidjs/dist/liquid.browser.umd.js.map +1 -1
- package/node_modules/liquidjs/dist/liquid.d.ts +3 -0
- package/node_modules/liquidjs/dist/{liquid.node.cjs.js → liquid.node.js} +432 -227
- package/node_modules/liquidjs/dist/{liquid.node.esm.js → liquid.node.mjs} +448 -228
- package/node_modules/liquidjs/dist/parser/parser.d.ts +1 -0
- package/node_modules/liquidjs/dist/parser/parser.spec.d.ts +1 -0
- package/node_modules/liquidjs/dist/parser/tokenizer.d.ts +4 -3
- package/node_modules/liquidjs/dist/tags/block.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/capture.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/case.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/for.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/if.d.ts +3 -2
- package/node_modules/liquidjs/dist/tags/include.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/layout.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/liquid.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/render.d.ts +3 -2
- package/node_modules/liquidjs/dist/tags/tablerow.d.ts +2 -1
- package/node_modules/liquidjs/dist/tags/unless.d.ts +2 -1
- package/node_modules/liquidjs/dist/template/filter-impl-options.d.ts +2 -0
- package/node_modules/liquidjs/dist/template/filter.d.ts +3 -1
- package/node_modules/liquidjs/dist/template/hash.d.ts +1 -1
- package/node_modules/liquidjs/dist/template/tag.d.ts +2 -2
- package/node_modules/liquidjs/dist/tokens/identifier-token.d.ts +0 -1
- package/node_modules/liquidjs/dist/util/assert.d.ts +1 -0
- package/node_modules/liquidjs/dist/util/error.d.ts +7 -2
- package/node_modules/liquidjs/dist/util/error.spec.d.ts +1 -0
- package/node_modules/liquidjs/dist/util/index.d.ts +2 -1
- package/node_modules/liquidjs/dist/util/intl.d.ts +6 -0
- package/node_modules/liquidjs/dist/util/limiter.d.ts +8 -0
- package/node_modules/liquidjs/dist/util/liquid-date.d.ts +39 -7
- package/node_modules/liquidjs/dist/util/liquid-date.spec.d.ts +1 -0
- package/node_modules/liquidjs/dist/util/performance.d.ts +5 -0
- package/node_modules/liquidjs/dist/util/performance.spec.d.ts +1 -0
- package/node_modules/liquidjs/dist/util/type-guards.spec.d.ts +1 -0
- package/node_modules/liquidjs/dist/util/underscore.d.ts +2 -1
- package/node_modules/liquidjs/package.json +10 -7
- package/package.json +16 -12
- package/node_modules/liquidjs/dist/util/timezone-date.d.ts +0 -44
- /package/node_modules/liquidjs/dist/{util/timezone-date.spec.d.ts → fs/map-fs.spec.d.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* liquidjs@10.
|
|
2
|
+
* liquidjs@10.18.0, https://github.com/harttle/liquidjs
|
|
3
3
|
* (c) 2016-2024 harttle
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -218,6 +218,10 @@
|
|
|
218
218
|
function toValue(value) {
|
|
219
219
|
return (value instanceof Drop && isFunction(value.valueOf)) ? value.valueOf() : value;
|
|
220
220
|
}
|
|
221
|
+
function toNumber(value) {
|
|
222
|
+
value = Number(value);
|
|
223
|
+
return isNaN(value) ? 0 : value;
|
|
224
|
+
}
|
|
221
225
|
function isNumber(value) {
|
|
222
226
|
return typeof value === 'number';
|
|
223
227
|
}
|
|
@@ -325,7 +329,7 @@
|
|
|
325
329
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
326
330
|
args[_i] = arguments[_i];
|
|
327
331
|
}
|
|
328
|
-
return fn.apply(
|
|
332
|
+
return fn.call.apply(fn, __spreadArray([this], __read(args.map(toValue)), false));
|
|
329
333
|
};
|
|
330
334
|
}
|
|
331
335
|
function escapeRegExp(text) {
|
|
@@ -333,7 +337,7 @@
|
|
|
333
337
|
}
|
|
334
338
|
|
|
335
339
|
/**
|
|
336
|
-
* targeting ES5, extends Error won't create a proper prototype chain, need a trait to
|
|
340
|
+
* targeting ES5, extends Error won't create a proper prototype chain, need a trait to keep track of classes
|
|
337
341
|
*/
|
|
338
342
|
var TRAIT = '__liquidClass__';
|
|
339
343
|
var LiquidError = /** @class */ (function (_super) {
|
|
@@ -400,6 +404,22 @@
|
|
|
400
404
|
};
|
|
401
405
|
return RenderError;
|
|
402
406
|
}(LiquidError));
|
|
407
|
+
var LiquidErrors = /** @class */ (function (_super) {
|
|
408
|
+
__extends(LiquidErrors, _super);
|
|
409
|
+
function LiquidErrors(errors) {
|
|
410
|
+
var _this = _super.call(this, errors[0], errors[0].token) || this;
|
|
411
|
+
_this.errors = errors;
|
|
412
|
+
_this.name = 'LiquidErrors';
|
|
413
|
+
var s = errors.length > 1 ? 's' : '';
|
|
414
|
+
_this.message = "".concat(errors.length, " error").concat(s, " found");
|
|
415
|
+
_super.prototype.update.call(_this);
|
|
416
|
+
return _this;
|
|
417
|
+
}
|
|
418
|
+
LiquidErrors.is = function (obj) {
|
|
419
|
+
return obj.name === 'LiquidErrors';
|
|
420
|
+
};
|
|
421
|
+
return LiquidErrors;
|
|
422
|
+
}(LiquidError));
|
|
403
423
|
var UndefinedVariableError = /** @class */ (function (_super) {
|
|
404
424
|
__extends(UndefinedVariableError, _super);
|
|
405
425
|
function UndefinedVariableError(err, token) {
|
|
@@ -487,6 +507,10 @@
|
|
|
487
507
|
: (message || "expect ".concat(predicate, " to be true"));
|
|
488
508
|
throw new AssertionError(msg);
|
|
489
509
|
}
|
|
510
|
+
}
|
|
511
|
+
function assertEmpty(predicate, message) {
|
|
512
|
+
if (message === void 0) { message = "unexpected ".concat(JSON.stringify(predicate)); }
|
|
513
|
+
assert(!predicate, message);
|
|
490
514
|
}
|
|
491
515
|
|
|
492
516
|
var NullDrop = /** @class */ (function (_super) {
|
|
@@ -622,7 +646,12 @@
|
|
|
622
646
|
}(Drop));
|
|
623
647
|
|
|
624
648
|
function isComparable(arg) {
|
|
625
|
-
return arg &&
|
|
649
|
+
return (arg &&
|
|
650
|
+
isFunction(arg.equals) &&
|
|
651
|
+
isFunction(arg.gt) &&
|
|
652
|
+
isFunction(arg.geq) &&
|
|
653
|
+
isFunction(arg.lt) &&
|
|
654
|
+
isFunction(arg.leq));
|
|
626
655
|
}
|
|
627
656
|
|
|
628
657
|
var nil = new NullDrop();
|
|
@@ -731,18 +760,6 @@
|
|
|
731
760
|
}
|
|
732
761
|
|
|
733
762
|
var rFormat = /%([-_0^#:]+)?(\d+)?([EO])?(.)/;
|
|
734
|
-
var monthNames = [
|
|
735
|
-
'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
|
|
736
|
-
'September', 'October', 'November', 'December'
|
|
737
|
-
];
|
|
738
|
-
var dayNames = [
|
|
739
|
-
'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
|
|
740
|
-
];
|
|
741
|
-
var monthNamesShort = monthNames.map(abbr);
|
|
742
|
-
var dayNamesShort = dayNames.map(abbr);
|
|
743
|
-
function abbr(str) {
|
|
744
|
-
return str.slice(0, 3);
|
|
745
|
-
}
|
|
746
763
|
// prototype extensions
|
|
747
764
|
function daysInMonth(d) {
|
|
748
765
|
var feb = isLeapYear(d) ? 29 : 28;
|
|
@@ -797,19 +814,7 @@
|
|
|
797
814
|
U: 2,
|
|
798
815
|
W: 2
|
|
799
816
|
};
|
|
800
|
-
|
|
801
|
-
var padChars = {
|
|
802
|
-
a: ' ',
|
|
803
|
-
A: ' ',
|
|
804
|
-
b: ' ',
|
|
805
|
-
B: ' ',
|
|
806
|
-
c: ' ',
|
|
807
|
-
e: ' ',
|
|
808
|
-
k: ' ',
|
|
809
|
-
l: ' ',
|
|
810
|
-
p: ' ',
|
|
811
|
-
P: ' '
|
|
812
|
-
};
|
|
817
|
+
var padSpaceChars = new Set('aAbBceklpP');
|
|
813
818
|
function getTimezoneOffset(d, opts) {
|
|
814
819
|
var nOffset = Math.abs(d.getTimezoneOffset());
|
|
815
820
|
var h = Math.floor(nOffset / 60);
|
|
@@ -820,10 +825,10 @@
|
|
|
820
825
|
padStart(m, 2, '0');
|
|
821
826
|
}
|
|
822
827
|
var formatCodes = {
|
|
823
|
-
a: function (d) { return
|
|
824
|
-
A: function (d) { return
|
|
825
|
-
b: function (d) { return
|
|
826
|
-
B: function (d) { return
|
|
828
|
+
a: function (d) { return d.getShortWeekdayName(); },
|
|
829
|
+
A: function (d) { return d.getLongWeekdayName(); },
|
|
830
|
+
b: function (d) { return d.getShortMonthName(); },
|
|
831
|
+
B: function (d) { return d.getLongMonthName(); },
|
|
827
832
|
c: function (d) { return d.toLocaleString(); },
|
|
828
833
|
C: function (d) { return century(d); },
|
|
829
834
|
d: function (d) { return d.getDate(); },
|
|
@@ -855,12 +860,7 @@
|
|
|
855
860
|
y: function (d) { return d.getFullYear().toString().slice(2, 4); },
|
|
856
861
|
Y: function (d) { return d.getFullYear(); },
|
|
857
862
|
z: getTimezoneOffset,
|
|
858
|
-
Z: function (d, opts) {
|
|
859
|
-
if (d.getTimezoneName) {
|
|
860
|
-
return d.getTimezoneName() || getTimezoneOffset(d, opts);
|
|
861
|
-
}
|
|
862
|
-
return (typeof Intl !== 'undefined' ? Intl.DateTimeFormat().resolvedOptions().timeZone : '');
|
|
863
|
-
},
|
|
863
|
+
Z: function (d, opts) { return d.getTimeZoneName() || getTimezoneOffset(d, opts); },
|
|
864
864
|
't': function () { return '\t'; },
|
|
865
865
|
'n': function () { return '\n'; },
|
|
866
866
|
'%': function () { return '%'; }
|
|
@@ -898,7 +898,7 @@
|
|
|
898
898
|
finally { if (e_1) throw e_1.error; }
|
|
899
899
|
}
|
|
900
900
|
var ret = String(convert(d, { flags: flags, width: width, modifier: modifier }));
|
|
901
|
-
var padChar =
|
|
901
|
+
var padChar = padSpaceChars.has(conversion) ? ' ' : '0';
|
|
902
902
|
var padWidth = width || padWidths[conversion] || 0;
|
|
903
903
|
if (flags['^'])
|
|
904
904
|
ret = ret.toUpperCase();
|
|
@@ -913,9 +913,22 @@
|
|
|
913
913
|
return padStart(ret, padWidth, padChar);
|
|
914
914
|
}
|
|
915
915
|
|
|
916
|
+
function getDateTimeFormat() {
|
|
917
|
+
return (typeof Intl !== 'undefined' ? Intl.DateTimeFormat : undefined);
|
|
918
|
+
}
|
|
919
|
+
|
|
916
920
|
// one minute in milliseconds
|
|
917
921
|
var OneMinute = 60000;
|
|
918
922
|
var ISO8601_TIMEZONE_PATTERN = /([zZ]|([+-])(\d{2}):(\d{2}))$/;
|
|
923
|
+
var monthNames = [
|
|
924
|
+
'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
|
|
925
|
+
'September', 'October', 'November', 'December'
|
|
926
|
+
];
|
|
927
|
+
var monthNamesShort = monthNames.map(function (name) { return name.slice(0, 3); });
|
|
928
|
+
var dayNames = [
|
|
929
|
+
'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
|
|
930
|
+
];
|
|
931
|
+
var dayNamesShort = dayNames.map(function (name) { return name.slice(0, 3); });
|
|
919
932
|
/**
|
|
920
933
|
* A date implementation with timezone info, just like Ruby date
|
|
921
934
|
*
|
|
@@ -923,61 +936,91 @@
|
|
|
923
936
|
* - create a Date offset by it's timezone difference, avoiding overriding a bunch of methods
|
|
924
937
|
* - rewrite getTimezoneOffset() to trick strftime
|
|
925
938
|
*/
|
|
926
|
-
var
|
|
927
|
-
function
|
|
928
|
-
this.
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
this.
|
|
939
|
+
var LiquidDate = /** @class */ (function () {
|
|
940
|
+
function LiquidDate(init, locale, timezone) {
|
|
941
|
+
this.locale = locale;
|
|
942
|
+
this.DateTimeFormat = getDateTimeFormat();
|
|
943
|
+
this.date = new Date(init);
|
|
944
|
+
this.timezoneFixed = timezone !== undefined;
|
|
945
|
+
if (timezone === undefined) {
|
|
946
|
+
timezone = this.date.getTimezoneOffset();
|
|
947
|
+
}
|
|
948
|
+
this.timezoneOffset = isString(timezone) ? LiquidDate.getTimezoneOffset(timezone, this.date) : timezone;
|
|
932
949
|
this.timezoneName = isString(timezone) ? timezone : '';
|
|
933
950
|
var diff = (this.date.getTimezoneOffset() - this.timezoneOffset) * OneMinute;
|
|
934
951
|
var time = this.date.getTime() + diff;
|
|
935
952
|
this.displayDate = new Date(time);
|
|
936
953
|
}
|
|
937
|
-
|
|
954
|
+
LiquidDate.prototype.getTime = function () {
|
|
938
955
|
return this.displayDate.getTime();
|
|
939
956
|
};
|
|
940
|
-
|
|
957
|
+
LiquidDate.prototype.getMilliseconds = function () {
|
|
941
958
|
return this.displayDate.getMilliseconds();
|
|
942
959
|
};
|
|
943
|
-
|
|
960
|
+
LiquidDate.prototype.getSeconds = function () {
|
|
944
961
|
return this.displayDate.getSeconds();
|
|
945
962
|
};
|
|
946
|
-
|
|
963
|
+
LiquidDate.prototype.getMinutes = function () {
|
|
947
964
|
return this.displayDate.getMinutes();
|
|
948
965
|
};
|
|
949
|
-
|
|
966
|
+
LiquidDate.prototype.getHours = function () {
|
|
950
967
|
return this.displayDate.getHours();
|
|
951
968
|
};
|
|
952
|
-
|
|
969
|
+
LiquidDate.prototype.getDay = function () {
|
|
953
970
|
return this.displayDate.getDay();
|
|
954
971
|
};
|
|
955
|
-
|
|
972
|
+
LiquidDate.prototype.getDate = function () {
|
|
956
973
|
return this.displayDate.getDate();
|
|
957
974
|
};
|
|
958
|
-
|
|
975
|
+
LiquidDate.prototype.getMonth = function () {
|
|
959
976
|
return this.displayDate.getMonth();
|
|
960
977
|
};
|
|
961
|
-
|
|
978
|
+
LiquidDate.prototype.getFullYear = function () {
|
|
962
979
|
return this.displayDate.getFullYear();
|
|
963
980
|
};
|
|
964
|
-
|
|
981
|
+
LiquidDate.prototype.toLocaleString = function (locale, init) {
|
|
965
982
|
if (init === null || init === void 0 ? void 0 : init.timeZone) {
|
|
966
983
|
return this.date.toLocaleString(locale, init);
|
|
967
984
|
}
|
|
968
985
|
return this.displayDate.toLocaleString(locale, init);
|
|
969
986
|
};
|
|
970
|
-
|
|
987
|
+
LiquidDate.prototype.toLocaleTimeString = function (locale) {
|
|
971
988
|
return this.displayDate.toLocaleTimeString(locale);
|
|
972
989
|
};
|
|
973
|
-
|
|
990
|
+
LiquidDate.prototype.toLocaleDateString = function (locale) {
|
|
974
991
|
return this.displayDate.toLocaleDateString(locale);
|
|
975
992
|
};
|
|
976
|
-
|
|
993
|
+
LiquidDate.prototype.getTimezoneOffset = function () {
|
|
977
994
|
return this.timezoneOffset;
|
|
978
995
|
};
|
|
979
|
-
|
|
980
|
-
|
|
996
|
+
LiquidDate.prototype.getTimeZoneName = function () {
|
|
997
|
+
if (this.timezoneFixed)
|
|
998
|
+
return this.timezoneName;
|
|
999
|
+
if (!this.DateTimeFormat)
|
|
1000
|
+
return;
|
|
1001
|
+
return this.DateTimeFormat().resolvedOptions().timeZone;
|
|
1002
|
+
};
|
|
1003
|
+
LiquidDate.prototype.getLongMonthName = function () {
|
|
1004
|
+
var _a;
|
|
1005
|
+
return (_a = this.format({ month: 'long' })) !== null && _a !== void 0 ? _a : monthNames[this.getMonth()];
|
|
1006
|
+
};
|
|
1007
|
+
LiquidDate.prototype.getShortMonthName = function () {
|
|
1008
|
+
var _a;
|
|
1009
|
+
return (_a = this.format({ month: 'short' })) !== null && _a !== void 0 ? _a : monthNamesShort[this.getMonth()];
|
|
1010
|
+
};
|
|
1011
|
+
LiquidDate.prototype.getLongWeekdayName = function () {
|
|
1012
|
+
var _a;
|
|
1013
|
+
return (_a = this.format({ weekday: 'long' })) !== null && _a !== void 0 ? _a : dayNames[this.displayDate.getDay()];
|
|
1014
|
+
};
|
|
1015
|
+
LiquidDate.prototype.getShortWeekdayName = function () {
|
|
1016
|
+
var _a;
|
|
1017
|
+
return (_a = this.format({ weekday: 'short' })) !== null && _a !== void 0 ? _a : dayNamesShort[this.displayDate.getDay()];
|
|
1018
|
+
};
|
|
1019
|
+
LiquidDate.prototype.valid = function () {
|
|
1020
|
+
return !isNaN(this.getTime());
|
|
1021
|
+
};
|
|
1022
|
+
LiquidDate.prototype.format = function (options) {
|
|
1023
|
+
return this.DateTimeFormat && this.DateTimeFormat(this.locale, options).format(this.displayDate);
|
|
981
1024
|
};
|
|
982
1025
|
/**
|
|
983
1026
|
* Create a Date object fixed to it's declared Timezone. Both
|
|
@@ -992,29 +1035,46 @@
|
|
|
992
1035
|
* we create a different Date to trick strftime, it's both simpler and more performant.
|
|
993
1036
|
* Given that a template is expected to be parsed fewer times than rendered.
|
|
994
1037
|
*/
|
|
995
|
-
|
|
1038
|
+
LiquidDate.createDateFixedToTimezone = function (dateString, locale) {
|
|
996
1039
|
var m = dateString.match(ISO8601_TIMEZONE_PATTERN);
|
|
997
1040
|
// representing a UTC timestamp
|
|
998
1041
|
if (m && m[1] === 'Z') {
|
|
999
|
-
return new
|
|
1042
|
+
return new LiquidDate(+new Date(dateString), locale, 0);
|
|
1000
1043
|
}
|
|
1001
1044
|
// has a timezone specified
|
|
1002
1045
|
if (m && m[2] && m[3] && m[4]) {
|
|
1003
1046
|
var _a = __read(m, 5), sign = _a[2], hours = _a[3], minutes = _a[4];
|
|
1004
1047
|
var offset = (sign === '+' ? -1 : 1) * (parseInt(hours, 10) * 60 + parseInt(minutes, 10));
|
|
1005
|
-
return new
|
|
1048
|
+
return new LiquidDate(+new Date(dateString), locale, offset);
|
|
1006
1049
|
}
|
|
1007
|
-
return new
|
|
1050
|
+
return new LiquidDate(dateString, locale);
|
|
1008
1051
|
};
|
|
1009
|
-
|
|
1010
|
-
if (date === void 0) { date = new Date(); }
|
|
1052
|
+
LiquidDate.getTimezoneOffset = function (timezoneName, date) {
|
|
1011
1053
|
var localDateString = date.toLocaleString('en-US', { timeZone: timezoneName });
|
|
1012
1054
|
var utcDateString = date.toLocaleString('en-US', { timeZone: 'UTC' });
|
|
1013
1055
|
var localDate = new Date(localDateString);
|
|
1014
1056
|
var utcDate = new Date(utcDateString);
|
|
1015
1057
|
return (+utcDate - +localDate) / (60 * 1000);
|
|
1016
1058
|
};
|
|
1017
|
-
return
|
|
1059
|
+
return LiquidDate;
|
|
1060
|
+
}());
|
|
1061
|
+
|
|
1062
|
+
var Limiter = /** @class */ (function () {
|
|
1063
|
+
function Limiter(resource, limit) {
|
|
1064
|
+
this.base = 0;
|
|
1065
|
+
this.message = "".concat(resource, " limit exceeded");
|
|
1066
|
+
this.limit = limit;
|
|
1067
|
+
}
|
|
1068
|
+
Limiter.prototype.use = function (count) {
|
|
1069
|
+
count = toNumber(count);
|
|
1070
|
+
assert(this.base + count <= this.limit, this.message);
|
|
1071
|
+
this.base += count;
|
|
1072
|
+
};
|
|
1073
|
+
Limiter.prototype.check = function (count) {
|
|
1074
|
+
count = toNumber(count);
|
|
1075
|
+
assert(count <= this.limit, this.message);
|
|
1076
|
+
};
|
|
1077
|
+
return Limiter;
|
|
1018
1078
|
}());
|
|
1019
1079
|
|
|
1020
1080
|
var DelimitedToken = /** @class */ (function (_super) {
|
|
@@ -1123,17 +1183,6 @@
|
|
|
1123
1183
|
_this.content = _this.getText();
|
|
1124
1184
|
return _this;
|
|
1125
1185
|
}
|
|
1126
|
-
IdentifierToken.prototype.isNumber = function (allowSign) {
|
|
1127
|
-
if (allowSign === void 0) { allowSign = false; }
|
|
1128
|
-
var begin = allowSign && TYPES[this.input.charCodeAt(this.begin)] & SIGN
|
|
1129
|
-
? this.begin + 1
|
|
1130
|
-
: this.begin;
|
|
1131
|
-
for (var i = begin; i < this.end; i++) {
|
|
1132
|
-
if (!(TYPES[this.input.charCodeAt(i)] & NUMBER))
|
|
1133
|
-
return false;
|
|
1134
|
-
}
|
|
1135
|
-
return true;
|
|
1136
|
-
};
|
|
1137
1186
|
return IdentifierToken;
|
|
1138
1187
|
}(Token));
|
|
1139
1188
|
|
|
@@ -1350,6 +1399,15 @@
|
|
|
1350
1399
|
return FilteredValueToken;
|
|
1351
1400
|
}(Token));
|
|
1352
1401
|
|
|
1402
|
+
var polyfill = {
|
|
1403
|
+
now: function () { return Date.now(); }
|
|
1404
|
+
};
|
|
1405
|
+
function getPerformance() {
|
|
1406
|
+
return (typeof global === 'object' && global.performance) ||
|
|
1407
|
+
(typeof window === 'object' && window.performance) ||
|
|
1408
|
+
polyfill;
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1353
1411
|
var SimpleEmitter = /** @class */ (function () {
|
|
1354
1412
|
function SimpleEmitter() {
|
|
1355
1413
|
this.buffer = '';
|
|
@@ -1400,7 +1458,7 @@
|
|
|
1400
1458
|
return emitter.stream;
|
|
1401
1459
|
};
|
|
1402
1460
|
Render.prototype.renderTemplates = function (templates, ctx, emitter) {
|
|
1403
|
-
var templates_1, templates_1_1, tpl, html, e_1, err, e_2_1;
|
|
1461
|
+
var errors, templates_1, templates_1_1, tpl, html, e_1, err, e_2_1;
|
|
1404
1462
|
var e_2, _a;
|
|
1405
1463
|
return __generator(this, function (_b) {
|
|
1406
1464
|
switch (_b.label) {
|
|
@@ -1408,6 +1466,7 @@
|
|
|
1408
1466
|
if (!emitter) {
|
|
1409
1467
|
emitter = ctx.opts.keepOutputType ? new KeepingTypeEmitter() : new SimpleEmitter();
|
|
1410
1468
|
}
|
|
1469
|
+
errors = [];
|
|
1411
1470
|
_b.label = 1;
|
|
1412
1471
|
case 1:
|
|
1413
1472
|
_b.trys.push([1, 8, 9, 10]);
|
|
@@ -1416,6 +1475,7 @@
|
|
|
1416
1475
|
case 2:
|
|
1417
1476
|
if (!!templates_1_1.done) return [3 /*break*/, 7];
|
|
1418
1477
|
tpl = templates_1_1.value;
|
|
1478
|
+
ctx.renderLimit.check(getPerformance().now());
|
|
1419
1479
|
_b.label = 3;
|
|
1420
1480
|
case 3:
|
|
1421
1481
|
_b.trys.push([3, 5, , 6]);
|
|
@@ -1431,8 +1491,12 @@
|
|
|
1431
1491
|
return [3 /*break*/, 6];
|
|
1432
1492
|
case 5:
|
|
1433
1493
|
e_1 = _b.sent();
|
|
1434
|
-
err =
|
|
1435
|
-
|
|
1494
|
+
err = LiquidError.is(e_1) ? e_1 : new RenderError(e_1, tpl);
|
|
1495
|
+
if (ctx.opts.catchAllErrors)
|
|
1496
|
+
errors.push(err);
|
|
1497
|
+
else
|
|
1498
|
+
throw err;
|
|
1499
|
+
return [3 /*break*/, 6];
|
|
1436
1500
|
case 6:
|
|
1437
1501
|
templates_1_1 = templates_1.next();
|
|
1438
1502
|
return [3 /*break*/, 2];
|
|
@@ -1447,7 +1511,11 @@
|
|
|
1447
1511
|
}
|
|
1448
1512
|
finally { if (e_2) throw e_2.error; }
|
|
1449
1513
|
return [7 /*endfinally*/];
|
|
1450
|
-
case 10:
|
|
1514
|
+
case 10:
|
|
1515
|
+
if (errors.length) {
|
|
1516
|
+
throw new LiquidErrors(errors);
|
|
1517
|
+
}
|
|
1518
|
+
return [2 /*return*/, emitter.buffer];
|
|
1451
1519
|
}
|
|
1452
1520
|
});
|
|
1453
1521
|
};
|
|
@@ -1670,6 +1738,7 @@
|
|
|
1670
1738
|
return !isFalsy(val, ctx);
|
|
1671
1739
|
}
|
|
1672
1740
|
function isFalsy(val, ctx) {
|
|
1741
|
+
val = toValue(val);
|
|
1673
1742
|
if (ctx.opts.jsTruthy) {
|
|
1674
1743
|
return !val;
|
|
1675
1744
|
}
|
|
@@ -1941,22 +2010,30 @@
|
|
|
1941
2010
|
''': "'"
|
|
1942
2011
|
};
|
|
1943
2012
|
function escape(str) {
|
|
1944
|
-
|
|
2013
|
+
str = stringify(str);
|
|
2014
|
+
this.context.memoryLimit.use(str.length);
|
|
2015
|
+
return str.replace(/&|<|>|"|'/g, function (m) { return escapeMap[m]; });
|
|
1945
2016
|
}
|
|
1946
2017
|
function xml_escape(str) {
|
|
1947
|
-
return escape(str);
|
|
2018
|
+
return escape.call(this, str);
|
|
1948
2019
|
}
|
|
1949
2020
|
function unescape(str) {
|
|
1950
|
-
|
|
2021
|
+
str = stringify(str);
|
|
2022
|
+
this.context.memoryLimit.use(str.length);
|
|
2023
|
+
return str.replace(/&(amp|lt|gt|#34|#39);/g, function (m) { return unescapeMap[m]; });
|
|
1951
2024
|
}
|
|
1952
2025
|
function escape_once(str) {
|
|
1953
|
-
return escape(unescape(
|
|
2026
|
+
return escape.call(this, unescape.call(this, str));
|
|
1954
2027
|
}
|
|
1955
2028
|
function newline_to_br(v) {
|
|
1956
|
-
|
|
2029
|
+
var str = stringify(v);
|
|
2030
|
+
this.context.memoryLimit.use(str.length);
|
|
2031
|
+
return str.replace(/\r?\n/gm, '<br />\n');
|
|
1957
2032
|
}
|
|
1958
2033
|
function strip_html(v) {
|
|
1959
|
-
|
|
2034
|
+
var str = stringify(v);
|
|
2035
|
+
this.context.memoryLimit.use(str.length);
|
|
2036
|
+
return str.replace(/<script[\s\S]*?<\/script>|<style[\s\S]*?<\/style>|<.*?>|<!--[\s\S]*?-->/g, '');
|
|
1960
2037
|
}
|
|
1961
2038
|
|
|
1962
2039
|
var htmlFilters = /*#__PURE__*/Object.freeze({
|
|
@@ -1968,18 +2045,84 @@
|
|
|
1968
2045
|
strip_html: strip_html
|
|
1969
2046
|
});
|
|
1970
2047
|
|
|
2048
|
+
var MapFS = /** @class */ (function () {
|
|
2049
|
+
function MapFS(mapping) {
|
|
2050
|
+
this.mapping = mapping;
|
|
2051
|
+
this.sep = '/';
|
|
2052
|
+
}
|
|
2053
|
+
MapFS.prototype.exists = function (filepath) {
|
|
2054
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
2055
|
+
return __generator(this, function (_a) {
|
|
2056
|
+
return [2 /*return*/, this.existsSync(filepath)];
|
|
2057
|
+
});
|
|
2058
|
+
});
|
|
2059
|
+
};
|
|
2060
|
+
MapFS.prototype.existsSync = function (filepath) {
|
|
2061
|
+
return !isNil(this.mapping[filepath]);
|
|
2062
|
+
};
|
|
2063
|
+
MapFS.prototype.readFile = function (filepath) {
|
|
2064
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
2065
|
+
return __generator(this, function (_a) {
|
|
2066
|
+
return [2 /*return*/, this.readFileSync(filepath)];
|
|
2067
|
+
});
|
|
2068
|
+
});
|
|
2069
|
+
};
|
|
2070
|
+
MapFS.prototype.readFileSync = function (filepath) {
|
|
2071
|
+
var content = this.mapping[filepath];
|
|
2072
|
+
if (isNil(content))
|
|
2073
|
+
throw new Error("ENOENT: ".concat(filepath));
|
|
2074
|
+
return content;
|
|
2075
|
+
};
|
|
2076
|
+
MapFS.prototype.dirname = function (filepath) {
|
|
2077
|
+
var segments = filepath.split(this.sep);
|
|
2078
|
+
segments.pop();
|
|
2079
|
+
return segments.join(this.sep);
|
|
2080
|
+
};
|
|
2081
|
+
MapFS.prototype.resolve = function (dir, file, ext) {
|
|
2082
|
+
var e_1, _a;
|
|
2083
|
+
file += ext;
|
|
2084
|
+
if (dir === '.')
|
|
2085
|
+
return file;
|
|
2086
|
+
var segments = dir.split(/\/+/);
|
|
2087
|
+
try {
|
|
2088
|
+
for (var _b = __values(file.split(this.sep)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
2089
|
+
var segment = _c.value;
|
|
2090
|
+
if (segment === '.' || segment === '')
|
|
2091
|
+
continue;
|
|
2092
|
+
else if (segment === '..') {
|
|
2093
|
+
if (segments.length > 1 || segments[0] !== '')
|
|
2094
|
+
segments.pop();
|
|
2095
|
+
}
|
|
2096
|
+
else
|
|
2097
|
+
segments.push(segment);
|
|
2098
|
+
}
|
|
2099
|
+
}
|
|
2100
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
2101
|
+
finally {
|
|
2102
|
+
try {
|
|
2103
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
2104
|
+
}
|
|
2105
|
+
finally { if (e_1) throw e_1.error; }
|
|
2106
|
+
}
|
|
2107
|
+
return segments.join(this.sep);
|
|
2108
|
+
};
|
|
2109
|
+
return MapFS;
|
|
2110
|
+
}());
|
|
2111
|
+
|
|
1971
2112
|
var defaultOptions = {
|
|
1972
2113
|
root: ['.'],
|
|
1973
2114
|
layouts: ['.'],
|
|
1974
2115
|
partials: ['.'],
|
|
1975
2116
|
relativeReference: true,
|
|
1976
2117
|
jekyllInclude: false,
|
|
2118
|
+
keyValueSeparator: ':',
|
|
1977
2119
|
cache: undefined,
|
|
1978
2120
|
extname: '',
|
|
1979
2121
|
fs: fs,
|
|
1980
2122
|
dynamicPartials: true,
|
|
1981
2123
|
jsTruthy: false,
|
|
1982
2124
|
dateFormat: '%A, %B %-e, %Y at %-l:%M %P %z',
|
|
2125
|
+
locale: '',
|
|
1983
2126
|
trimTagRight: false,
|
|
1984
2127
|
trimTagLeft: false,
|
|
1985
2128
|
trimOutputRight: false,
|
|
@@ -1996,9 +2139,13 @@
|
|
|
1996
2139
|
lenientIf: false,
|
|
1997
2140
|
globals: {},
|
|
1998
2141
|
keepOutputType: false,
|
|
1999
|
-
operators: defaultOperators
|
|
2142
|
+
operators: defaultOperators,
|
|
2143
|
+
memoryLimit: Infinity,
|
|
2144
|
+
parseLimit: Infinity,
|
|
2145
|
+
renderLimit: Infinity
|
|
2000
2146
|
};
|
|
2001
2147
|
function normalize(options) {
|
|
2148
|
+
var _a, _b;
|
|
2002
2149
|
if (options.hasOwnProperty('root')) {
|
|
2003
2150
|
if (!options.hasOwnProperty('partials'))
|
|
2004
2151
|
options.partials = options.root;
|
|
@@ -2024,6 +2171,14 @@
|
|
|
2024
2171
|
options.partials = normalizeDirectoryList(options.partials);
|
|
2025
2172
|
options.layouts = normalizeDirectoryList(options.layouts);
|
|
2026
2173
|
options.outputEscape = options.outputEscape && getOutputEscapeFunction(options.outputEscape);
|
|
2174
|
+
if (!options.locale) {
|
|
2175
|
+
options.locale = (_b = (_a = getDateTimeFormat()) === null || _a === void 0 ? void 0 : _a().resolvedOptions().locale) !== null && _b !== void 0 ? _b : 'en-US';
|
|
2176
|
+
}
|
|
2177
|
+
if (options.templates) {
|
|
2178
|
+
options.fs = new MapFS(options.templates);
|
|
2179
|
+
options.relativeReference = true;
|
|
2180
|
+
options.root = options.partials = options.layouts = '.';
|
|
2181
|
+
}
|
|
2027
2182
|
return options;
|
|
2028
2183
|
}
|
|
2029
2184
|
function getOutputEscapeFunction(nameOrFunction) {
|
|
@@ -2161,9 +2316,7 @@
|
|
|
2161
2316
|
this.skipBlank();
|
|
2162
2317
|
if (this.end())
|
|
2163
2318
|
return null;
|
|
2164
|
-
this.assert(this.
|
|
2165
|
-
this.p++;
|
|
2166
|
-
var begin = this.p;
|
|
2319
|
+
this.assert(this.read() === '|', "expected \"|\" before filter");
|
|
2167
2320
|
var name = this.readIdentifier();
|
|
2168
2321
|
if (!name.size()) {
|
|
2169
2322
|
this.assert(this.end(), "expected filter name");
|
|
@@ -2184,7 +2337,7 @@
|
|
|
2184
2337
|
else {
|
|
2185
2338
|
throw this.error('expected ":" after filter name');
|
|
2186
2339
|
}
|
|
2187
|
-
return new FilterToken(name.getText(), args, this.input, begin, this.p, this.file);
|
|
2340
|
+
return new FilterToken(name.getText(), args, this.input, name.begin, this.p, this.file);
|
|
2188
2341
|
};
|
|
2189
2342
|
Tokenizer.prototype.readFilterArg = function () {
|
|
2190
2343
|
var key = this.readValue();
|
|
@@ -2228,7 +2381,6 @@
|
|
|
2228
2381
|
return new HTMLToken(this.input, begin, this.p, this.file);
|
|
2229
2382
|
};
|
|
2230
2383
|
Tokenizer.prototype.readTagToken = function (options) {
|
|
2231
|
-
if (options === void 0) { options = defaultOptions; }
|
|
2232
2384
|
var _a = this, file = _a.file, input = _a.input;
|
|
2233
2385
|
var begin = this.p;
|
|
2234
2386
|
if (this.readToDelimiter(options.tagDelimiterRight) === -1) {
|
|
@@ -2364,7 +2516,7 @@
|
|
|
2364
2516
|
return;
|
|
2365
2517
|
var value;
|
|
2366
2518
|
this.skipBlank();
|
|
2367
|
-
var sep = jekyllStyle ? '=' : ':';
|
|
2519
|
+
var sep = isString(jekyllStyle) ? jekyllStyle : (jekyllStyle ? '=' : ':');
|
|
2368
2520
|
if (this.peek() === sep) {
|
|
2369
2521
|
++this.p;
|
|
2370
2522
|
value = this.readValue();
|
|
@@ -2381,6 +2533,9 @@
|
|
|
2381
2533
|
Tokenizer.prototype.end = function () {
|
|
2382
2534
|
return this.p >= this.N;
|
|
2383
2535
|
};
|
|
2536
|
+
Tokenizer.prototype.read = function () {
|
|
2537
|
+
return this.input[this.p++];
|
|
2538
|
+
};
|
|
2384
2539
|
Tokenizer.prototype.readTo = function (end) {
|
|
2385
2540
|
while (this.p < this.N) {
|
|
2386
2541
|
++this.p;
|
|
@@ -2704,7 +2859,7 @@
|
|
|
2704
2859
|
var hash;
|
|
2705
2860
|
return __generator(this, function (_a) {
|
|
2706
2861
|
switch (_a.label) {
|
|
2707
|
-
case 0: return [4 /*yield*/, new Hash(this.token.args).render(ctx)];
|
|
2862
|
+
case 0: return [4 /*yield*/, new Hash(this.token.args, ctx.opts.keyValueSeparator).render(ctx)];
|
|
2708
2863
|
case 1:
|
|
2709
2864
|
hash = (_a.sent());
|
|
2710
2865
|
return [4 /*yield*/, options.render.call(this, ctx, emitter, hash)];
|
|
@@ -2721,13 +2876,14 @@
|
|
|
2721
2876
|
}
|
|
2722
2877
|
|
|
2723
2878
|
var Filter = /** @class */ (function () {
|
|
2724
|
-
function Filter(
|
|
2725
|
-
this.
|
|
2879
|
+
function Filter(token, options, liquid) {
|
|
2880
|
+
this.token = token;
|
|
2881
|
+
this.name = token.name;
|
|
2726
2882
|
this.handler = isFunction(options)
|
|
2727
2883
|
? options
|
|
2728
2884
|
: (isFunction(options === null || options === void 0 ? void 0 : options.handler) ? options.handler : identify);
|
|
2729
2885
|
this.raw = !isFunction(options) && !!(options === null || options === void 0 ? void 0 : options.raw);
|
|
2730
|
-
this.args = args;
|
|
2886
|
+
this.args = token.args;
|
|
2731
2887
|
this.liquid = liquid;
|
|
2732
2888
|
}
|
|
2733
2889
|
Filter.prototype.render = function (value, context) {
|
|
@@ -2772,7 +2928,7 @@
|
|
|
2772
2928
|
}
|
|
2773
2929
|
finally { if (e_1) throw e_1.error; }
|
|
2774
2930
|
return [7 /*endfinally*/];
|
|
2775
|
-
case 10: return [4 /*yield*/, this.handler.apply({ context: context, liquid: this.liquid }, __spreadArray([value], __read(argv), false))];
|
|
2931
|
+
case 10: return [4 /*yield*/, this.handler.apply({ context: context, token: this.token, liquid: this.liquid }, __spreadArray([value], __read(argv), false))];
|
|
2776
2932
|
case 11: return [2 /*return*/, _j.sent()];
|
|
2777
2933
|
}
|
|
2778
2934
|
});
|
|
@@ -2791,10 +2947,7 @@
|
|
|
2791
2947
|
? new Tokenizer(input, liquid.options.operators).readFilteredValue()
|
|
2792
2948
|
: input;
|
|
2793
2949
|
this.initial = token.initial;
|
|
2794
|
-
this.filters = token.filters.map(function (
|
|
2795
|
-
var name = _a.name, args = _a.args;
|
|
2796
|
-
return new Filter(name, _this.getFilter(liquid, name), args, liquid);
|
|
2797
|
-
});
|
|
2950
|
+
this.filters = token.filters.map(function (token) { return new Filter(token, _this.getFilter(liquid, token.name), liquid); });
|
|
2798
2951
|
}
|
|
2799
2952
|
Value.prototype.value = function (ctx, lenient) {
|
|
2800
2953
|
var val, _a, _b, filter, e_1_1;
|
|
@@ -2855,7 +3008,8 @@
|
|
|
2855
3008
|
var filters = _this.value.filters;
|
|
2856
3009
|
var outputEscape = liquid.options.outputEscape;
|
|
2857
3010
|
if (!((_a = filters[filters.length - 1]) === null || _a === void 0 ? void 0 : _a.raw) && outputEscape) {
|
|
2858
|
-
|
|
3011
|
+
var token_1 = new FilterToken(toString.call(outputEscape), [], '', 0, 0);
|
|
3012
|
+
filters.push(new Filter(token_1, outputEscape, liquid));
|
|
2859
3013
|
}
|
|
2860
3014
|
return _this;
|
|
2861
3015
|
}
|
|
@@ -2906,7 +3060,7 @@
|
|
|
2906
3060
|
this.shouldLoadRelative = function (referencedFile) { return rRelativePath_1.test(referencedFile); };
|
|
2907
3061
|
}
|
|
2908
3062
|
else {
|
|
2909
|
-
this.shouldLoadRelative = function (
|
|
3063
|
+
this.shouldLoadRelative = function (_referencedFile) { return false; };
|
|
2910
3064
|
}
|
|
2911
3065
|
this.contains = this.options.fs.contains || (function () { return true; });
|
|
2912
3066
|
}
|
|
@@ -3053,8 +3207,11 @@
|
|
|
3053
3207
|
this.fs = this.liquid.options.fs;
|
|
3054
3208
|
this.parseFile = this.cache ? this._parseFileCached : this._parseFile;
|
|
3055
3209
|
this.loader = new Loader(this.liquid.options);
|
|
3210
|
+
this.parseLimit = new Limiter('parse length', liquid.options.parseLimit);
|
|
3056
3211
|
}
|
|
3057
3212
|
Parser.prototype.parse = function (html, filepath) {
|
|
3213
|
+
html = String(html);
|
|
3214
|
+
this.parseLimit.use(html.length);
|
|
3058
3215
|
var tokenizer = new Tokenizer(html, this.liquid.options.operators, filepath);
|
|
3059
3216
|
var tokens = tokenizer.readTopLevelTokens(this.liquid.options);
|
|
3060
3217
|
return this.parseTokens(tokens);
|
|
@@ -3062,9 +3219,20 @@
|
|
|
3062
3219
|
Parser.prototype.parseTokens = function (tokens) {
|
|
3063
3220
|
var token;
|
|
3064
3221
|
var templates = [];
|
|
3222
|
+
var errors = [];
|
|
3065
3223
|
while ((token = tokens.shift())) {
|
|
3066
|
-
|
|
3224
|
+
try {
|
|
3225
|
+
templates.push(this.parseToken(token, tokens));
|
|
3226
|
+
}
|
|
3227
|
+
catch (err) {
|
|
3228
|
+
if (this.liquid.options.catchAllErrors)
|
|
3229
|
+
errors.push(err);
|
|
3230
|
+
else
|
|
3231
|
+
throw err;
|
|
3232
|
+
}
|
|
3067
3233
|
}
|
|
3234
|
+
if (errors.length)
|
|
3235
|
+
throw new LiquidErrors(errors);
|
|
3068
3236
|
return templates;
|
|
3069
3237
|
};
|
|
3070
3238
|
Parser.prototype.parseToken = function (token, remainTokens) {
|
|
@@ -3072,7 +3240,7 @@
|
|
|
3072
3240
|
if (isTagToken(token)) {
|
|
3073
3241
|
var TagClass = this.liquid.tags[token.name];
|
|
3074
3242
|
assert(TagClass, "tag \"".concat(token.name, "\" not found"));
|
|
3075
|
-
return new TagClass(token, remainTokens, this.liquid);
|
|
3243
|
+
return new TagClass(token, remainTokens, this.liquid, this);
|
|
3076
3244
|
}
|
|
3077
3245
|
if (isOutputToken(token)) {
|
|
3078
3246
|
return new Output(token, this.liquid);
|
|
@@ -3128,22 +3296,22 @@
|
|
|
3128
3296
|
});
|
|
3129
3297
|
};
|
|
3130
3298
|
Parser.prototype._parseFile = function (file, sync, type, currentFile) {
|
|
3131
|
-
var filepath, _a, _b
|
|
3299
|
+
var filepath, _a, _b;
|
|
3132
3300
|
if (type === void 0) { type = LookupType.Root; }
|
|
3133
|
-
return __generator(this, function (
|
|
3134
|
-
switch (
|
|
3301
|
+
return __generator(this, function (_c) {
|
|
3302
|
+
switch (_c.label) {
|
|
3135
3303
|
case 0: return [4 /*yield*/, this.loader.lookup(file, type, sync, currentFile)];
|
|
3136
3304
|
case 1:
|
|
3137
|
-
filepath =
|
|
3138
|
-
|
|
3305
|
+
filepath = _c.sent();
|
|
3306
|
+
_a = this.parse;
|
|
3139
3307
|
if (!sync) return [3 /*break*/, 2];
|
|
3140
|
-
|
|
3308
|
+
_b = this.fs.readFileSync(filepath);
|
|
3141
3309
|
return [3 /*break*/, 4];
|
|
3142
3310
|
case 2: return [4 /*yield*/, this.fs.readFile(filepath)];
|
|
3143
3311
|
case 3:
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
case 4: return [2 /*return*/,
|
|
3312
|
+
_b = _c.sent();
|
|
3313
|
+
_c.label = 4;
|
|
3314
|
+
case 4: return [2 /*return*/, _a.apply(this, [_b, filepath])];
|
|
3147
3315
|
}
|
|
3148
3316
|
});
|
|
3149
3317
|
};
|
|
@@ -3220,11 +3388,12 @@
|
|
|
3220
3388
|
});
|
|
3221
3389
|
|
|
3222
3390
|
var Context = /** @class */ (function () {
|
|
3223
|
-
function Context(env, opts, renderOptions) {
|
|
3391
|
+
function Context(env, opts, renderOptions, _a) {
|
|
3224
3392
|
if (env === void 0) { env = {}; }
|
|
3225
3393
|
if (opts === void 0) { opts = defaultOptions; }
|
|
3226
3394
|
if (renderOptions === void 0) { renderOptions = {}; }
|
|
3227
|
-
var _a, _b,
|
|
3395
|
+
var _b = _a === void 0 ? {} : _a, memoryLimit = _b.memoryLimit, renderLimit = _b.renderLimit;
|
|
3396
|
+
var _c, _d, _e, _f, _g;
|
|
3228
3397
|
/**
|
|
3229
3398
|
* insert a Context-level empty scope,
|
|
3230
3399
|
* for tags like `{% capture %}` `{% assign %}` to operate
|
|
@@ -3233,10 +3402,12 @@
|
|
|
3233
3402
|
this.registers = {};
|
|
3234
3403
|
this.sync = !!renderOptions.sync;
|
|
3235
3404
|
this.opts = opts;
|
|
3236
|
-
this.globals = (
|
|
3405
|
+
this.globals = (_c = renderOptions.globals) !== null && _c !== void 0 ? _c : opts.globals;
|
|
3237
3406
|
this.environments = isObject(env) ? env : Object(env);
|
|
3238
|
-
this.strictVariables = (
|
|
3239
|
-
this.ownPropertyOnly = (
|
|
3407
|
+
this.strictVariables = (_d = renderOptions.strictVariables) !== null && _d !== void 0 ? _d : this.opts.strictVariables;
|
|
3408
|
+
this.ownPropertyOnly = (_e = renderOptions.ownPropertyOnly) !== null && _e !== void 0 ? _e : opts.ownPropertyOnly;
|
|
3409
|
+
this.memoryLimit = memoryLimit !== null && memoryLimit !== void 0 ? memoryLimit : new Limiter('memory alloc', (_f = renderOptions.memoryLimit) !== null && _f !== void 0 ? _f : opts.memoryLimit);
|
|
3410
|
+
this.renderLimit = renderLimit !== null && renderLimit !== void 0 ? renderLimit : new Limiter('template render', getPerformance().now() + ((_g = renderOptions.renderLimit) !== null && _g !== void 0 ? _g : opts.renderLimit));
|
|
3240
3411
|
}
|
|
3241
3412
|
Context.prototype.getRegister = function (key) {
|
|
3242
3413
|
return (this.registers[key] = this.registers[key] || {});
|
|
@@ -3323,6 +3494,17 @@
|
|
|
3323
3494
|
Context.prototype.bottom = function () {
|
|
3324
3495
|
return this.scopes[0];
|
|
3325
3496
|
};
|
|
3497
|
+
Context.prototype.spawn = function (scope) {
|
|
3498
|
+
if (scope === void 0) { scope = {}; }
|
|
3499
|
+
return new Context(scope, this.opts, {
|
|
3500
|
+
sync: this.sync,
|
|
3501
|
+
globals: this.globals,
|
|
3502
|
+
strictVariables: this.strictVariables
|
|
3503
|
+
}, {
|
|
3504
|
+
renderLimit: this.renderLimit,
|
|
3505
|
+
memoryLimit: this.memoryLimit
|
|
3506
|
+
});
|
|
3507
|
+
};
|
|
3326
3508
|
Context.prototype.findScope = function (key) {
|
|
3327
3509
|
for (var i = this.scopes.length - 1; i >= 0; i--) {
|
|
3328
3510
|
var candidate = this.scopes[i];
|
|
@@ -3355,7 +3537,7 @@
|
|
|
3355
3537
|
return value;
|
|
3356
3538
|
}
|
|
3357
3539
|
function readJSProperty(obj, key, ownPropertyOnly) {
|
|
3358
|
-
if (ownPropertyOnly && !
|
|
3540
|
+
if (ownPropertyOnly && !hasOwnProperty.call(obj, key) && !(obj instanceof Drop))
|
|
3359
3541
|
return undefined;
|
|
3360
3542
|
return obj[key];
|
|
3361
3543
|
}
|
|
@@ -3370,7 +3552,7 @@
|
|
|
3370
3552
|
return obj['last'];
|
|
3371
3553
|
}
|
|
3372
3554
|
function readSize(obj) {
|
|
3373
|
-
if (
|
|
3555
|
+
if (hasOwnProperty.call(obj, 'size') || obj['size'] !== undefined)
|
|
3374
3556
|
return obj['size'];
|
|
3375
3557
|
if (isArray(obj) || isString(obj))
|
|
3376
3558
|
return obj.length;
|
|
@@ -3483,51 +3665,63 @@
|
|
|
3483
3665
|
slugify: slugify
|
|
3484
3666
|
});
|
|
3485
3667
|
|
|
3486
|
-
var join = argumentsToValue(function (v, arg) {
|
|
3668
|
+
var join = argumentsToValue(function (v, arg) {
|
|
3669
|
+
var array = toArray(v);
|
|
3670
|
+
var sep = isNil(arg) ? ' ' : stringify(arg);
|
|
3671
|
+
var complexity = array.length * (1 + sep.length);
|
|
3672
|
+
this.context.memoryLimit.use(complexity);
|
|
3673
|
+
return array.join(sep);
|
|
3674
|
+
});
|
|
3487
3675
|
var last$1 = argumentsToValue(function (v) { return isArray(v) ? last(v) : ''; });
|
|
3488
3676
|
var first = argumentsToValue(function (v) { return isArray(v) ? v[0] : ''; });
|
|
3489
|
-
var reverse = argumentsToValue(function (v) {
|
|
3677
|
+
var reverse = argumentsToValue(function (v) {
|
|
3678
|
+
var array = toArray(v);
|
|
3679
|
+
this.context.memoryLimit.use(array.length);
|
|
3680
|
+
return __spreadArray([], __read(array), false).reverse();
|
|
3681
|
+
});
|
|
3490
3682
|
function sort(arr, property) {
|
|
3491
|
-
var values,
|
|
3492
|
-
var e_1,
|
|
3493
|
-
return __generator(this, function (
|
|
3494
|
-
switch (
|
|
3683
|
+
var values, array, array_1, array_1_1, item, _a, _b, _c, _d, e_1_1;
|
|
3684
|
+
var e_1, _e;
|
|
3685
|
+
return __generator(this, function (_f) {
|
|
3686
|
+
switch (_f.label) {
|
|
3495
3687
|
case 0:
|
|
3496
3688
|
values = [];
|
|
3497
|
-
|
|
3689
|
+
array = toArray(arr);
|
|
3690
|
+
this.context.memoryLimit.use(array.length);
|
|
3691
|
+
_f.label = 1;
|
|
3498
3692
|
case 1:
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3693
|
+
_f.trys.push([1, 8, 9, 10]);
|
|
3694
|
+
array_1 = __values(array), array_1_1 = array_1.next();
|
|
3695
|
+
_f.label = 2;
|
|
3502
3696
|
case 2:
|
|
3503
|
-
if (!!
|
|
3504
|
-
item =
|
|
3505
|
-
|
|
3506
|
-
|
|
3697
|
+
if (!!array_1_1.done) return [3 /*break*/, 7];
|
|
3698
|
+
item = array_1_1.value;
|
|
3699
|
+
_b = (_a = values).push;
|
|
3700
|
+
_c = [item];
|
|
3507
3701
|
if (!property) return [3 /*break*/, 4];
|
|
3508
3702
|
return [4 /*yield*/, this.context._getFromScope(item, stringify(property).split('.'), false)];
|
|
3509
3703
|
case 3:
|
|
3510
|
-
|
|
3704
|
+
_d = _f.sent();
|
|
3511
3705
|
return [3 /*break*/, 5];
|
|
3512
3706
|
case 4:
|
|
3513
|
-
|
|
3514
|
-
|
|
3707
|
+
_d = item;
|
|
3708
|
+
_f.label = 5;
|
|
3515
3709
|
case 5:
|
|
3516
|
-
|
|
3517
|
-
|
|
3710
|
+
_b.apply(_a, [_c.concat([
|
|
3711
|
+
_d
|
|
3518
3712
|
])]);
|
|
3519
|
-
|
|
3713
|
+
_f.label = 6;
|
|
3520
3714
|
case 6:
|
|
3521
|
-
|
|
3715
|
+
array_1_1 = array_1.next();
|
|
3522
3716
|
return [3 /*break*/, 2];
|
|
3523
3717
|
case 7: return [3 /*break*/, 10];
|
|
3524
3718
|
case 8:
|
|
3525
|
-
e_1_1 =
|
|
3719
|
+
e_1_1 = _f.sent();
|
|
3526
3720
|
e_1 = { error: e_1_1 };
|
|
3527
3721
|
return [3 /*break*/, 10];
|
|
3528
3722
|
case 9:
|
|
3529
3723
|
try {
|
|
3530
|
-
if (
|
|
3724
|
+
if (array_1_1 && !array_1_1.done && (_e = array_1.return)) _e.call(array_1);
|
|
3531
3725
|
}
|
|
3532
3726
|
finally { if (e_1) throw e_1.error; }
|
|
3533
3727
|
return [7 /*endfinally*/];
|
|
@@ -3544,40 +3738,44 @@
|
|
|
3544
3738
|
var compare = property === undefined
|
|
3545
3739
|
? caseInsensitiveCompare
|
|
3546
3740
|
: function (lhs, rhs) { return caseInsensitiveCompare(lhs[propertyString], rhs[propertyString]); };
|
|
3547
|
-
|
|
3741
|
+
var array = toArray(input);
|
|
3742
|
+
this.context.memoryLimit.use(array.length);
|
|
3743
|
+
return __spreadArray([], __read(array), false).sort(compare);
|
|
3548
3744
|
}
|
|
3549
3745
|
var size = function (v) { return (v && v.length) || 0; };
|
|
3550
3746
|
function map(arr, property) {
|
|
3551
|
-
var results,
|
|
3552
|
-
var e_2,
|
|
3553
|
-
return __generator(this, function (
|
|
3554
|
-
switch (
|
|
3747
|
+
var results, array, array_2, array_2_1, item, _a, _b, e_2_1;
|
|
3748
|
+
var e_2, _c;
|
|
3749
|
+
return __generator(this, function (_d) {
|
|
3750
|
+
switch (_d.label) {
|
|
3555
3751
|
case 0:
|
|
3556
3752
|
results = [];
|
|
3557
|
-
|
|
3753
|
+
array = toArray(arr);
|
|
3754
|
+
this.context.memoryLimit.use(array.length);
|
|
3755
|
+
_d.label = 1;
|
|
3558
3756
|
case 1:
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3757
|
+
_d.trys.push([1, 6, 7, 8]);
|
|
3758
|
+
array_2 = __values(array), array_2_1 = array_2.next();
|
|
3759
|
+
_d.label = 2;
|
|
3562
3760
|
case 2:
|
|
3563
|
-
if (!!
|
|
3564
|
-
item =
|
|
3565
|
-
|
|
3761
|
+
if (!!array_2_1.done) return [3 /*break*/, 5];
|
|
3762
|
+
item = array_2_1.value;
|
|
3763
|
+
_b = (_a = results).push;
|
|
3566
3764
|
return [4 /*yield*/, this.context._getFromScope(item, stringify(property), false)];
|
|
3567
3765
|
case 3:
|
|
3568
|
-
|
|
3569
|
-
|
|
3766
|
+
_b.apply(_a, [_d.sent()]);
|
|
3767
|
+
_d.label = 4;
|
|
3570
3768
|
case 4:
|
|
3571
|
-
|
|
3769
|
+
array_2_1 = array_2.next();
|
|
3572
3770
|
return [3 /*break*/, 2];
|
|
3573
3771
|
case 5: return [3 /*break*/, 8];
|
|
3574
3772
|
case 6:
|
|
3575
|
-
e_2_1 =
|
|
3773
|
+
e_2_1 = _d.sent();
|
|
3576
3774
|
e_2 = { error: e_2_1 };
|
|
3577
3775
|
return [3 /*break*/, 8];
|
|
3578
3776
|
case 7:
|
|
3579
3777
|
try {
|
|
3580
|
-
if (
|
|
3778
|
+
if (array_2_1 && !array_2_1.done && (_c = array_2.return)) _c.call(array_2);
|
|
3581
3779
|
}
|
|
3582
3780
|
finally { if (e_2) throw e_2.error; }
|
|
3583
3781
|
return [7 /*endfinally*/];
|
|
@@ -3586,44 +3784,45 @@
|
|
|
3586
3784
|
});
|
|
3587
3785
|
}
|
|
3588
3786
|
function sum(arr, property) {
|
|
3589
|
-
var sum,
|
|
3590
|
-
var e_3,
|
|
3591
|
-
return __generator(this, function (
|
|
3592
|
-
switch (
|
|
3787
|
+
var sum, array, array_3, array_3_1, item, data, _a, _b, e_3_1;
|
|
3788
|
+
var e_3, _c;
|
|
3789
|
+
return __generator(this, function (_d) {
|
|
3790
|
+
switch (_d.label) {
|
|
3593
3791
|
case 0:
|
|
3594
3792
|
sum = 0;
|
|
3595
|
-
|
|
3793
|
+
array = toArray(arr);
|
|
3794
|
+
_d.label = 1;
|
|
3596
3795
|
case 1:
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
|
|
3796
|
+
_d.trys.push([1, 8, 9, 10]);
|
|
3797
|
+
array_3 = __values(array), array_3_1 = array_3.next();
|
|
3798
|
+
_d.label = 2;
|
|
3600
3799
|
case 2:
|
|
3601
|
-
if (!!
|
|
3602
|
-
item =
|
|
3603
|
-
|
|
3800
|
+
if (!!array_3_1.done) return [3 /*break*/, 7];
|
|
3801
|
+
item = array_3_1.value;
|
|
3802
|
+
_a = Number;
|
|
3604
3803
|
if (!property) return [3 /*break*/, 4];
|
|
3605
3804
|
return [4 /*yield*/, this.context._getFromScope(item, stringify(property), false)];
|
|
3606
3805
|
case 3:
|
|
3607
|
-
|
|
3806
|
+
_b = _d.sent();
|
|
3608
3807
|
return [3 /*break*/, 5];
|
|
3609
3808
|
case 4:
|
|
3610
|
-
|
|
3611
|
-
|
|
3809
|
+
_b = item;
|
|
3810
|
+
_d.label = 5;
|
|
3612
3811
|
case 5:
|
|
3613
|
-
data =
|
|
3812
|
+
data = _a.apply(void 0, [_b]);
|
|
3614
3813
|
sum += Number.isNaN(data) ? 0 : data;
|
|
3615
|
-
|
|
3814
|
+
_d.label = 6;
|
|
3616
3815
|
case 6:
|
|
3617
|
-
|
|
3816
|
+
array_3_1 = array_3.next();
|
|
3618
3817
|
return [3 /*break*/, 2];
|
|
3619
3818
|
case 7: return [3 /*break*/, 10];
|
|
3620
3819
|
case 8:
|
|
3621
|
-
e_3_1 =
|
|
3820
|
+
e_3_1 = _d.sent();
|
|
3622
3821
|
e_3 = { error: e_3_1 };
|
|
3623
3822
|
return [3 /*break*/, 10];
|
|
3624
3823
|
case 9:
|
|
3625
3824
|
try {
|
|
3626
|
-
if (
|
|
3825
|
+
if (array_3_1 && !array_3_1.done && (_c = array_3.return)) _c.call(array_3);
|
|
3627
3826
|
}
|
|
3628
3827
|
finally { if (e_3) throw e_3.error; }
|
|
3629
3828
|
return [7 /*endfinally*/];
|
|
@@ -3632,17 +3831,24 @@
|
|
|
3632
3831
|
});
|
|
3633
3832
|
}
|
|
3634
3833
|
function compact(arr) {
|
|
3635
|
-
|
|
3834
|
+
var array = toArray(arr);
|
|
3835
|
+
this.context.memoryLimit.use(array.length);
|
|
3836
|
+
return array.filter(function (x) { return !isNil(toValue(x)); });
|
|
3636
3837
|
}
|
|
3637
3838
|
function concat(v, arg) {
|
|
3638
3839
|
if (arg === void 0) { arg = []; }
|
|
3639
|
-
|
|
3840
|
+
var lhs = toArray(v);
|
|
3841
|
+
var rhs = toArray(arg);
|
|
3842
|
+
this.context.memoryLimit.use(lhs.length + rhs.length);
|
|
3843
|
+
return lhs.concat(rhs);
|
|
3640
3844
|
}
|
|
3641
3845
|
function push(v, arg) {
|
|
3642
|
-
return concat(v, [arg]);
|
|
3846
|
+
return concat.call(this, v, [arg]);
|
|
3643
3847
|
}
|
|
3644
3848
|
function unshift(v, arg) {
|
|
3645
|
-
var
|
|
3849
|
+
var array = toArray(v);
|
|
3850
|
+
this.context.memoryLimit.use(array.length);
|
|
3851
|
+
var clone = __spreadArray([], __read(array), false);
|
|
3646
3852
|
clone.unshift(arg);
|
|
3647
3853
|
return clone;
|
|
3648
3854
|
}
|
|
@@ -3652,7 +3858,9 @@
|
|
|
3652
3858
|
return clone;
|
|
3653
3859
|
}
|
|
3654
3860
|
function shift(v) {
|
|
3655
|
-
var
|
|
3861
|
+
var array = toArray(v);
|
|
3862
|
+
this.context.memoryLimit.use(array.length);
|
|
3863
|
+
var clone = __spreadArray([], __read(array), false);
|
|
3656
3864
|
clone.shift();
|
|
3657
3865
|
return clone;
|
|
3658
3866
|
}
|
|
@@ -3664,6 +3872,7 @@
|
|
|
3664
3872
|
if (!isArray(v))
|
|
3665
3873
|
v = stringify(v);
|
|
3666
3874
|
begin = begin < 0 ? v.length + begin : begin;
|
|
3875
|
+
this.context.memoryLimit.use(length);
|
|
3667
3876
|
return v.slice(begin, begin + length);
|
|
3668
3877
|
}
|
|
3669
3878
|
function where(arr, property, expected) {
|
|
@@ -3675,6 +3884,7 @@
|
|
|
3675
3884
|
case 0:
|
|
3676
3885
|
values = [];
|
|
3677
3886
|
arr = toArray(arr);
|
|
3887
|
+
this.context.memoryLimit.use(arr.length);
|
|
3678
3888
|
token = new Tokenizer(stringify(property)).readScopeValue();
|
|
3679
3889
|
_d.label = 1;
|
|
3680
3890
|
case 1:
|
|
@@ -3685,7 +3895,7 @@
|
|
|
3685
3895
|
if (!!arr_1_1.done) return [3 /*break*/, 5];
|
|
3686
3896
|
item = arr_1_1.value;
|
|
3687
3897
|
_b = (_a = values).push;
|
|
3688
|
-
return [4 /*yield*/, evalToken(token,
|
|
3898
|
+
return [4 /*yield*/, evalToken(token, this.context.spawn(item))];
|
|
3689
3899
|
case 3:
|
|
3690
3900
|
_b.apply(_a, [_d.sent()]);
|
|
3691
3901
|
_d.label = 4;
|
|
@@ -3712,38 +3922,40 @@
|
|
|
3712
3922
|
});
|
|
3713
3923
|
}
|
|
3714
3924
|
function where_exp(arr, itemName, exp) {
|
|
3715
|
-
var filtered, keyTemplate,
|
|
3716
|
-
var e_5,
|
|
3717
|
-
return __generator(this, function (
|
|
3718
|
-
switch (
|
|
3925
|
+
var filtered, keyTemplate, array, array_4, array_4_1, item, value, e_5_1;
|
|
3926
|
+
var e_5, _a, _b;
|
|
3927
|
+
return __generator(this, function (_c) {
|
|
3928
|
+
switch (_c.label) {
|
|
3719
3929
|
case 0:
|
|
3720
3930
|
filtered = [];
|
|
3721
3931
|
keyTemplate = new Value(stringify(exp), this.liquid);
|
|
3722
|
-
|
|
3932
|
+
array = toArray(arr);
|
|
3933
|
+
this.context.memoryLimit.use(array.length);
|
|
3934
|
+
_c.label = 1;
|
|
3723
3935
|
case 1:
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3936
|
+
_c.trys.push([1, 6, 7, 8]);
|
|
3937
|
+
array_4 = __values(array), array_4_1 = array_4.next();
|
|
3938
|
+
_c.label = 2;
|
|
3727
3939
|
case 2:
|
|
3728
|
-
if (!!
|
|
3729
|
-
item =
|
|
3730
|
-
return [4 /*yield*/, keyTemplate.value(
|
|
3940
|
+
if (!!array_4_1.done) return [3 /*break*/, 5];
|
|
3941
|
+
item = array_4_1.value;
|
|
3942
|
+
return [4 /*yield*/, keyTemplate.value(this.context.spawn((_b = {}, _b[itemName] = item, _b)))];
|
|
3731
3943
|
case 3:
|
|
3732
|
-
value =
|
|
3944
|
+
value = _c.sent();
|
|
3733
3945
|
if (value)
|
|
3734
3946
|
filtered.push(item);
|
|
3735
|
-
|
|
3947
|
+
_c.label = 4;
|
|
3736
3948
|
case 4:
|
|
3737
|
-
|
|
3949
|
+
array_4_1 = array_4.next();
|
|
3738
3950
|
return [3 /*break*/, 2];
|
|
3739
3951
|
case 5: return [3 /*break*/, 8];
|
|
3740
3952
|
case 6:
|
|
3741
|
-
e_5_1 =
|
|
3953
|
+
e_5_1 = _c.sent();
|
|
3742
3954
|
e_5 = { error: e_5_1 };
|
|
3743
3955
|
return [3 /*break*/, 8];
|
|
3744
3956
|
case 7:
|
|
3745
3957
|
try {
|
|
3746
|
-
if (
|
|
3958
|
+
if (array_4_1 && !array_4_1.done && (_a = array_4.return)) _a.call(array_4);
|
|
3747
3959
|
}
|
|
3748
3960
|
finally { if (e_5) throw e_5.error; }
|
|
3749
3961
|
return [7 /*endfinally*/];
|
|
@@ -3760,6 +3972,7 @@
|
|
|
3760
3972
|
map = new Map();
|
|
3761
3973
|
arr = toArray(arr);
|
|
3762
3974
|
token = new Tokenizer(stringify(property)).readScopeValue();
|
|
3975
|
+
this.context.memoryLimit.use(arr.length);
|
|
3763
3976
|
_b.label = 1;
|
|
3764
3977
|
case 1:
|
|
3765
3978
|
_b.trys.push([1, 6, 7, 8]);
|
|
@@ -3768,7 +3981,7 @@
|
|
|
3768
3981
|
case 2:
|
|
3769
3982
|
if (!!arr_2_1.done) return [3 /*break*/, 5];
|
|
3770
3983
|
item = arr_2_1.value;
|
|
3771
|
-
return [4 /*yield*/, evalToken(token,
|
|
3984
|
+
return [4 /*yield*/, evalToken(token, this.context.spawn(item))];
|
|
3772
3985
|
case 3:
|
|
3773
3986
|
key = _b.sent();
|
|
3774
3987
|
if (!map.has(key))
|
|
@@ -3797,39 +4010,41 @@
|
|
|
3797
4010
|
});
|
|
3798
4011
|
}
|
|
3799
4012
|
function group_by_exp(arr, itemName, exp) {
|
|
3800
|
-
var map, keyTemplate,
|
|
3801
|
-
var e_7,
|
|
3802
|
-
return __generator(this, function (
|
|
3803
|
-
switch (
|
|
4013
|
+
var map, keyTemplate, arr_3, arr_3_1, item, key, e_7_1;
|
|
4014
|
+
var e_7, _a, _b;
|
|
4015
|
+
return __generator(this, function (_c) {
|
|
4016
|
+
switch (_c.label) {
|
|
3804
4017
|
case 0:
|
|
3805
4018
|
map = new Map();
|
|
3806
4019
|
keyTemplate = new Value(stringify(exp), this.liquid);
|
|
3807
|
-
|
|
4020
|
+
arr = toArray(arr);
|
|
4021
|
+
this.context.memoryLimit.use(arr.length);
|
|
4022
|
+
_c.label = 1;
|
|
3808
4023
|
case 1:
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
4024
|
+
_c.trys.push([1, 6, 7, 8]);
|
|
4025
|
+
arr_3 = __values(arr), arr_3_1 = arr_3.next();
|
|
4026
|
+
_c.label = 2;
|
|
3812
4027
|
case 2:
|
|
3813
|
-
if (!!
|
|
3814
|
-
item =
|
|
3815
|
-
return [4 /*yield*/, keyTemplate.value(
|
|
4028
|
+
if (!!arr_3_1.done) return [3 /*break*/, 5];
|
|
4029
|
+
item = arr_3_1.value;
|
|
4030
|
+
return [4 /*yield*/, keyTemplate.value(this.context.spawn((_b = {}, _b[itemName] = item, _b)))];
|
|
3816
4031
|
case 3:
|
|
3817
|
-
key =
|
|
4032
|
+
key = _c.sent();
|
|
3818
4033
|
if (!map.has(key))
|
|
3819
4034
|
map.set(key, []);
|
|
3820
4035
|
map.get(key).push(item);
|
|
3821
|
-
|
|
4036
|
+
_c.label = 4;
|
|
3822
4037
|
case 4:
|
|
3823
|
-
|
|
4038
|
+
arr_3_1 = arr_3.next();
|
|
3824
4039
|
return [3 /*break*/, 2];
|
|
3825
4040
|
case 5: return [3 /*break*/, 8];
|
|
3826
4041
|
case 6:
|
|
3827
|
-
e_7_1 =
|
|
4042
|
+
e_7_1 = _c.sent();
|
|
3828
4043
|
e_7 = { error: e_7_1 };
|
|
3829
4044
|
return [3 /*break*/, 8];
|
|
3830
4045
|
case 7:
|
|
3831
4046
|
try {
|
|
3832
|
-
if (
|
|
4047
|
+
if (arr_3_1 && !arr_3_1.done && (_a = arr_3.return)) _a.call(arr_3);
|
|
3833
4048
|
}
|
|
3834
4049
|
finally { if (e_7) throw e_7.error; }
|
|
3835
4050
|
return [7 /*endfinally*/];
|
|
@@ -3841,92 +4056,89 @@
|
|
|
3841
4056
|
});
|
|
3842
4057
|
}
|
|
3843
4058
|
function find(arr, property, expected) {
|
|
3844
|
-
var token,
|
|
3845
|
-
var e_8,
|
|
3846
|
-
return __generator(this, function (
|
|
3847
|
-
switch (
|
|
4059
|
+
var token, array, array_5, array_5_1, item, value, e_8_1;
|
|
4060
|
+
var e_8, _a;
|
|
4061
|
+
return __generator(this, function (_b) {
|
|
4062
|
+
switch (_b.label) {
|
|
3848
4063
|
case 0:
|
|
3849
4064
|
token = new Tokenizer(stringify(property)).readScopeValue();
|
|
3850
|
-
|
|
4065
|
+
array = toArray(arr);
|
|
4066
|
+
_b.label = 1;
|
|
3851
4067
|
case 1:
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
4068
|
+
_b.trys.push([1, 6, 7, 8]);
|
|
4069
|
+
array_5 = __values(array), array_5_1 = array_5.next();
|
|
4070
|
+
_b.label = 2;
|
|
3855
4071
|
case 2:
|
|
3856
|
-
if (!!
|
|
3857
|
-
item =
|
|
3858
|
-
return [4 /*yield*/, evalToken(token,
|
|
4072
|
+
if (!!array_5_1.done) return [3 /*break*/, 5];
|
|
4073
|
+
item = array_5_1.value;
|
|
4074
|
+
return [4 /*yield*/, evalToken(token, this.context.spawn(item))];
|
|
3859
4075
|
case 3:
|
|
3860
|
-
value =
|
|
4076
|
+
value = _b.sent();
|
|
3861
4077
|
if (equals(value, expected))
|
|
3862
4078
|
return [2 /*return*/, item];
|
|
3863
|
-
|
|
4079
|
+
_b.label = 4;
|
|
3864
4080
|
case 4:
|
|
3865
|
-
|
|
4081
|
+
array_5_1 = array_5.next();
|
|
3866
4082
|
return [3 /*break*/, 2];
|
|
3867
4083
|
case 5: return [3 /*break*/, 8];
|
|
3868
4084
|
case 6:
|
|
3869
|
-
e_8_1 =
|
|
4085
|
+
e_8_1 = _b.sent();
|
|
3870
4086
|
e_8 = { error: e_8_1 };
|
|
3871
4087
|
return [3 /*break*/, 8];
|
|
3872
4088
|
case 7:
|
|
3873
4089
|
try {
|
|
3874
|
-
if (
|
|
4090
|
+
if (array_5_1 && !array_5_1.done && (_a = array_5.return)) _a.call(array_5);
|
|
3875
4091
|
}
|
|
3876
4092
|
finally { if (e_8) throw e_8.error; }
|
|
3877
4093
|
return [7 /*endfinally*/];
|
|
3878
|
-
case 8: return [2 /*return
|
|
4094
|
+
case 8: return [2 /*return*/];
|
|
3879
4095
|
}
|
|
3880
4096
|
});
|
|
3881
4097
|
}
|
|
3882
4098
|
function find_exp(arr, itemName, exp) {
|
|
3883
|
-
var predicate,
|
|
3884
|
-
var e_9,
|
|
3885
|
-
return __generator(this, function (
|
|
3886
|
-
switch (
|
|
4099
|
+
var predicate, array, array_6, array_6_1, item, value, e_9_1;
|
|
4100
|
+
var e_9, _a, _b;
|
|
4101
|
+
return __generator(this, function (_c) {
|
|
4102
|
+
switch (_c.label) {
|
|
3887
4103
|
case 0:
|
|
3888
4104
|
predicate = new Value(stringify(exp), this.liquid);
|
|
3889
|
-
|
|
4105
|
+
array = toArray(arr);
|
|
4106
|
+
_c.label = 1;
|
|
3890
4107
|
case 1:
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
4108
|
+
_c.trys.push([1, 6, 7, 8]);
|
|
4109
|
+
array_6 = __values(array), array_6_1 = array_6.next();
|
|
4110
|
+
_c.label = 2;
|
|
3894
4111
|
case 2:
|
|
3895
|
-
if (!!
|
|
3896
|
-
item =
|
|
3897
|
-
return [4 /*yield*/, predicate.value(
|
|
4112
|
+
if (!!array_6_1.done) return [3 /*break*/, 5];
|
|
4113
|
+
item = array_6_1.value;
|
|
4114
|
+
return [4 /*yield*/, predicate.value(this.context.spawn((_b = {}, _b[itemName] = item, _b)))];
|
|
3898
4115
|
case 3:
|
|
3899
|
-
value =
|
|
4116
|
+
value = _c.sent();
|
|
3900
4117
|
if (value)
|
|
3901
4118
|
return [2 /*return*/, item];
|
|
3902
|
-
|
|
4119
|
+
_c.label = 4;
|
|
3903
4120
|
case 4:
|
|
3904
|
-
|
|
4121
|
+
array_6_1 = array_6.next();
|
|
3905
4122
|
return [3 /*break*/, 2];
|
|
3906
4123
|
case 5: return [3 /*break*/, 8];
|
|
3907
4124
|
case 6:
|
|
3908
|
-
e_9_1 =
|
|
4125
|
+
e_9_1 = _c.sent();
|
|
3909
4126
|
e_9 = { error: e_9_1 };
|
|
3910
4127
|
return [3 /*break*/, 8];
|
|
3911
4128
|
case 7:
|
|
3912
4129
|
try {
|
|
3913
|
-
if (
|
|
4130
|
+
if (array_6_1 && !array_6_1.done && (_a = array_6.return)) _a.call(array_6);
|
|
3914
4131
|
}
|
|
3915
4132
|
finally { if (e_9) throw e_9.error; }
|
|
3916
4133
|
return [7 /*endfinally*/];
|
|
3917
|
-
case 8: return [2 /*return
|
|
4134
|
+
case 8: return [2 /*return*/];
|
|
3918
4135
|
}
|
|
3919
4136
|
});
|
|
3920
4137
|
}
|
|
3921
4138
|
function uniq(arr) {
|
|
3922
|
-
arr =
|
|
3923
|
-
|
|
3924
|
-
return (
|
|
3925
|
-
if (hasOwnProperty.call(u, String(val)))
|
|
3926
|
-
return false;
|
|
3927
|
-
u[String(val)] = true;
|
|
3928
|
-
return true;
|
|
3929
|
-
});
|
|
4139
|
+
arr = toArray(arr);
|
|
4140
|
+
this.context.memoryLimit.use(arr.length);
|
|
4141
|
+
return __spreadArray([], __read(new Set(arr)), false);
|
|
3930
4142
|
}
|
|
3931
4143
|
function sample(v, count) {
|
|
3932
4144
|
if (count === void 0) { count = 1; }
|
|
@@ -3935,6 +4147,7 @@
|
|
|
3935
4147
|
return [];
|
|
3936
4148
|
if (!isArray(v))
|
|
3937
4149
|
v = stringify(v);
|
|
4150
|
+
this.context.memoryLimit.use(count);
|
|
3938
4151
|
var shuffled = __spreadArray([], __read(v), false).sort(function () { return Math.random() - 0.5; });
|
|
3939
4152
|
if (count === 1)
|
|
3940
4153
|
return shuffled[0];
|
|
@@ -3970,6 +4183,9 @@
|
|
|
3970
4183
|
});
|
|
3971
4184
|
|
|
3972
4185
|
function date(v, format, timezoneOffset) {
|
|
4186
|
+
var _a, _b, _c;
|
|
4187
|
+
var size = ((_a = v === null || v === void 0 ? void 0 : v.length) !== null && _a !== void 0 ? _a : 0) + ((_b = format === null || format === void 0 ? void 0 : format.length) !== null && _b !== void 0 ? _b : 0) + ((_c = timezoneOffset === null || timezoneOffset === void 0 ? void 0 : timezoneOffset.length) !== null && _c !== void 0 ? _c : 0);
|
|
4188
|
+
this.context.memoryLimit.use(size);
|
|
3973
4189
|
var date = parseDate(v, this.context.opts, timezoneOffset);
|
|
3974
4190
|
if (!date)
|
|
3975
4191
|
return v;
|
|
@@ -4003,39 +4219,30 @@
|
|
|
4003
4219
|
}
|
|
4004
4220
|
function parseDate(v, opts, timezoneOffset) {
|
|
4005
4221
|
var date;
|
|
4222
|
+
var defaultTimezoneOffset = timezoneOffset !== null && timezoneOffset !== void 0 ? timezoneOffset : opts.timezoneOffset;
|
|
4223
|
+
var locale = opts.locale;
|
|
4006
4224
|
v = toValue(v);
|
|
4007
4225
|
if (v === 'now' || v === 'today') {
|
|
4008
|
-
date = new Date();
|
|
4226
|
+
date = new LiquidDate(Date.now(), locale, defaultTimezoneOffset);
|
|
4009
4227
|
}
|
|
4010
4228
|
else if (isNumber(v)) {
|
|
4011
|
-
date = new
|
|
4229
|
+
date = new LiquidDate(v * 1000, locale, defaultTimezoneOffset);
|
|
4012
4230
|
}
|
|
4013
4231
|
else if (isString(v)) {
|
|
4014
4232
|
if (/^\d+$/.test(v)) {
|
|
4015
|
-
date = new
|
|
4233
|
+
date = new LiquidDate(+v * 1000, locale, defaultTimezoneOffset);
|
|
4016
4234
|
}
|
|
4017
|
-
else if (opts.preserveTimezones) {
|
|
4018
|
-
date =
|
|
4235
|
+
else if (opts.preserveTimezones && timezoneOffset === undefined) {
|
|
4236
|
+
date = LiquidDate.createDateFixedToTimezone(v, locale);
|
|
4019
4237
|
}
|
|
4020
4238
|
else {
|
|
4021
|
-
date = new
|
|
4239
|
+
date = new LiquidDate(v, locale, defaultTimezoneOffset);
|
|
4022
4240
|
}
|
|
4023
4241
|
}
|
|
4024
4242
|
else {
|
|
4025
|
-
date = v;
|
|
4026
|
-
}
|
|
4027
|
-
if (!isValidDate(date))
|
|
4028
|
-
return;
|
|
4029
|
-
if (timezoneOffset !== undefined) {
|
|
4030
|
-
date = new TimezoneDate(date, timezoneOffset);
|
|
4243
|
+
date = new LiquidDate(v, locale, defaultTimezoneOffset);
|
|
4031
4244
|
}
|
|
4032
|
-
|
|
4033
|
-
date = new TimezoneDate(date, opts.timezoneOffset);
|
|
4034
|
-
}
|
|
4035
|
-
return date;
|
|
4036
|
-
}
|
|
4037
|
-
function isValidDate(date) {
|
|
4038
|
-
return (date instanceof Date || date instanceof TimezoneDate) && !isNaN(date.getTime());
|
|
4245
|
+
return date.valid() ? date : undefined;
|
|
4039
4246
|
}
|
|
4040
4247
|
|
|
4041
4248
|
var dateFilters = /*#__PURE__*/Object.freeze({
|
|
@@ -4057,33 +4264,50 @@
|
|
|
4057
4264
|
var rNonCJKWord = /[^\u4E00-\u9FFF\uF900-\uFAFF\u3400-\u4DBF\u3040-\u309F\u30A0-\u30FF\uAC00-\uD7AF\s]+/gu;
|
|
4058
4265
|
function append(v, arg) {
|
|
4059
4266
|
assert(arguments.length === 2, 'append expect 2 arguments');
|
|
4060
|
-
|
|
4267
|
+
var lhs = stringify(v);
|
|
4268
|
+
var rhs = stringify(arg);
|
|
4269
|
+
this.context.memoryLimit.use(lhs.length + rhs.length);
|
|
4270
|
+
return lhs + rhs;
|
|
4061
4271
|
}
|
|
4062
4272
|
function prepend(v, arg) {
|
|
4063
4273
|
assert(arguments.length === 2, 'prepend expect 2 arguments');
|
|
4064
|
-
|
|
4274
|
+
var lhs = stringify(v);
|
|
4275
|
+
var rhs = stringify(arg);
|
|
4276
|
+
this.context.memoryLimit.use(lhs.length + rhs.length);
|
|
4277
|
+
return rhs + lhs;
|
|
4065
4278
|
}
|
|
4066
4279
|
function lstrip(v, chars) {
|
|
4280
|
+
var str = stringify(v);
|
|
4281
|
+
this.context.memoryLimit.use(str.length);
|
|
4067
4282
|
if (chars) {
|
|
4068
4283
|
chars = escapeRegExp(stringify(chars));
|
|
4069
|
-
return
|
|
4284
|
+
return str.replace(new RegExp("^[".concat(chars, "]+"), 'g'), '');
|
|
4070
4285
|
}
|
|
4071
|
-
return
|
|
4286
|
+
return str.replace(/^\s+/, '');
|
|
4072
4287
|
}
|
|
4073
4288
|
function downcase(v) {
|
|
4074
|
-
|
|
4289
|
+
var str = stringify(v);
|
|
4290
|
+
this.context.memoryLimit.use(str.length);
|
|
4291
|
+
return str.toLowerCase();
|
|
4075
4292
|
}
|
|
4076
|
-
function upcase(
|
|
4293
|
+
function upcase(v) {
|
|
4294
|
+
var str = stringify(v);
|
|
4295
|
+
this.context.memoryLimit.use(str.length);
|
|
4077
4296
|
return stringify(str).toUpperCase();
|
|
4078
4297
|
}
|
|
4079
4298
|
function remove(v, arg) {
|
|
4080
|
-
|
|
4299
|
+
var str = stringify(v);
|
|
4300
|
+
this.context.memoryLimit.use(str.length);
|
|
4301
|
+
return str.split(stringify(arg)).join('');
|
|
4081
4302
|
}
|
|
4082
4303
|
function remove_first(v, l) {
|
|
4083
|
-
|
|
4304
|
+
var str = stringify(v);
|
|
4305
|
+
this.context.memoryLimit.use(str.length);
|
|
4306
|
+
return str.replace(stringify(l), '');
|
|
4084
4307
|
}
|
|
4085
4308
|
function remove_last(v, l) {
|
|
4086
4309
|
var str = stringify(v);
|
|
4310
|
+
this.context.memoryLimit.use(str.length);
|
|
4087
4311
|
var pattern = stringify(l);
|
|
4088
4312
|
var index = str.lastIndexOf(pattern);
|
|
4089
4313
|
if (index === -1)
|
|
@@ -4091,14 +4315,18 @@
|
|
|
4091
4315
|
return str.substring(0, index) + str.substring(index + pattern.length);
|
|
4092
4316
|
}
|
|
4093
4317
|
function rstrip(str, chars) {
|
|
4318
|
+
str = stringify(str);
|
|
4319
|
+
this.context.memoryLimit.use(str.length);
|
|
4094
4320
|
if (chars) {
|
|
4095
4321
|
chars = escapeRegExp(stringify(chars));
|
|
4096
|
-
return
|
|
4322
|
+
return str.replace(new RegExp("[".concat(chars, "]+$"), 'g'), '');
|
|
4097
4323
|
}
|
|
4098
|
-
return
|
|
4324
|
+
return str.replace(/\s+$/, '');
|
|
4099
4325
|
}
|
|
4100
4326
|
function split(v, arg) {
|
|
4101
|
-
var
|
|
4327
|
+
var str = stringify(v);
|
|
4328
|
+
this.context.memoryLimit.use(str.length);
|
|
4329
|
+
var arr = str.split(stringify(arg));
|
|
4102
4330
|
// align to ruby split, which is the behavior of shopify/liquid
|
|
4103
4331
|
// see: https://ruby-doc.org/core-2.4.0/String.html#method-i-split
|
|
4104
4332
|
while (arr.length && arr[arr.length - 1] === '')
|
|
@@ -4106,29 +4334,39 @@
|
|
|
4106
4334
|
return arr;
|
|
4107
4335
|
}
|
|
4108
4336
|
function strip(v, chars) {
|
|
4337
|
+
var str = stringify(v);
|
|
4338
|
+
this.context.memoryLimit.use(str.length);
|
|
4109
4339
|
if (chars) {
|
|
4110
4340
|
chars = escapeRegExp(stringify(chars));
|
|
4111
|
-
return
|
|
4341
|
+
return str
|
|
4112
4342
|
.replace(new RegExp("^[".concat(chars, "]+"), 'g'), '')
|
|
4113
4343
|
.replace(new RegExp("[".concat(chars, "]+$"), 'g'), '');
|
|
4114
4344
|
}
|
|
4115
|
-
return
|
|
4345
|
+
return str.trim();
|
|
4116
4346
|
}
|
|
4117
4347
|
function strip_newlines(v) {
|
|
4118
|
-
|
|
4348
|
+
var str = stringify(v);
|
|
4349
|
+
this.context.memoryLimit.use(str.length);
|
|
4350
|
+
return str.replace(/\r?\n/gm, '');
|
|
4119
4351
|
}
|
|
4120
4352
|
function capitalize(str) {
|
|
4121
4353
|
str = stringify(str);
|
|
4354
|
+
this.context.memoryLimit.use(str.length);
|
|
4122
4355
|
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
|
|
4123
4356
|
}
|
|
4124
4357
|
function replace(v, pattern, replacement) {
|
|
4125
|
-
|
|
4358
|
+
var str = stringify(v);
|
|
4359
|
+
this.context.memoryLimit.use(str.length);
|
|
4360
|
+
return str.split(stringify(pattern)).join(replacement);
|
|
4126
4361
|
}
|
|
4127
4362
|
function replace_first(v, arg1, arg2) {
|
|
4128
|
-
|
|
4363
|
+
var str = stringify(v);
|
|
4364
|
+
this.context.memoryLimit.use(str.length);
|
|
4365
|
+
return str.replace(stringify(arg1), arg2);
|
|
4129
4366
|
}
|
|
4130
4367
|
function replace_last(v, arg1, arg2) {
|
|
4131
4368
|
var str = stringify(v);
|
|
4369
|
+
this.context.memoryLimit.use(str.length);
|
|
4132
4370
|
var pattern = stringify(arg1);
|
|
4133
4371
|
var index = str.lastIndexOf(pattern);
|
|
4134
4372
|
if (index === -1)
|
|
@@ -4139,15 +4377,18 @@
|
|
|
4139
4377
|
function truncate(v, l, o) {
|
|
4140
4378
|
if (l === void 0) { l = 50; }
|
|
4141
4379
|
if (o === void 0) { o = '...'; }
|
|
4142
|
-
|
|
4143
|
-
|
|
4380
|
+
var str = stringify(v);
|
|
4381
|
+
this.context.memoryLimit.use(str.length);
|
|
4382
|
+
if (str.length <= l)
|
|
4144
4383
|
return v;
|
|
4145
|
-
return
|
|
4384
|
+
return str.substring(0, l - o.length) + o;
|
|
4146
4385
|
}
|
|
4147
4386
|
function truncatewords(v, words, o) {
|
|
4148
4387
|
if (words === void 0) { words = 15; }
|
|
4149
4388
|
if (o === void 0) { o = '...'; }
|
|
4150
|
-
var
|
|
4389
|
+
var str = stringify(v);
|
|
4390
|
+
this.context.memoryLimit.use(str.length);
|
|
4391
|
+
var arr = str.split(/\s+/);
|
|
4151
4392
|
if (words <= 0)
|
|
4152
4393
|
words = 1;
|
|
4153
4394
|
var ret = arr.slice(0, words).join(' ');
|
|
@@ -4156,11 +4397,14 @@
|
|
|
4156
4397
|
return ret;
|
|
4157
4398
|
}
|
|
4158
4399
|
function normalize_whitespace(v) {
|
|
4159
|
-
|
|
4160
|
-
|
|
4400
|
+
var str = stringify(v);
|
|
4401
|
+
this.context.memoryLimit.use(str.length);
|
|
4402
|
+
return str.replace(/\s+/g, ' ');
|
|
4161
4403
|
}
|
|
4162
4404
|
function number_of_words(input, mode) {
|
|
4163
|
-
|
|
4405
|
+
var str = stringify(input);
|
|
4406
|
+
this.context.memoryLimit.use(str.length);
|
|
4407
|
+
input = str.trim();
|
|
4164
4408
|
if (!input)
|
|
4165
4409
|
return 0;
|
|
4166
4410
|
switch (mode) {
|
|
@@ -4179,6 +4423,7 @@
|
|
|
4179
4423
|
}
|
|
4180
4424
|
function array_to_sentence_string(array, connector) {
|
|
4181
4425
|
if (connector === void 0) { connector = 'and'; }
|
|
4426
|
+
this.context.memoryLimit.use(array.length);
|
|
4182
4427
|
switch (array.length) {
|
|
4183
4428
|
case 0:
|
|
4184
4429
|
return '';
|
|
@@ -4250,7 +4495,7 @@
|
|
|
4250
4495
|
var MODIFIERS = ['offset', 'limit', 'reversed'];
|
|
4251
4496
|
var default_1$1 = /** @class */ (function (_super) {
|
|
4252
4497
|
__extends(default_1, _super);
|
|
4253
|
-
function default_1(token, remainTokens, liquid) {
|
|
4498
|
+
function default_1(token, remainTokens, liquid, parser) {
|
|
4254
4499
|
var _this = _super.call(this, token, remainTokens, liquid) || this;
|
|
4255
4500
|
var variable = _this.tokenizer.readIdentifier();
|
|
4256
4501
|
var inStr = _this.tokenizer.readIdentifier();
|
|
@@ -4260,18 +4505,16 @@
|
|
|
4260
4505
|
}
|
|
4261
4506
|
_this.variable = variable.content;
|
|
4262
4507
|
_this.collection = collection;
|
|
4263
|
-
_this.hash = new Hash(_this.tokenizer.remaining());
|
|
4508
|
+
_this.hash = new Hash(_this.tokenizer.remaining(), liquid.options.keyValueSeparator);
|
|
4264
4509
|
_this.templates = [];
|
|
4265
4510
|
_this.elseTemplates = [];
|
|
4266
4511
|
var p;
|
|
4267
|
-
var stream =
|
|
4512
|
+
var stream = parser.parseStream(remainTokens)
|
|
4268
4513
|
.on('start', function () { return (p = _this.templates); })
|
|
4269
|
-
.on('tag:else', function () {
|
|
4270
|
-
.on('tag:endfor', function () {
|
|
4514
|
+
.on('tag:else', function (tag) { assertEmpty(tag.args); p = _this.elseTemplates; })
|
|
4515
|
+
.on('tag:endfor', function (tag) { assertEmpty(tag.args); stream.stop(); })
|
|
4271
4516
|
.on('template', function (tpl) { return p.push(tpl); })
|
|
4272
|
-
.on('end', function () {
|
|
4273
|
-
throw new Error("tag ".concat(token.getText(), " not closed"));
|
|
4274
|
-
});
|
|
4517
|
+
.on('end', function () { throw new Error("tag ".concat(token.getText(), " not closed")); });
|
|
4275
4518
|
stream.start();
|
|
4276
4519
|
return _this;
|
|
4277
4520
|
}
|
|
@@ -4364,7 +4607,7 @@
|
|
|
4364
4607
|
|
|
4365
4608
|
var default_1$2 = /** @class */ (function (_super) {
|
|
4366
4609
|
__extends(default_1, _super);
|
|
4367
|
-
function default_1(tagToken, remainTokens, liquid) {
|
|
4610
|
+
function default_1(tagToken, remainTokens, liquid, parser) {
|
|
4368
4611
|
var _this = _super.call(this, tagToken, remainTokens, liquid) || this;
|
|
4369
4612
|
_this.templates = [];
|
|
4370
4613
|
_this.variable = _this.readVariableName();
|
|
@@ -4372,7 +4615,7 @@
|
|
|
4372
4615
|
var token = remainTokens.shift();
|
|
4373
4616
|
if (isTagToken(token) && token.name === 'endcapture')
|
|
4374
4617
|
return _this;
|
|
4375
|
-
_this.templates.push(
|
|
4618
|
+
_this.templates.push(parser.parseToken(token, remainTokens));
|
|
4376
4619
|
}
|
|
4377
4620
|
throw new Error("tag ".concat(tagToken.getText(), " not closed"));
|
|
4378
4621
|
}
|
|
@@ -4404,7 +4647,7 @@
|
|
|
4404
4647
|
|
|
4405
4648
|
var default_1$3 = /** @class */ (function (_super) {
|
|
4406
4649
|
__extends(default_1, _super);
|
|
4407
|
-
function default_1(tagToken, remainTokens, liquid) {
|
|
4650
|
+
function default_1(tagToken, remainTokens, liquid, parser) {
|
|
4408
4651
|
var _this = _super.call(this, tagToken, remainTokens, liquid) || this;
|
|
4409
4652
|
_this.branches = [];
|
|
4410
4653
|
_this.elseTemplates = [];
|
|
@@ -4412,7 +4655,7 @@
|
|
|
4412
4655
|
_this.elseTemplates = [];
|
|
4413
4656
|
var p = [];
|
|
4414
4657
|
var elseCount = 0;
|
|
4415
|
-
var stream =
|
|
4658
|
+
var stream = parser.parseStream(remainTokens)
|
|
4416
4659
|
.on('tag:when', function (token) {
|
|
4417
4660
|
if (elseCount > 0) {
|
|
4418
4661
|
return;
|
|
@@ -4545,10 +4788,10 @@
|
|
|
4545
4788
|
|
|
4546
4789
|
var default_1$5 = /** @class */ (function (_super) {
|
|
4547
4790
|
__extends(default_1, _super);
|
|
4548
|
-
function default_1(token, remainTokens, liquid) {
|
|
4791
|
+
function default_1(token, remainTokens, liquid, parser) {
|
|
4549
4792
|
var _this = _super.call(this, token, remainTokens, liquid) || this;
|
|
4550
4793
|
var tokenizer = _this.tokenizer;
|
|
4551
|
-
_this.file = parseFilePath(tokenizer, _this.liquid);
|
|
4794
|
+
_this.file = parseFilePath(tokenizer, _this.liquid, parser);
|
|
4552
4795
|
_this.currentFile = token.file;
|
|
4553
4796
|
while (!tokenizer.end()) {
|
|
4554
4797
|
tokenizer.skipBlank();
|
|
@@ -4582,7 +4825,7 @@
|
|
|
4582
4825
|
tokenizer.p = begin;
|
|
4583
4826
|
break;
|
|
4584
4827
|
}
|
|
4585
|
-
_this.hash = new Hash(tokenizer.remaining());
|
|
4828
|
+
_this.hash = new Hash(tokenizer.remaining(), liquid.options.keyValueSeparator);
|
|
4586
4829
|
return _this;
|
|
4587
4830
|
}
|
|
4588
4831
|
default_1.prototype.render = function (ctx, emitter) {
|
|
@@ -4596,7 +4839,7 @@
|
|
|
4596
4839
|
case 1:
|
|
4597
4840
|
filepath = (_k.sent());
|
|
4598
4841
|
assert(filepath, function () { return "illegal file path \"".concat(filepath, "\""); });
|
|
4599
|
-
childCtx =
|
|
4842
|
+
childCtx = ctx.spawn();
|
|
4600
4843
|
scope = childCtx.bottom();
|
|
4601
4844
|
_b = __assign;
|
|
4602
4845
|
_c = [scope];
|
|
@@ -4670,7 +4913,7 @@
|
|
|
4670
4913
|
* @return Token for expression (not quoted)
|
|
4671
4914
|
* @throws TypeError if cannot read next token
|
|
4672
4915
|
*/
|
|
4673
|
-
function parseFilePath(tokenizer, liquid) {
|
|
4916
|
+
function parseFilePath(tokenizer, liquid, parser) {
|
|
4674
4917
|
if (liquid.options.dynamicPartials) {
|
|
4675
4918
|
var file = tokenizer.readValue();
|
|
4676
4919
|
tokenizer.assert(file, 'illegal file path');
|
|
@@ -4678,13 +4921,13 @@
|
|
|
4678
4921
|
return;
|
|
4679
4922
|
if (isQuotedToken(file)) {
|
|
4680
4923
|
// for filenames like "files/{{file}}", eval as liquid template
|
|
4681
|
-
var templates_1 =
|
|
4924
|
+
var templates_1 = parser.parse(evalQuotedToken(file));
|
|
4682
4925
|
return optimize(templates_1);
|
|
4683
4926
|
}
|
|
4684
4927
|
return file;
|
|
4685
4928
|
}
|
|
4686
4929
|
var tokens = __spreadArray([], __read(tokenizer.readFileNameTemplate(liquid.options)), false);
|
|
4687
|
-
var templates = optimize(
|
|
4930
|
+
var templates = optimize(parser.parseTokens(tokens));
|
|
4688
4931
|
return templates === 'none' ? undefined : templates;
|
|
4689
4932
|
}
|
|
4690
4933
|
function optimize(templates) {
|
|
@@ -4709,10 +4952,10 @@
|
|
|
4709
4952
|
|
|
4710
4953
|
var default_1$6 = /** @class */ (function (_super) {
|
|
4711
4954
|
__extends(default_1, _super);
|
|
4712
|
-
function default_1(token, remainTokens, liquid) {
|
|
4955
|
+
function default_1(token, remainTokens, liquid, parser) {
|
|
4713
4956
|
var _this = _super.call(this, token, remainTokens, liquid) || this;
|
|
4714
4957
|
var tokenizer = token.tokenizer;
|
|
4715
|
-
_this['file'] = parseFilePath(tokenizer, _this.liquid);
|
|
4958
|
+
_this['file'] = parseFilePath(tokenizer, _this.liquid, parser);
|
|
4716
4959
|
_this['currentFile'] = token.file;
|
|
4717
4960
|
var begin = tokenizer.p;
|
|
4718
4961
|
var withStr = tokenizer.readIdentifier();
|
|
@@ -4726,7 +4969,7 @@
|
|
|
4726
4969
|
}
|
|
4727
4970
|
else
|
|
4728
4971
|
tokenizer.p = begin;
|
|
4729
|
-
_this.hash = new Hash(tokenizer.remaining(),
|
|
4972
|
+
_this.hash = new Hash(tokenizer.remaining(), liquid.options.jekyllInclude || liquid.options.keyValueSeparator);
|
|
4730
4973
|
return _this;
|
|
4731
4974
|
}
|
|
4732
4975
|
default_1.prototype.render = function (ctx, emitter) {
|
|
@@ -4836,37 +5079,29 @@
|
|
|
4836
5079
|
|
|
4837
5080
|
var default_1$9 = /** @class */ (function (_super) {
|
|
4838
5081
|
__extends(default_1, _super);
|
|
4839
|
-
function default_1(tagToken, remainTokens, liquid) {
|
|
5082
|
+
function default_1(tagToken, remainTokens, liquid, parser) {
|
|
4840
5083
|
var _this = _super.call(this, tagToken, remainTokens, liquid) || this;
|
|
4841
5084
|
_this.branches = [];
|
|
4842
|
-
_this.elseTemplates = [];
|
|
4843
5085
|
var p = [];
|
|
4844
|
-
|
|
4845
|
-
liquid.parser.parseStream(remainTokens)
|
|
5086
|
+
parser.parseStream(remainTokens)
|
|
4846
5087
|
.on('start', function () { return _this.branches.push({
|
|
4847
5088
|
value: new Value(tagToken.args, _this.liquid),
|
|
4848
5089
|
templates: (p = [])
|
|
4849
5090
|
}); })
|
|
4850
5091
|
.on('tag:elsif', function (token) {
|
|
4851
|
-
|
|
4852
|
-
p = [];
|
|
4853
|
-
return;
|
|
4854
|
-
}
|
|
5092
|
+
assert(!_this.elseTemplates, 'unexpected elsif after else');
|
|
4855
5093
|
_this.branches.push({
|
|
4856
5094
|
value: new Value(token.args, _this.liquid),
|
|
4857
5095
|
templates: (p = [])
|
|
4858
5096
|
});
|
|
4859
5097
|
})
|
|
4860
|
-
.on('tag:else', function () {
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
|
|
4864
|
-
.on('tag:endif', function () { this.stop(); })
|
|
4865
|
-
.on('template', function (tpl) {
|
|
4866
|
-
if (p !== _this.elseTemplates || elseCount === 1) {
|
|
4867
|
-
p.push(tpl);
|
|
4868
|
-
}
|
|
5098
|
+
.on('tag:else', function (tag) {
|
|
5099
|
+
assertEmpty(tag.args);
|
|
5100
|
+
assert(!_this.elseTemplates, 'duplicated else');
|
|
5101
|
+
p = _this.elseTemplates = [];
|
|
4869
5102
|
})
|
|
5103
|
+
.on('tag:endif', function (tag) { assertEmpty(tag.args); this.stop(); })
|
|
5104
|
+
.on('template', function (tpl) { return p.push(tpl); })
|
|
4870
5105
|
.on('end', function () { throw new Error("tag ".concat(tagToken.getText(), " not closed")); })
|
|
4871
5106
|
.start();
|
|
4872
5107
|
return _this;
|
|
@@ -4908,7 +5143,7 @@
|
|
|
4908
5143
|
}
|
|
4909
5144
|
finally { if (e_1) throw e_1.error; }
|
|
4910
5145
|
return [7 /*endfinally*/];
|
|
4911
|
-
case 9: return [4 /*yield*/, r.renderTemplates(this.elseTemplates, ctx, emitter)];
|
|
5146
|
+
case 9: return [4 /*yield*/, r.renderTemplates(this.elseTemplates || [], ctx, emitter)];
|
|
4912
5147
|
case 10:
|
|
4913
5148
|
_e.sent();
|
|
4914
5149
|
return [2 /*return*/];
|
|
@@ -4939,12 +5174,12 @@
|
|
|
4939
5174
|
|
|
4940
5175
|
var default_1$b = /** @class */ (function (_super) {
|
|
4941
5176
|
__extends(default_1, _super);
|
|
4942
|
-
function default_1(token, remainTokens, liquid) {
|
|
5177
|
+
function default_1(token, remainTokens, liquid, parser) {
|
|
4943
5178
|
var _this = _super.call(this, token, remainTokens, liquid) || this;
|
|
4944
|
-
_this.file = parseFilePath(_this.tokenizer, _this.liquid);
|
|
5179
|
+
_this.file = parseFilePath(_this.tokenizer, _this.liquid, parser);
|
|
4945
5180
|
_this['currentFile'] = token.file;
|
|
4946
|
-
_this.args = new Hash(_this.tokenizer.remaining());
|
|
4947
|
-
_this.templates =
|
|
5181
|
+
_this.args = new Hash(_this.tokenizer.remaining(), liquid.options.keyValueSeparator);
|
|
5182
|
+
_this.templates = parser.parseTokens(remainTokens);
|
|
4948
5183
|
return _this;
|
|
4949
5184
|
}
|
|
4950
5185
|
default_1.prototype.render = function (ctx, emitter) {
|
|
@@ -4996,7 +5231,7 @@
|
|
|
4996
5231
|
|
|
4997
5232
|
var default_1$c = /** @class */ (function (_super) {
|
|
4998
5233
|
__extends(default_1, _super);
|
|
4999
|
-
function default_1(token, remainTokens, liquid) {
|
|
5234
|
+
function default_1(token, remainTokens, liquid, parser) {
|
|
5000
5235
|
var _this = _super.call(this, token, remainTokens, liquid) || this;
|
|
5001
5236
|
_this.templates = [];
|
|
5002
5237
|
var match = /\w+/.exec(token.args);
|
|
@@ -5005,7 +5240,7 @@
|
|
|
5005
5240
|
var token_1 = remainTokens.shift();
|
|
5006
5241
|
if (isTagToken(token_1) && token_1.name === 'endblock')
|
|
5007
5242
|
return _this;
|
|
5008
|
-
var template =
|
|
5243
|
+
var template = parser.parseToken(token_1, remainTokens);
|
|
5009
5244
|
_this.templates.push(template);
|
|
5010
5245
|
}
|
|
5011
5246
|
throw new Error("tag ".concat(token.getText(), " not closed"));
|
|
@@ -5098,7 +5333,7 @@
|
|
|
5098
5333
|
|
|
5099
5334
|
var default_1$e = /** @class */ (function (_super) {
|
|
5100
5335
|
__extends(default_1, _super);
|
|
5101
|
-
function default_1(tagToken, remainTokens, liquid) {
|
|
5336
|
+
function default_1(tagToken, remainTokens, liquid, parser) {
|
|
5102
5337
|
var _this = _super.call(this, tagToken, remainTokens, liquid) || this;
|
|
5103
5338
|
var variable = _this.tokenizer.readIdentifier();
|
|
5104
5339
|
_this.tokenizer.skipBlank();
|
|
@@ -5109,10 +5344,10 @@
|
|
|
5109
5344
|
}
|
|
5110
5345
|
_this.variable = variable.content;
|
|
5111
5346
|
_this.collection = collectionToken;
|
|
5112
|
-
_this.args = new Hash(_this.tokenizer.remaining());
|
|
5347
|
+
_this.args = new Hash(_this.tokenizer.remaining(), liquid.options.keyValueSeparator);
|
|
5113
5348
|
_this.templates = [];
|
|
5114
5349
|
var p;
|
|
5115
|
-
var stream =
|
|
5350
|
+
var stream = parser.parseStream(remainTokens)
|
|
5116
5351
|
.on('start', function () { return (p = _this.templates); })
|
|
5117
5352
|
.on('tag:endtablerow', function () { return stream.stop(); })
|
|
5118
5353
|
.on('template', function (tpl) { return p.push(tpl); })
|
|
@@ -5174,13 +5409,13 @@
|
|
|
5174
5409
|
|
|
5175
5410
|
var default_1$f = /** @class */ (function (_super) {
|
|
5176
5411
|
__extends(default_1, _super);
|
|
5177
|
-
function default_1(tagToken, remainTokens, liquid) {
|
|
5412
|
+
function default_1(tagToken, remainTokens, liquid, parser) {
|
|
5178
5413
|
var _this = _super.call(this, tagToken, remainTokens, liquid) || this;
|
|
5179
5414
|
_this.branches = [];
|
|
5180
5415
|
_this.elseTemplates = [];
|
|
5181
5416
|
var p = [];
|
|
5182
5417
|
var elseCount = 0;
|
|
5183
|
-
|
|
5418
|
+
parser.parseStream(remainTokens)
|
|
5184
5419
|
.on('start', function () { return _this.branches.push({
|
|
5185
5420
|
value: new Value(tagToken.args, _this.liquid),
|
|
5186
5421
|
test: isFalsy,
|
|
@@ -5310,10 +5545,10 @@
|
|
|
5310
5545
|
|
|
5311
5546
|
var default_1$j = /** @class */ (function (_super) {
|
|
5312
5547
|
__extends(default_1, _super);
|
|
5313
|
-
function default_1(token, remainTokens, liquid) {
|
|
5548
|
+
function default_1(token, remainTokens, liquid, parser) {
|
|
5314
5549
|
var _this = _super.call(this, token, remainTokens, liquid) || this;
|
|
5315
5550
|
var tokens = _this.tokenizer.readLiquidTagTokens(_this.liquid.options);
|
|
5316
|
-
_this.templates =
|
|
5551
|
+
_this.templates = parser.parseTokens(tokens);
|
|
5317
5552
|
return _this;
|
|
5318
5553
|
}
|
|
5319
5554
|
default_1.prototype.render = function (ctx, emitter) {
|
|
@@ -5374,12 +5609,14 @@
|
|
|
5374
5609
|
this.filters = {};
|
|
5375
5610
|
this.tags = {};
|
|
5376
5611
|
this.options = normalize(opts);
|
|
5612
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
5377
5613
|
this.parser = new Parser(this);
|
|
5378
5614
|
forOwn(tags, function (conf, name) { return _this.registerTag(name, conf); });
|
|
5379
5615
|
forOwn(filters, function (handler, name) { return _this.registerFilter(name, handler); });
|
|
5380
5616
|
}
|
|
5381
5617
|
Liquid.prototype.parse = function (html, filepath) {
|
|
5382
|
-
|
|
5618
|
+
var parser = new Parser(this);
|
|
5619
|
+
return parser.parse(html, filepath);
|
|
5383
5620
|
};
|
|
5384
5621
|
Liquid.prototype._render = function (tpl, scope, renderOptions) {
|
|
5385
5622
|
var ctx = scope instanceof Context ? scope : new Context(scope, this.options, renderOptions);
|
|
@@ -5415,23 +5652,23 @@
|
|
|
5415
5652
|
return toValueSync(this._parseAndRender(html, scope, __assign(__assign({}, renderOptions), { sync: true })));
|
|
5416
5653
|
};
|
|
5417
5654
|
Liquid.prototype._parsePartialFile = function (file, sync, currentFile) {
|
|
5418
|
-
return this.
|
|
5655
|
+
return new Parser(this).parseFile(file, sync, LookupType.Partials, currentFile);
|
|
5419
5656
|
};
|
|
5420
5657
|
Liquid.prototype._parseLayoutFile = function (file, sync, currentFile) {
|
|
5421
|
-
return this.
|
|
5658
|
+
return new Parser(this).parseFile(file, sync, LookupType.Layouts, currentFile);
|
|
5422
5659
|
};
|
|
5423
5660
|
Liquid.prototype._parseFile = function (file, sync, lookupType, currentFile) {
|
|
5424
|
-
return this.
|
|
5661
|
+
return new Parser(this).parseFile(file, sync, lookupType, currentFile);
|
|
5425
5662
|
};
|
|
5426
5663
|
Liquid.prototype.parseFile = function (file, lookupType) {
|
|
5427
5664
|
return __awaiter(this, void 0, void 0, function () {
|
|
5428
5665
|
return __generator(this, function (_a) {
|
|
5429
|
-
return [2 /*return*/, toPromise(this.
|
|
5666
|
+
return [2 /*return*/, toPromise(new Parser(this).parseFile(file, false, lookupType))];
|
|
5430
5667
|
});
|
|
5431
5668
|
});
|
|
5432
5669
|
};
|
|
5433
5670
|
Liquid.prototype.parseFileSync = function (file, lookupType) {
|
|
5434
|
-
return toValueSync(this.
|
|
5671
|
+
return toValueSync(new Parser(this).parseFile(file, true, lookupType));
|
|
5435
5672
|
};
|
|
5436
5673
|
Liquid.prototype._renderFile = function (file, ctx, renderFileOptions) {
|
|
5437
5674
|
var templates;
|
|
@@ -5511,7 +5748,7 @@
|
|
|
5511
5748
|
}());
|
|
5512
5749
|
|
|
5513
5750
|
/* istanbul ignore file */
|
|
5514
|
-
var version = '10.
|
|
5751
|
+
var version = '10.18.0';
|
|
5515
5752
|
|
|
5516
5753
|
exports.AssertionError = AssertionError;
|
|
5517
5754
|
exports.AssignTag = default_1;
|
|
@@ -5547,7 +5784,6 @@
|
|
|
5547
5784
|
exports.TablerowTag = default_1$e;
|
|
5548
5785
|
exports.Tag = Tag;
|
|
5549
5786
|
exports.TagToken = TagToken;
|
|
5550
|
-
exports.TimezoneDate = TimezoneDate;
|
|
5551
5787
|
exports.Token = Token;
|
|
5552
5788
|
exports.TokenizationError = TokenizationError;
|
|
5553
5789
|
exports.Tokenizer = Tokenizer;
|