diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..e2d1c21114 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +## [6.4.1](https://github.com/harttle/liquidjs/compare/v6.4.0...v6.4.1) (2019-01-28) + + +### Bug Fixes + +* regenerator undefined ([a2caeb5](https://github.com/harttle/liquidjs/commit/a2caeb5)) diff --git a/dist/liquid.common.js b/dist/liquid.common.js index b9dad60d91..3747303ab5 100644 --- a/dist/liquid.common.js +++ b/dist/liquid.common.js @@ -1,5 +1,5 @@ /* - * liquidjs@6.3.0, https://github.com/harttle/liquidjs + * liquidjs@6.4.1, https://github.com/harttle/liquidjs * (c) 2016-2019 harttle * Released under the MIT License. */ @@ -52,7 +52,7 @@ var asyncToGenerator = function (fn) { * LICENSE file in the root directory of this source tree. */ -!function (global) { +var regeneratorRuntime$1 = function (exports) { var Op = Object.prototype; var hasOwn = Op.hasOwnProperty; @@ -62,23 +62,6 @@ var asyncToGenerator = function (fn) { var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - var inModule = (typeof module === "undefined" ? "undefined" : _typeof(module)) === "object"; - var runtime = global.regeneratorRuntime; - if (runtime) { - if (inModule) { - // If regeneratorRuntime is defined globally and we're in a module, - // make the exports object identical to regeneratorRuntime. - module.exports = runtime; - } - // Don't bother evaluating the rest of this file if the runtime was - // already defined globally. - return; - } - - // Define the runtime globally (as expected by generated code) as either - // module.exports (if we're in a module) or a new, empty object. - runtime = global.regeneratorRuntime = inModule ? module.exports : {}; - function wrap(innerFn, outerFn, self, tryLocsList) { // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; @@ -91,7 +74,7 @@ var asyncToGenerator = function (fn) { return generator; } - runtime.wrap = wrap; + exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion // record like context.tryEntries[i].completion. This interface could @@ -158,7 +141,7 @@ var asyncToGenerator = function (fn) { }); } - runtime.isGeneratorFunction = function (genFun) { + exports.isGeneratorFunction = function (genFun) { var ctor = typeof genFun === "function" && genFun.constructor; return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can @@ -166,7 +149,7 @@ var asyncToGenerator = function (fn) { (ctor.displayName || ctor.name) === "GeneratorFunction" : false; }; - runtime.mark = function (genFun) { + exports.mark = function (genFun) { if (Object.setPrototypeOf) { Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); } else { @@ -183,7 +166,7 @@ var asyncToGenerator = function (fn) { // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test // `hasOwn.call(value, "__await")` to determine if the yielded value is // meant to be awaited. - runtime.awrap = function (arg) { + exports.awrap = function (arg) { return { __await: arg }; }; @@ -254,15 +237,15 @@ var asyncToGenerator = function (fn) { AsyncIterator.prototype[asyncIteratorSymbol] = function () { return this; }; - runtime.AsyncIterator = AsyncIterator; + exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of // AsyncIterator objects; they just return a Promise for the value of // the final result produced by the iterator. - runtime.async = function (innerFn, outerFn, self, tryLocsList) { + exports.async = function (innerFn, outerFn, self, tryLocsList) { var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); - return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. + return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); @@ -353,7 +336,8 @@ var asyncToGenerator = function (fn) { context.delegate = null; if (context.method === "throw") { - if (delegate.iterator.return) { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { // If the delegate iterator has a return method, give it a // chance to clean up. context.method = "return"; @@ -471,7 +455,7 @@ var asyncToGenerator = function (fn) { this.reset(true); } - runtime.keys = function (object) { + exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); @@ -533,7 +517,7 @@ var asyncToGenerator = function (fn) { // Return an iterator with no values. return { next: doneResult }; } - runtime.values = values; + exports.values = values; function doneResult() { return { value: undefined, done: true }; @@ -726,15 +710,21 @@ var asyncToGenerator = function (fn) { return ContinueSentinel; } }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; }( -// In sloppy mode, unbound `this` refers to the global object, fallback to -// Function constructor if we're in global strict mode. That is sadly a form -// of indirect eval which violates Content Security Policy. -function () { - return this || (typeof self === "undefined" ? "undefined" : _typeof(self)) === "object" && self; -}() || Function("return this")()); +// If this script is executing as a CommonJS module, use module.exports +// as the regeneratorRuntime namespace. Otherwise create a new empty +// object. Either way, the resulting object will be used to initialize +// the regeneratorRuntime variable at the top of this file. +(typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" ? module.exports : {}); var toStr = Object.prototype.toString; +var arrToStr = Array.prototype.toString; /* * Checks if value is classified as a String primitive or object. @@ -745,6 +735,10 @@ function isString(value) { return toStr.call(value) === '[object String]'; } +function isFunction(value) { + return typeof value === 'function'; +} + function promisify(fn) { return function () { var _arguments = arguments; @@ -758,19 +752,16 @@ function promisify(fn) { } function stringify(value) { - if (isNil(value)) { - return String(value); - } - if (typeof value.to_liquid === 'function') { - return stringify(value.to_liquid()); - } - if (typeof value.toLiquid === 'function') { - return stringify(value.toLiquid()); - } - if (isString(value) || value instanceof RegExp || value instanceof Date) { - return value.toString(); - } + if (isNil(value)) return String(value); + if (isFunction(value.to_liquid)) return stringify(value.to_liquid()); + if (isFunction(value.toLiquid)) return stringify(value.toLiquid()); + if (isFunction(value.to_s)) return value.to_s(); + if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value); + if (isFunction(value.toString)) return value.toString(); + return toStr.call(value); +} +function defaultToString(value) { var cache = []; return JSON.stringify(value, function (key, value) { if (isObject(value)) { @@ -1129,16 +1120,10 @@ var Scope = { if (isNil(obj)) { val = undefined; } else { - if (typeof obj.to_liquid === 'function') { - obj = obj.to_liquid(); - } else if (typeof obj.toLiquid === 'function') { - obj = obj.toLiquid(); - } - - if (key === 'size' && (isArray(obj) || isString(obj))) { - val = obj.length; - } else { - val = obj[key]; + obj = toLiquid(obj); + val = key === 'size' ? readSize(obj) : obj[key]; + if (isFunction(obj.liquid_method_missing)) { + val = obj.liquid_method_missing(key); } } if (isNil(val) && this.opts.strict_variables) { @@ -1212,6 +1197,22 @@ var Scope = { } }; +function toLiquid(obj) { + if (isFunction(obj.to_liquid)) { + return obj.to_liquid(); + } + if (isFunction(obj.toLiquid)) { + return obj.toLiquid(); + } + return obj; +} + +function readSize(obj) { + if (!isNil(obj.size)) return obj.size; + if (isArray(obj) || isString(obj)) return obj.length; + return obj.size; +} + function matchRightBracket(str, begin) { var stack = 1; // count of '[' - count of ']' for (var i = begin; i < str.length; i++) { diff --git a/dist/liquid.common.js.map b/dist/liquid.common.js.map index 64ecf6203d..040090f0c4 100644 --- a/dist/liquid.common.js.map +++ b/dist/liquid.common.js.map @@ -1 +1 @@ -{"version":3,"file":"liquid.common.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/promise.js","../src/template.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value) || value instanceof RegExp || value instanceof Date) {\n return value.toString()\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, {message: message}, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport {anySeries} from './util/promise.js'\nimport fs from 'fs'\n\nconst statFileAsync = _.promisify(fs.stat)\nconst readFileAsync = _.promisify(fs.readFile)\n\nexport async function resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath, 'utf8')\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify, create} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign, create} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject, isArray} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\nimport {create} from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value, quotedLine} from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import {create} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","Function","toStr","isString","promisify","arguments","stringify","isNil","String","to_liquid","toLiquid","RegExp","Date","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","src","last","arr","uniq","u","a","l","range","start","stop","step","singleQuoted","doubleQuoted","quoted","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","_","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","align","join","n","blank","msg","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","factory","defaultOptions","anySeries","ret","item","idx","catch","mapSeries","x","statFileAsync","fs","stat","readFileAsync","readFile","filepath","root","options","extname","concat","code","read","whiteSpaceCtrl","tokens","greedy","inRaw","shouldTrimLeft","shouldTrimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","trimLeft","rLeft","replace","trimRight","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","tagImpl","impl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","strict_filters","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","init","liquid","Liquid","collection","renderer","renderTemplates","elseTemplates","offset","limit","reversed","forloop","finished","Types","registerTag","tagToken","remainTokens","p","parser","on","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","floor","col","row","engine","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","feb","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","jan1","getFullYear","_number","pad","year","parseInt","substring","size","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","respectCache","getter","cacheEnabled","plugin","filePath","renderFile","normalizeStringArray"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"liquid.common.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/promise.js","../src/template.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar regeneratorRuntime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n","const toStr = Object.prototype.toString\nconst arrToStr = Array.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function isFunction (value) {\n return typeof value === 'function'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) return String(value)\n if (isFunction(value.to_liquid)) return stringify(value.to_liquid())\n if (isFunction(value.toLiquid)) return stringify(value.toLiquid())\n if (isFunction(value.to_s)) return value.to_s()\n if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value)\n if (isFunction(value.toString)) return value.toString()\n return toStr.call(value)\n}\n\nfunction defaultToString (value) {\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, { message: message }, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import { AssertionError } from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n obj = toLiquid(obj)\n val = key === 'size' ? readSize(obj) : obj[key]\n if (_.isFunction(obj.liquid_method_missing)) {\n val = obj.liquid_method_missing(key)\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction toLiquid (obj) {\n if (_.isFunction(obj.to_liquid)) {\n return obj.to_liquid()\n }\n if (_.isFunction(obj.toLiquid)) {\n return obj.toLiquid()\n }\n return obj\n}\n\nfunction readSize (obj) {\n if (!_.isNil(obj.size)) return obj.size\n if (_.isArray(obj) || _.isString(obj)) return obj.length\n return obj.size\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport { anySeries } from './util/promise.js'\nimport fs from 'fs'\n\nconst statFileAsync = _.promisify(fs.stat)\nconst readFileAsync = _.promisify(fs.readFile)\n\nexport async function resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath, 'utf8')\n}\n","import { assign } from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport { TokenizationError } from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport { default as whiteSpaceCtrl } from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import { evalExp } from './syntax.js'\nimport { RenderBreakError, RenderError } from './util/error.js'\nimport { stringify, create } from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import { hashCapture } from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\nimport { assign, create } from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { ParseError } from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","import { mapSeries } from '../util/promise.js'\nimport { isString, isObject, isArray } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', { parse, render })\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\nimport { create } from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const { AssignScope } = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const { CaptureScope } = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value, quotedLine } from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import { create } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, DecrementScope } = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, IncrementScope } = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import { mapSeries } from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport { isTruthy } from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport { isTruthy, isFalsy, evalExp, evalValue } from './syntax.js'\nimport { ParseError, TokenizationError, RenderBreakError, AssertionError } from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","module","toStr","arrToStr","Array","isString","isFunction","promisify","arguments","stringify","isNil","String","to_liquid","toLiquid","to_s","indexOf","defaultToString","cache","JSON","isObject","proto","isArray","forOwn","iteratee","k","assign","srcs","src","last","arr","uniq","u","a","l","range","start","stop","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","_","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","align","join","n","blank","msg","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","v","some","unshift","findIndex","splice","candidate","readSize","liquid_method_missing","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","size","factory","defaultOptions","anySeries","ret","item","idx","catch","mapSeries","x","statFileAsync","fs","stat","readFileAsync","readFile","filepath","root","options","extname","concat","code","read","whiteSpaceCtrl","tokens","greedy","inRaw","shouldTrimLeft","shouldTrimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","trimLeft","rLeft","replace","trimRight","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","tagImpl","impl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","strict_filters","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","init","liquid","Liquid","collection","renderer","renderTemplates","elseTemplates","offset","limit","reversed","forloop","finished","Types","registerTag","tagToken","remainTokens","p","parser","on","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","floor","col","row","engine","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","feb","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","jan1","Date","getFullYear","_number","pad","year","parseInt","substring","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","respectCache","getter","cacheEnabled","plugin","filePath","renderFile","normalizeStringArray"],"mappings":"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"} \ No newline at end of file diff --git a/dist/liquid.js b/dist/liquid.js index f77109c24c..396c3d32a2 100644 --- a/dist/liquid.js +++ b/dist/liquid.js @@ -1,13 +1,13 @@ /* - * liquidjs@6.3.0, https://github.com/harttle/liquidjs + * liquidjs@6.4.1, https://github.com/harttle/liquidjs * (c) 2016-2019 harttle * Released under the MIT License. */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : - (global.Liquid = factory()); -}(this, (function () { 'use strict'; + (global = global || self, global.Liquid = factory()); +}(this, function () { 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; @@ -51,7 +51,7 @@ * LICENSE file in the root directory of this source tree. */ - !function (global) { + var regeneratorRuntime$1 = function (exports) { var Op = Object.prototype; var hasOwn = Op.hasOwnProperty; @@ -61,23 +61,6 @@ var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - var inModule = (typeof module === "undefined" ? "undefined" : _typeof(module)) === "object"; - var runtime = global.regeneratorRuntime; - if (runtime) { - if (inModule) { - // If regeneratorRuntime is defined globally and we're in a module, - // make the exports object identical to regeneratorRuntime. - module.exports = runtime; - } - // Don't bother evaluating the rest of this file if the runtime was - // already defined globally. - return; - } - - // Define the runtime globally (as expected by generated code) as either - // module.exports (if we're in a module) or a new, empty object. - runtime = global.regeneratorRuntime = inModule ? module.exports : {}; - function wrap(innerFn, outerFn, self, tryLocsList) { // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; @@ -90,7 +73,7 @@ return generator; } - runtime.wrap = wrap; + exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion // record like context.tryEntries[i].completion. This interface could @@ -157,7 +140,7 @@ }); } - runtime.isGeneratorFunction = function (genFun) { + exports.isGeneratorFunction = function (genFun) { var ctor = typeof genFun === "function" && genFun.constructor; return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can @@ -165,7 +148,7 @@ (ctor.displayName || ctor.name) === "GeneratorFunction" : false; }; - runtime.mark = function (genFun) { + exports.mark = function (genFun) { if (Object.setPrototypeOf) { Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); } else { @@ -182,7 +165,7 @@ // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test // `hasOwn.call(value, "__await")` to determine if the yielded value is // meant to be awaited. - runtime.awrap = function (arg) { + exports.awrap = function (arg) { return { __await: arg }; }; @@ -253,15 +236,15 @@ AsyncIterator.prototype[asyncIteratorSymbol] = function () { return this; }; - runtime.AsyncIterator = AsyncIterator; + exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of // AsyncIterator objects; they just return a Promise for the value of // the final result produced by the iterator. - runtime.async = function (innerFn, outerFn, self, tryLocsList) { + exports.async = function (innerFn, outerFn, self, tryLocsList) { var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList)); - return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. + return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator. : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); @@ -352,7 +335,8 @@ context.delegate = null; if (context.method === "throw") { - if (delegate.iterator.return) { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { // If the delegate iterator has a return method, give it a // chance to clean up. context.method = "return"; @@ -470,7 +454,7 @@ this.reset(true); } - runtime.keys = function (object) { + exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); @@ -532,7 +516,7 @@ // Return an iterator with no values. return { next: doneResult }; } - runtime.values = values; + exports.values = values; function doneResult() { return { value: undefined, done: true }; @@ -725,15 +709,21 @@ return ContinueSentinel; } }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; }( - // In sloppy mode, unbound `this` refers to the global object, fallback to - // Function constructor if we're in global strict mode. That is sadly a form - // of indirect eval which violates Content Security Policy. - function () { - return this || (typeof self === "undefined" ? "undefined" : _typeof(self)) === "object" && self; - }() || Function("return this")()); + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + (typeof module === "undefined" ? "undefined" : _typeof(module)) === "object" ? module.exports : {}); var toStr = Object.prototype.toString; + var arrToStr = Array.prototype.toString; /* * Checks if value is classified as a String primitive or object. @@ -744,20 +734,21 @@ return toStr.call(value) === '[object String]'; } + function isFunction(value) { + return typeof value === 'function'; + } + function stringify(value) { - if (isNil(value)) { - return String(value); - } - if (typeof value.to_liquid === 'function') { - return stringify(value.to_liquid()); - } - if (typeof value.toLiquid === 'function') { - return stringify(value.toLiquid()); - } - if (isString(value) || value instanceof RegExp || value instanceof Date) { - return value.toString(); - } + if (isNil(value)) return String(value); + if (isFunction(value.to_liquid)) return stringify(value.to_liquid()); + if (isFunction(value.toLiquid)) return stringify(value.toLiquid()); + if (isFunction(value.to_s)) return value.to_s(); + if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value); + if (isFunction(value.toString)) return value.toString(); + return toStr.call(value); + } + function defaultToString(value) { var cache = []; return JSON.stringify(value, function (key, value) { if (isObject(value)) { @@ -1103,16 +1094,10 @@ if (isNil(obj)) { val = undefined; } else { - if (typeof obj.to_liquid === 'function') { - obj = obj.to_liquid(); - } else if (typeof obj.toLiquid === 'function') { - obj = obj.toLiquid(); - } - - if (key === 'size' && (isArray(obj) || isString(obj))) { - val = obj.length; - } else { - val = obj[key]; + obj = toLiquid(obj); + val = key === 'size' ? readSize(obj) : obj[key]; + if (isFunction(obj.liquid_method_missing)) { + val = obj.liquid_method_missing(key); } } if (isNil(val) && this.opts.strict_variables) { @@ -1186,6 +1171,22 @@ } }; + function toLiquid(obj) { + if (isFunction(obj.to_liquid)) { + return obj.to_liquid(); + } + if (isFunction(obj.toLiquid)) { + return obj.toLiquid(); + } + return obj; + } + + function readSize(obj) { + if (!isNil(obj.size)) return obj.size; + if (isArray(obj) || isString(obj)) return obj.length; + return obj.size; + } + function matchRightBracket(str, begin) { var stack = 1; // count of '[' - count of ']' for (var i = begin; i < str.length; i++) { @@ -3576,5 +3577,5 @@ return Liquid; -}))); +})); //# sourceMappingURL=liquid.js.map diff --git a/dist/liquid.js.map b/dist/liquid.js.map index d6ed8fa848..da918bc924 100644 --- a/dist/liquid.js.map +++ b/dist/liquid.js.map @@ -1 +1 @@ -{"version":3,"file":"liquid.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/template-browser.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value) || value instanceof RegExp || value instanceof Date) {\n return value.toString()\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, {message: message}, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","import {last, isArray} from './util/underscore'\n\nfunction domResolve (root, path) {\n const base = document.createElement('base')\n base.href = root\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n head.removeChild(base)\n\n return resolved\n}\n\nexport function resolve (filepath, root, options) {\n root = root || options.root\n if (isArray(root)) {\n root = root[0]\n }\n if (root.length && last(root) !== '/') {\n root += '/'\n }\n const url = domResolve(root, filepath)\n return url.replace(/^(\\w+:\\/\\/[^/]+)(\\/[^?]+)/, (str, origin, path) => {\n const last = path.split('/').pop()\n if (/\\.\\w+$/.test(last)) {\n return str\n }\n return origin + path + options.extname\n })\n}\n\nexport async function read (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst receiving the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify, create} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign, create} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject, isArray} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\nimport {create} from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value, quotedLine} from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import {create} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","Function","toStr","isString","stringify","isNil","String","to_liquid","toLiquid","RegExp","Date","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","src","last","arr","range","start","step","singleQuoted","doubleQuoted","quoted","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","_","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","l","align","join","n","blank","msg","predicate","Scope","getAll","contexts","reduce","ctx","val","get","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","set","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","assert","matchRightBracket","lexical","factory","defaultOptions","dynamicPartials","strict_filters","blocks","root","domResolve","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","a","resolved","removeChild","filepath","options","url","replace","origin","extname","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","read","whiteSpaceCtrl","tokens","greedy","inRaw","shouldTrimLeft","trimLeft","shouldTrimRight","trimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","rLeft","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","indent","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","renderTemplates","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","impl","tagImpl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","init","handlers","on","cb","trigger","event","h","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","mapSeries","ret","item","idx","liquid","Liquid","collection","renderer","elseTemplates","offset","limit","reversed","forloop","first","index0","rindex","rindex0","finished","Types","registerTag","tagToken","remainTokens","p","parser","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","parseAndRender","originBlocks","originBlockMode","blockMode","getTemplate","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","row","floor","col","engine","Assign","Capture","Case","Comment","Cycle","Decrement","For","If","Include","Increment","Layout","Raw","Tablerow","Unless","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","daysInMonth","d","feb","isLeapYear","getDayOfYear","num","getMonth","getDate","getWeekOfYear","startDay","now","getDay","jan1","getFullYear","_number","pad","year","getSuffix","parseInt","century","substring","size","ch","formatCodes","A","b","B","c","toLocaleString","C","H","getHours","I","L","getMilliseconds","m","M","getMinutes","P","q","round","valueOf","S","getSeconds","u","U","w","W","toLocaleDateString","X","toLocaleTimeString","y","Y","z","tz","getTimezoneOffset","abs","N","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","respectCache","renderFile","getter","cacheEnabled","plugin","express","filePath","normalizeStringArray"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"liquid.js","sources":["../node_modules/regenerator-runtime/runtime.js","../src/util/underscore.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/template-browser.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/operators.js","../src/syntax.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/util/promise.js","../src/tags/for.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/include.js","../src/tags/decrement.js","../src/tags/cycle.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/tags/index.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar regeneratorRuntime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n","const toStr = Object.prototype.toString\nconst arrToStr = Array.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function isFunction (value) {\n return typeof value === 'function'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) return String(value)\n if (isFunction(value.to_liquid)) return stringify(value.to_liquid())\n if (isFunction(value.toLiquid)) return stringify(value.toLiquid())\n if (isFunction(value.to_s)) return value.to_s()\n if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value)\n if (isFunction(value.toString)) return value.toString()\n return toStr.call(value)\n}\n\nfunction defaultToString (value) {\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, { message: message }, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import { AssertionError } from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n obj = toLiquid(obj)\n val = key === 'size' ? readSize(obj) : obj[key]\n if (_.isFunction(obj.liquid_method_missing)) {\n val = obj.liquid_method_missing(key)\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction toLiquid (obj) {\n if (_.isFunction(obj.to_liquid)) {\n return obj.to_liquid()\n }\n if (_.isFunction(obj.toLiquid)) {\n return obj.toLiquid()\n }\n return obj\n}\n\nfunction readSize (obj) {\n if (!_.isNil(obj.size)) return obj.size\n if (_.isArray(obj) || _.isString(obj)) return obj.length\n return obj.size\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","import { last, isArray } from './util/underscore'\n\nfunction domResolve (root, path) {\n const base = document.createElement('base')\n base.href = root\n\n const head = document.getElementsByTagName('head')[0]\n head.insertBefore(base, head.firstChild)\n\n const a = document.createElement('a')\n a.href = path\n const resolved = a.href\n head.removeChild(base)\n\n return resolved\n}\n\nexport function resolve (filepath, root, options) {\n root = root || options.root\n if (isArray(root)) {\n root = root[0]\n }\n if (root.length && last(root) !== '/') {\n root += '/'\n }\n const url = domResolve(root, filepath)\n return url.replace(/^(\\w+:\\/\\/[^/]+)(\\/[^?]+)/, (str, origin, path) => {\n const last = path.split('/').pop()\n if (/\\.\\w+$/.test(last)) {\n return str\n }\n return origin + path + options.extname\n })\n}\n\nexport async function read (url) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n resolve(xhr.responseText)\n } else {\n reject(new Error(xhr.statusText))\n }\n }\n xhr.onerror = () => {\n reject(new Error('An error occurred whilst receiving the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\n}\n","import { assign } from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import * as lexical from './lexical.js'\nimport { TokenizationError } from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport { default as whiteSpaceCtrl } from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","import { evalExp } from './syntax.js'\nimport { RenderBreakError, RenderError } from './util/error.js'\nimport { stringify, create } from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import { hashCapture } from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\nimport { assign, create } from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { ParseError } from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import { mapSeries } from '../util/promise.js'\nimport { isString, isObject, isArray } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', { parse, render })\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","import assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\nimport { create } from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const { AssignScope } = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const { CaptureScope } = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value, quotedLine } from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import { create } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, DecrementScope } = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, IncrementScope } = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import { mapSeries } from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport { isTruthy } from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport { isTruthy, isFalsy, evalExp, evalValue } from './syntax.js'\nimport { ParseError, TokenizationError, RenderBreakError, AssertionError } from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","toStr","arrToStr","Array","isString","isFunction","stringify","isNil","String","to_liquid","toLiquid","to_s","indexOf","defaultToString","cache","JSON","isObject","proto","isArray","forOwn","iteratee","k","assign","srcs","arguments","src","last","arr","range","start","step","singleQuoted","doubleQuoted","quoted","RegExp","source","quoteBalanced","integer","number","bool","identifier","subscript","literal","variable","rangeLimit","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","isInteger","str","test","isLiteral","isVariable","matchValue","exec","parseLiteral","res","match","Number","toLowerCase","initError","captureStackTrace","initLiquidError","token","input","line","file","mkContext","message","mkMessage","stack","TokenizationError","_","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","lines","split","begin","Math","max","end","min","map","l","align","join","n","blank","msg","predicate","Scope","getAll","contexts","reduce","ctx","val","get","path","paths","propertyAccessSeq","scope","findContextFor","readProperty","set","v","some","unshift","findIndex","splice","candidate","readSize","liquid_method_missing","opts","strict_variables","seq","j","delemiter","assert","matchRightBracket","lexical","size","factory","defaultOptions","dynamicPartials","strict_filters","blocks","root","domResolve","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","a","resolved","removeChild","filepath","options","url","replace","origin","extname","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","read","whiteSpaceCtrl","tokens","greedy","inRaw","shouldTrimLeft","trimLeft","shouldTrimRight","trimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","rLeft","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","indent","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","isTruthy","r","Operators","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","isFalsy","render","renderTemplates","templates","template","renderTag","partial","renderValue","renderTemplate","resolvedHTML","filters","initial","instance","markup","tagImpls","_tagInstance","impl","tagImpl","register","tag","construct","clear","valueRE","_filterInstance","output","apply","argList","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","init","handlers","on","cb","trigger","event","h","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","mapSeries","ret","item","idx","liquid","Liquid","collection","renderer","elseTemplates","offset","limit","reversed","forloop","first","index0","rindex","rindex0","finished","Types","registerTag","tagToken","remainTokens","p","parser","AssignScope","CaptureScope","cond","cases","branch","staticFileRE","withRE","staticValue","with","parseAndRender","originBlocks","originBlockMode","blockMode","getTemplate","DecrementScope","groupRE","rValue","candidatesRE","group","candidates","fingerprint","groups","branches","IncrementScope","staticLayout","layout","tpls","block","childDefined","cols","row","floor","col","engine","Assign","Capture","Case","Comment","Cycle","Decrement","For","If","Include","Increment","Layout","Raw","Tablerow","Unless","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","daysInMonth","d","feb","isLeapYear","getDayOfYear","num","getMonth","getDate","getWeekOfYear","startDay","now","getDay","jan1","Date","getFullYear","_number","pad","year","getSuffix","parseInt","century","substring","ch","formatCodes","A","b","B","c","toLocaleString","C","H","getHours","I","L","getMilliseconds","m","M","getMinutes","P","q","round","valueOf","S","getSeconds","u","U","w","W","toLocaleDateString","X","toLocaleTimeString","y","Y","z","tz","getTimezoneOffset","abs","N","format","remaining","results","func","escapeMap","unescapeMap","toUpperCase","ceil","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","respectCache","renderFile","getter","cacheEnabled","plugin","express","filePath","normalizeStringArray"],"mappings":"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"} \ No newline at end of file diff --git a/dist/liquid.min.js b/dist/liquid.min.js index c16f33bd4c..8f8f65239b 100644 --- a/dist/liquid.min.js +++ b/dist/liquid.min.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Liquid=t()}(this,function(){"use strict";var F="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Q=function(e){return function(){var u=e.apply(this,arguments);return new Promise(function(o,a){return function t(e,r){try{var n=u[e](r),i=n.value}catch(e){return void a(e)}if(!n.done)return Promise.resolve(i).then(function(e){t("next",e)},function(e){t("throw",e)});o(i)}("next")})}};!function(e){var s,t=Object.prototype,c=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",n=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag",a="object"===("undefined"==typeof module?"undefined":F(module)),u=e.regeneratorRuntime;if(u)a&&(module.exports=u);else{(u=e.regeneratorRuntime=a?module.exports:{}).wrap=w;var l="suspendedStart",p="suspendedYield",h="executing",g="completed",d={},f={};f[i]=function(){return this};var v=Object.getPrototypeOf,m=v&&v(v(O([])));m&&m!==t&&c.call(m,i)&&(f=m);var y=E.prototype=b.prototype=Object.create(f);k.prototype=y.constructor=E,E.constructor=k,E[o]=k.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===k||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,E):(e.__proto__=E,o in e||(e[o]="GeneratorFunction")),e.prototype=Object.create(y),e},u.awrap=function(e){return{__await:e}},R(T.prototype),T.prototype[n]=function(){return this},u.AsyncIterator=T,u.async=function(e,t,r,n){var i=new T(w(e,t,r,n));return u.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},R(y),y[o]="Generator",y[i]=function(){return this},y.toString=function(){return"[object Generator]"},u.keys=function(r){var n=[];for(var e in r)n.push(e);return n.reverse(),function e(){for(;n.length;){var t=n.pop();if(t in r)return e.value=t,e.done=!1,e}return e.done=!0,e}},u.values=O,j.prototype={constructor:j,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=s,this.done=!1,this.delegate=null,this.method="next",this.arg=s,this.tryEntries.forEach(L),!e)for(var t in this)"t"===t.charAt(0)&&c.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=s)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function e(e,t){return o.type="throw",o.arg=r,n.next=e,t&&(n.method="next",n.arg=s),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var i=this.tryEntries[t],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=c.call(i,"catchLoc"),u=c.call(i,"finallyLoc");if(a&&u){if(this.prev=|<|>|\s+contains\s+/];function M(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function P(e,t){M.call(this),this.input=t.input,this.line=t.line,this.file=t.file;var r,i,o,n,a,u=(r=t.input,i=t.line,o=r.split("\n"),n=Math.max(i-2,1),a=Math.min(i+3,o.length),function(e,t,r){1===arguments.length&&(t=e,e=0),r=r||1;for(var n=[],i=e;i> ":" ",(t=e,r=a,n=t+"",Array((r+"").length-n.length).join(" ")+n),"| ",o[e-1]].join("");var t,r,n}).join("\n"));this.message=function(e,t){e=e||"",t.file&&(e+=", file:"+t.file);t.line&&(e+=", line:"+t.line);return e}(e.message,t),this.stack=u+"\n"+(this.stack||this.message)+(e.stack?"\nFrom "+e.stack:"")}function A(e,t){P.call(this,{message:e},t)}function D(e,t){m(this,e),this.originalError=e,P.call(this,e,t)}function I(e,t){if(e instanceof I)return e;m(this,e),this.originalError=e,P.call(this,e,t.token)}function C(e){M.call(this),this.message=e+""}function V(e){M.call(this),this.message=e+""}function ue(e,t){if(!e)throw new V(t=t||"expect "+e+" to be true")}(A.prototype=ee(Error.prototype)).constructor=A,(D.prototype=ee(Error.prototype)).constructor=D,(I.prototype=ee(Error.prototype)).constructor=I,(C.prototype=ee(Error.prototype)).constructor=C,(V.prototype=ee(Error.prototype)).constructor=V;var q={getAll:function(){return this.contexts.reduce(function(e,t){return m(e,t)},ee(null))},get:function(e){var r=this,t=this.propertyAccessSeq(e),n=this.findContextFor(t[0])||y(this.contexts);return t.reduce(function(e,t){return r.readProperty(e,t)},n)},set:function(e,r){var n=this.propertyAccessSeq(e),i=this.findContextFor(n[0])||y(this.contexts);n.some(function(e,t){return!re(i)||(t===n.length-1?(i[e]=r,!0):(void 0===i[e]&&(i[e]={}),void(i=i[e])))})},unshift:function(e){return this.contexts.unshift(e)},push:function(e){return this.contexts.push(e)},pop:function(t){if(!arguments.length)return this.contexts.pop();var e=this.contexts.findIndex(function(e){return e===t});if(-1===e)throw new TypeError("scope not found, cannot pop");return this.contexts.splice(e,1)[0]},findContextFor:function(e,t){t=t||function(){return!0};for(var r=this.contexts.length-1;0<=r;r--){var n=this.contexts[r];if(t(n)&&e in n)return n}return null},readProperty:function(e,t){var r=void 0;if(n(e)?r=void 0:("function"==typeof e.to_liquid?e=e.to_liquid():"function"==typeof e.toLiquid&&(e=e.toLiquid()),r="size"===t&&(te(e)||Z(e))?e.length:e[t]),n(r)&&this.opts.strict_variables)throw new TypeError("undefined variable: "+t);return r},propertyAccessSeq:function(e){e=String(e);for(var t,r=[],n="",i=void 0,o=0;oh&&g.push(v(h,t.index)),g.push(t[1]?d(t[1],t[2].trim(),t.index):(u=t[3],s=t[4].trim(),c=t.index,{type:"value",line:p.get(c),trim_left:"{{-"===u.slice(0,3),trim_right:"-}}"===u.slice(-3),raw:u,value:s,input:o,file:a}));return o.length>h&&g.push(v(h,o.length)),function(a,u){u=m({greedy:!0},u);var s=!1;a.forEach(function(e,t){var r,n,i,o;i=e,o=u,!s&&("tag"===i.type?i.trim_left||o.trim_tag_left:"value"===i.type?i.trim_left||o.trim_value_left:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/\s+$/g:/[\t\r ]*$/g;e.value=e.value.replace(r,"")}}(a[t-1],u.greedy),"tag"===e.type&&"raw"===e.name&&(s=!0),"tag"===e.type&&"endraw"===e.name&&(s=!1),r=e,n=u,!s&&("tag"===r.type?r.trim_right||n.trim_tag_right:"value"===r.type?r.trim_right||n.trim_value_right:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/^\s+/g:/^[\t\r ]*\n?/g;e.value=e.value.replace(r,"")}}(a[t+1],u.greedy)})}(g,e),g;function d(e,t,r){var n=t.match(w),i={type:"tag",indent:l,line:p.get(r),trim_left:"{%-"===e.slice(0,3),trim_right:"-%}"===e.slice(-3),raw:e,value:t,input:o,file:a};if(!n)throw new A("illegal tag syntax",i);return i.name=n[1],i.args=n[2],i}function v(e,t){var r=o.slice(e,t);return l=y(r.split("\n")).length,{type:"html",raw:r,value:r}}}var K,ce=(K=pe,{"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},">":function(e,t){return null!==e&&null!==t&&t=":function(e,t){return null!==e&&null!==t&&t<=e},"<=":function(e,t){return null!==e&&null!==t&&e<=t},contains:function(e,t){return!!e&&"function"==typeof e.indexOf&&-1"),c+=''),c+='',i.push(t),e.next=7,U.renderer.renderTemplates(f.templates,i);case 7:return c+=e.sent,c+="",i.pop(t),e.abrupt("return",c);case 11:case"end":return e.stop()}},e,f)}));return function(e,t){return r.apply(this,arguments)}}());case 10:return 0"),e.abrupt("return",c);case 12:case"end":return e.stop()}},e,this)})),function(e,t){return J.apply(this,arguments)})}),K=t,(X=e).registerTag("unless",{parse:function(t,e){var r=this;this.templates=[],this.elseTemplates=[];var n=void 0,i=X.parser.parseStream(e).on("start",function(e){n=r.templates,r.cond=t.args}).on("tag:else",function(){return n=r.elseTemplates}).on("tag:endunless",function(e){return i.stop()}).on("template",function(e){return n.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(e,t){var r=K.evalExp(this.cond,e);return K.isFalsy(r)?X.renderer.renderTemplates(this.templates,e):X.renderer.renderTemplates(this.elseTemplates,e)}})}var Ee=["January","February","March","April","May","June","July","August","September","October","November","December"],Re=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Te=Ee.map(Le),Se=Re.map(Le),_e={1:"st",2:"nd",3:"rd",default:"th"};function Le(e){return e.slice(0,3)}var je={daysInMonth:function(e){return[31,je.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r":">",'"':""","'":"'"},Pe={"&":"&","<":"<",">":">",""":'"',"'":"'"},Ae={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return Ce(e).charAt(0).toUpperCase()+e.slice(1)},ceil:function(e){return Math.ceil(e)},concat:function(e,t){return Array.prototype.concat.call(e,t)},date:function(e,t){var r,n=e;return"now"===e?n=new Date:Z(e)&&(n=new Date(e)),(r=n)instanceof Date&&!isNaN(r.getTime())?function(e,t){for(var r="",n=t;;){var i=/%./g,o=i.exec(n);if(!o)return r+n;r+=n.slice(0,i.lastIndex-2),n=n.slice(i.lastIndex);var a=o[0].charAt(1),u=Me[a];r+=u?u.call(this,e):"%"+a}}(n,t):e},default:function(e,t){return pe(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:De,escape_once:function(e){return De(Ce(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return Pe[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(void 0===t?" ":t)},last:function(e){return y(e)},lstrip:function(e){return Ce(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:Ve(function(e,t){return e-t}),modulo:Ve(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:Ve(function(e,t){return Number(e)+Number(t)}),prepend:function(e,t){return t+e},remove:function(e,t){return e.split(t).join("")},remove_first:function(e,t){return e.replace(t,"")},replace:function(e,t,r){return Ce(e).split(t).join(r)},replace_first:function(e,t,r){return Ce(e).replace(t,r)},reverse:function(e){return e.reverse()},round:function(e,t){var r=Math.pow(10,t||0);return Math.round(e*r,t)/r},rstrip:function(e){return Ce(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return void 0===r&&(r=1),e.slice(t,t+r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return Ce(e).split(t)},strip:function(e){return Ce(e).trim()},strip_html:function(e){return Ce(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return Ce(e).replace(/\n/g,"")},times:function(e,t){return e*t},truncate:function(e,t,r){return r=void 0===r?"...":r,t=t||16,(e=Ce(e)).length<=t?e:e.substr(0,t-r.length)+r},truncatewords:function(e,t,r){void 0===r&&(r="...");var n=e.split(" "),i=n.slice(0,t).join(" ");return n.length>t&&(i+=r),i},uniq:function(e){var t={};return(e||[]).filter(function(e){return!t.hasOwnProperty(e)&&(t[e]=!0)})},upcase:function(e){return Ce(e).toUpperCase()},url_decode:function(e){return e.split("+").map(decodeURIComponent).join(" ")},url_encode:function(e){return e.split(" ").map(encodeURIComponent).join("+")}};function De(e){return Ce(e).replace(/&|<|>|"|'/g,function(e){return Fe[e]})}function Ie(e){var t=(e+"").split(".");return 1=|<|>|\s+contains\s+/];function A(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function D(e,t){A.call(this),this.input=t.input,this.line=t.line,this.file=t.file;var r,i,o,n,a,u=(r=t.input,i=t.line,o=r.split("\n"),n=Math.max(i-2,1),a=Math.min(i+3,o.length),function(e,t,r){1===arguments.length&&(t=e,e=0),r=r||1;for(var n=[],i=e;i> ":" ",(t=e,r=a,n=t+"",Array((r+"").length-n.length).join(" ")+n),"| ",o[e-1]].join("");var t,r,n}).join("\n"));this.message=function(e,t){e=e||"",t.file&&(e+=", file:"+t.file);t.line&&(e+=", line:"+t.line);return e}(e.message,t),this.stack=u+"\n"+(this.stack||this.message)+(e.stack?"\nFrom "+e.stack:"")}function I(e,t){D.call(this,{message:e},t)}function q(e,t){m(this,e),this.originalError=e,D.call(this,e,t)}function C(e,t){if(e instanceof C)return e;m(this,e),this.originalError=e,D.call(this,e,t.token)}function V(e){A.call(this),this.message=e+""}function N(e){A.call(this),this.message=e+""}function ue(e,t){if(!e)throw new N(t=t||"expect "+e+" to be true")}(I.prototype=ee(Error.prototype)).constructor=I,(q.prototype=ee(Error.prototype)).constructor=q,(C.prototype=ee(Error.prototype)).constructor=C,(V.prototype=ee(Error.prototype)).constructor=V,(N.prototype=ee(Error.prototype)).constructor=N;var Y={getAll:function(){return this.contexts.reduce(function(e,t){return m(e,t)},ee(null))},get:function(e){var r=this,t=this.propertyAccessSeq(e),n=this.findContextFor(t[0])||y(this.contexts);return t.reduce(function(e,t){return r.readProperty(e,t)},n)},set:function(e,r){var n=this.propertyAccessSeq(e),i=this.findContextFor(n[0])||y(this.contexts);n.some(function(e,t){return!re(i)||(t===n.length-1?(i[e]=r,!0):(void 0===i[e]&&(i[e]={}),void(i=i[e])))})},unshift:function(e){return this.contexts.unshift(e)},push:function(e){return this.contexts.push(e)},pop:function(t){if(!arguments.length)return this.contexts.pop();var e=this.contexts.findIndex(function(e){return e===t});if(-1===e)throw new TypeError("scope not found, cannot pop");return this.contexts.splice(e,1)[0]},findContextFor:function(e,t){t=t||function(){return!0};for(var r=this.contexts.length-1;0<=r;r--){var n=this.contexts[r];if(t(n)&&e in n)return n}return null},readProperty:function(e,t){var r,n=void 0;if(u(e)?n=void 0:(e=function(e){if(o(e.to_liquid))return e.to_liquid();if(o(e.toLiquid))return e.toLiquid();return e}(e),n="size"===t?u((r=e).size)&&(te(r)||Z(r))?r.length:r.size:e[t],o(e.liquid_method_missing)&&(n=e.liquid_method_missing(t))),u(n)&&this.opts.strict_variables)throw new TypeError("undefined variable: "+t);return n},propertyAccessSeq:function(e){e=String(e);for(var t,r=[],n="",i=void 0,o=0;oh&&g.push(v(h,t.index)),g.push(t[1]?d(t[1],t[2].trim(),t.index):(u=t[3],s=t[4].trim(),c=t.index,{type:"value",line:f.get(c),trim_left:"{{-"===u.slice(0,3),trim_right:"-}}"===u.slice(-3),raw:u,value:s,input:o,file:a}));return o.length>h&&g.push(v(h,o.length)),function(a,u){u=m({greedy:!0},u);var s=!1;a.forEach(function(e,t){var r,n,i,o;i=e,o=u,!s&&("tag"===i.type?i.trim_left||o.trim_tag_left:"value"===i.type?i.trim_left||o.trim_value_left:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/\s+$/g:/[\t\r ]*$/g;e.value=e.value.replace(r,"")}}(a[t-1],u.greedy),"tag"===e.type&&"raw"===e.name&&(s=!0),"tag"===e.type&&"endraw"===e.name&&(s=!1),r=e,n=u,!s&&("tag"===r.type?r.trim_right||n.trim_tag_right:"value"===r.type?r.trim_right||n.trim_value_right:void 0)&&function(e,t){if(e&&"html"===e.type){var r=t?/^\s+/g:/^[\t\r ]*\n?/g;e.value=e.value.replace(r,"")}}(a[t+1],u.greedy)})}(g,e),g;function d(e,t,r){var n=t.match(x),i={type:"tag",indent:p,line:f.get(r),trim_left:"{%-"===e.slice(0,3),trim_right:"-%}"===e.slice(-3),raw:e,value:t,input:o,file:a};if(!n)throw new I("illegal tag syntax",i);return i.name=n[1],i.args=n[2],i}function v(e,t){var r=o.slice(e,t);return p=y(r.split("\n")).length,{type:"html",raw:r,value:r}}}var le,pe=(le=ge,{"==":function(e,t){return e===t},"!=":function(e,t){return e!==t},">":function(e,t){return null!==e&&null!==t&&t=":function(e,t){return null!==e&&null!==t&&t<=e},"<=":function(e,t){return null!==e&&null!==t&&e<=t},contains:function(e,t){return!!e&&"function"==typeof e.indexOf&&-1"),c+=''),c+='',i.push(t),e.next=7,U.renderer.renderTemplates(l.templates,i);case 7:return c+=e.sent,c+="",i.pop(t),e.abrupt("return",c);case 11:case"end":return e.stop()}},e,l)}));return function(e,t){return r.apply(this,arguments)}}());case 10:return 0"),e.abrupt("return",c);case 12:case"end":return e.stop()}},e,this)})),function(e,t){return J.apply(this,arguments)})}),K=t,(X=e).registerTag("unless",{parse:function(t,e){var r=this;this.templates=[],this.elseTemplates=[];var n=void 0,i=X.parser.parseStream(e).on("start",function(e){n=r.templates,r.cond=t.args}).on("tag:else",function(){return n=r.elseTemplates}).on("tag:endunless",function(e){return i.stop()}).on("template",function(e){return n.push(e)}).on("end",function(e){throw new Error("tag "+t.raw+" not closed")});i.start()},render:function(e,t){var r=K.evalExp(this.cond,e);return K.isFalsy(r)?X.renderer.renderTemplates(this.templates,e):X.renderer.renderTemplates(this.elseTemplates,e)}})}var Te=["January","February","March","April","May","June","July","August","September","October","November","December"],Se=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],_e=Te.map(je),Le=Se.map(je),Oe={1:"st",2:"nd",3:"rd",default:"th"};function je(e){return e.slice(0,3)}var Me={daysInMonth:function(e){return[31,Me.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r":">",'"':""","'":"'"},De={"&":"&","<":"<",">":">",""":'"',"'":"'"},Ie={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return Ve(e).charAt(0).toUpperCase()+e.slice(1)},ceil:function(e){return Math.ceil(e)},concat:function(e,t){return Array.prototype.concat.call(e,t)},date:function(e,t){var r,n=e;return"now"===e?n=new Date:Z(e)&&(n=new Date(e)),(r=n)instanceof Date&&!isNaN(r.getTime())?function(e,t){for(var r="",n=t;;){var i=/%./g,o=i.exec(n);if(!o)return r+n;r+=n.slice(0,i.lastIndex-2),n=n.slice(i.lastIndex);var a=o[0].charAt(1),u=Pe[a];r+=u?u.call(this,e):"%"+a}}(n,t):e},default:function(e,t){return ge(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:qe,escape_once:function(e){return qe(Ve(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return De[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(void 0===t?" ":t)},last:function(e){return y(e)},lstrip:function(e){return Ve(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:Ne(function(e,t){return e-t}),modulo:Ne(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:Ne(function(e,t){return Number(e)+Number(t)}),prepend:function(e,t){return t+e},remove:function(e,t){return e.split(t).join("")},remove_first:function(e,t){return e.replace(t,"")},replace:function(e,t,r){return Ve(e).split(t).join(r)},replace_first:function(e,t,r){return Ve(e).replace(t,r)},reverse:function(e){return e.reverse()},round:function(e,t){var r=Math.pow(10,t||0);return Math.round(e*r,t)/r},rstrip:function(e){return Ve(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return void 0===r&&(r=1),e.slice(t,t+r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return Ve(e).split(t)},strip:function(e){return Ve(e).trim()},strip_html:function(e){return Ve(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return Ve(e).replace(/\n/g,"")},times:function(e,t){return e*t},truncate:function(e,t,r){return r=void 0===r?"...":r,t=t||16,(e=Ve(e)).length<=t?e:e.substr(0,t-r.length)+r},truncatewords:function(e,t,r){void 0===r&&(r="...");var n=e.split(" "),i=n.slice(0,t).join(" ");return n.length>t&&(i+=r),i},uniq:function(e){var t={};return(e||[]).filter(function(e){return!t.hasOwnProperty(e)&&(t[e]=!0)})},upcase:function(e){return Ve(e).toUpperCase()},url_decode:function(e){return e.split("+").map(decodeURIComponent).join(" ")},url_encode:function(e){return e.split(" ").map(encodeURIComponent).join("+")}};function qe(e){return Ve(e).replace(/&|<|>|"|'/g,function(e){return Ae[e]})}function Ce(e){var t=(e+"").split(".");return 1 result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","const toStr = Object.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) {\n return String(value)\n }\n if (typeof value.to_liquid === 'function') {\n return stringify(value.to_liquid())\n }\n if (typeof value.toLiquid === 'function') {\n return stringify(value.toLiquid())\n }\n if (isString(value) || value instanceof RegExp || value instanceof Date) {\n return value.toString()\n }\n\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, {message: message}, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import {AssertionError} from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n if (typeof obj.to_liquid === 'function') {\n obj = obj.to_liquid()\n } else if (typeof obj.toLiquid === 'function') {\n obj = obj.toLiquid()\n }\n\n if (key === 'size' && (_.isArray(obj) || _.isString(obj))) {\n val = obj.length\n } else {\n val = obj[key]\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport {anySeries} from './util/promise.js'\nimport fs from 'fs'\n\nconst statFileAsync = _.promisify(fs.stat)\nconst readFileAsync = _.promisify(fs.readFile)\n\nexport async function resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath, 'utf8')\n}\n","import * as lexical from './lexical.js'\nimport {TokenizationError} from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport {default as whiteSpaceCtrl} from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import {assign} from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import {evalExp} from './syntax.js'\nimport {RenderBreakError, RenderError} from './util/error.js'\nimport {stringify, create} from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import {hashCapture} from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {evalValue} from './syntax.js'\nimport assert from './util/assert.js'\nimport {assign, create} from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport {create} from './util/underscore.js'\nimport {ParseError} from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","import assert from '../util/assert.js'\nimport {value, quotedLine} from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","import assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\nimport {create} from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const {AssignScope} = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const {CaptureScope} = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","import {create} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, DecrementScope} = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport {isString, isObject, isArray} from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', {parse, render})\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {create} from '../util/underscore.js'\nimport {identifier} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const {CaptureScope, AssignScope, IncrementScope} = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport {value as rValue} from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import {mapSeries} from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport {identifier, value, hash} from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport {isTruthy} from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js'\nimport {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["global","undefined","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","call","Gp","GeneratorFunctionPrototype","Generator","create","constructor","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","arg","__await","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","next","then","result","done","value","toString","keys","object","key","push","reverse","length","pop","Context","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","charAt","isNaN","slice","rootRecord","completion","type","rval","exception","context","handle","loc","caught","i","entry","record","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","finallyEntry","complete","afterLoc","thrown","iterable","resultName","nextLoc","state","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","dispatchException","abrupt","tryCatch","fn","obj","err","defineIteratorMethods","previousPromise","callInvokeWithMethodAndArg","Promise","resolve","reject","invoke","unwrapped","error","return","TypeError","info","pushTryEntry","locs","reset","iteratorMethod","Function","toStr","isString","promisify","arguments","stringify","isNil","String","to_liquid","toLiquid","RegExp","Date","cache","JSON","isObject","indexOf","proto","isArray","assign","Array","src","last","arr","uniq","u","a","l","quoted","source","quoteBalanced","number","bool","identifier","subscript","literal","variable","rangeLimit","range","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","initError","captureStackTrace","initLiquidError","token","input","line","file","lines","begin","end","split","Math","max","min","start","stop","step","_","map","n","str","join","message","msg","mkMessage","stack","TokenizationError","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","_this","readProperty","v","some","unshift","findIndex","splice","candidate","opts","strict_variables","seq","j","delemiter","test","matchRightBracket","get","anySeries","iteratee","ret","item","idx","catch","mapSeries","x","statFileAsync","fs","stat","readFileAsync","readFile","filepath","root","options","extname","concat","_context","code","parse","html","parsedLinesCount","lastMatchBegin","match","raw","pos","rLiquid","currIndent","lineNumber","lastMatchEnd","tokens","exec","lastIndex","index","parseHTMLToken","parseTagToken","trim","greedy","inRaw","trim_left","trim_tag_left","trim_value_left","rLeft","replace","trim_right","trim_tag_right","trim_value_right","rRight","lexical","args","htmlFragment","isTruthy","r","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","res","Number","toLowerCase","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","_context2","resolvedHTML","filters","initial","markup","k","valueRE","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","construct","substr","init","staticFileRE","engine","Liquid","liquid","re","AssignScope","CaptureScope","groupRE","candidatesRE","DecrementScope","withRE","IncrementScope","Types","registerTag","tagToken","remainTokens","parser","parseStream","on","renderer","renderTemplates","cond","cases","elseTemplates","p","branch","rValue","group","candidates","fingerprint","groups","collection","offset","limit","reversed","_this2","forloop","finished","branches","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","staticLayout","layout","tpls","block","childDefined","cols","floor","row","col","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","getFullYear","_number","pad","year","parseInt","substring","size","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","escapeMap","unescapeMap","toUpperCase","ceil","date","getTime","format","output","remaining","results","func","strftime","escape","m","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","getFixed","f","toFixed","registerAll","registerFilter","_engine","tag","Parser","tokenizer","respectCache","getter","cacheEnabled","register","plugin","filePath","renderFile","normalizeStringArray","tagImpls","_tagInstance","tagImpl","impl","instance","_filterInstance","apply","argList","strict_filters","keyMatch","clear"],"mappings":"+pBAOE,SAASA,OAKLC,EAFAC,EAAKC,OAAOC,UACZC,EAASH,EAAGI,eAEZC,EAA4B,mBAAXC,OAAwBA,OAAS,GAClDC,EAAiBF,EAAQG,UAAY,aACrCC,EAAsBJ,EAAQK,eAAiB,kBAC/CC,EAAoBN,EAAQO,aAAe,gBAE3CC,EAA6B,gCAAXC,qBAAAA,SAClBC,EAAUjB,EAAOkB,sBACjBD,EACEF,WAGKI,QAAUF,WASXjB,EAAOkB,mBAAqBH,EAAWC,OAAOG,QAAU,IAc1DC,KAAOA,MAoBXC,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,GAYnBC,EAAoB,KACNjB,GAAkB,kBAC3BkB,UAGLC,EAAWzB,OAAO0B,eAClBC,EAA0BF,GAAYA,EAASA,EAASG,EAAO,MAC/DD,GACAA,IAA4B5B,GAC5BG,EAAO2B,KAAKF,EAAyBrB,OAGnBqB,OAGlBG,EAAKC,EAA2B9B,UAClC+B,EAAU/B,UAAYD,OAAOiC,OAAOV,KACpBtB,UAAY6B,EAAGI,YAAcH,IACpBG,YAAcC,IACdzB,GACzByB,EAAkBC,YAAc,sBAY1BC,oBAAsB,SAASC,OACjCC,EAAyB,mBAAXD,GAAyBA,EAAOJ,oBAC3CK,IACHA,IAASJ,GAG2B,uBAAnCI,EAAKH,aAAeG,EAAKC,UAIxBC,KAAO,SAASH,UAClBtC,OAAO0C,sBACFA,eAAeJ,EAAQP,MAEvBY,UAAYZ,EACbrB,KAAqB4B,MAClB5B,GAAqB,wBAGzBT,UAAYD,OAAOiC,OAAOH,GAC1BQ,KAODM,MAAQ,SAASC,SAChB,CAAEC,QAASD,MAsEEE,EAAc9C,aACtBA,UAAUO,GAAuB,kBACtCgB,QAEDuB,cAAgBA,IAKhBC,MAAQ,SAASC,EAASC,EAASC,EAAMC,OAC3CC,EAAO,IAAIN,EACb9B,EAAKgC,EAASC,EAASC,EAAMC,WAGxBtC,EAAQuB,oBAAoBa,GAC/BG,EACAA,EAAKC,OAAOC,KAAK,SAASC,UACjBA,EAAOC,KAAOD,EAAOE,MAAQL,EAAKC,YAsK3BxB,KAEnBpB,GAAqB,cAOrBJ,GAAkB,kBACZkB,QAGNmC,SAAW,iBACL,wBAkCDC,KAAO,SAASC,OAClBD,EAAO,OACN,IAAIE,KAAOD,IACTE,KAAKD,YAEPE,UAIE,SAASV,SACPM,EAAKK,QAAQ,KACdH,EAAMF,EAAKM,SACXJ,KAAOD,WACJH,MAAQI,IACRL,MAAO,EACLH,WAONG,MAAO,EACLH,MAsCH1B,OAASA,IAMT3B,UAAY,aACLkE,QAEN,SAASC,WACTC,KAAO,OACPf,KAAO,OAGPgB,KAAO9C,KAAK+C,MAAQzE,OACpB2D,MAAO,OACPe,SAAW,UAEXC,OAAS,YACT5B,IAAM/C,OAEN4E,WAAWC,QAAQC,IAEnBR,MACE,IAAI5B,KAAQhB,KAEQ,MAAnBgB,EAAKqC,OAAO,IACZ3E,EAAO2B,KAAKL,KAAMgB,KACjBsC,OAAOtC,EAAKuC,MAAM,WAChBvC,GAAQ1C,SAMf,gBACC2D,MAAO,MAGRuB,EADYxD,KAAKkD,WAAW,GACLO,cACH,UAApBD,EAAWE,WACPF,EAAWnC,WAGZrB,KAAK2D,wBAGK,SAASC,MACtB5D,KAAKiC,WACD2B,MAGJC,EAAU7D,cACL8D,EAAOC,EAAKC,YACZN,KAAO,UACPrC,IAAMuC,IACL9B,KAAOiC,EAEXC,MAGMf,OAAS,SACT5B,IAAM/C,KAGN0F,MAGP,IAAIC,EAAIjE,KAAKkD,WAAWT,OAAS,EAAQ,GAALwB,IAAUA,EAAG,KAChDC,EAAQlE,KAAKkD,WAAWe,GACxBE,EAASD,EAAMT,cAEE,SAAjBS,EAAME,cAIDN,EAAO,UAGZI,EAAME,QAAUpE,KAAK6C,KAAM,KACzBwB,EAAW3F,EAAO2B,KAAK6D,EAAO,YAC9BI,EAAa5F,EAAO2B,KAAK6D,EAAO,iBAEhCG,GAAYC,EAAY,IACtBtE,KAAK6C,KAAOqB,EAAMK,gBACbT,EAAOI,EAAMK,UAAU,GACzB,GAAIvE,KAAK6C,KAAOqB,EAAMM,kBACpBV,EAAOI,EAAMM,iBAGjB,GAAIH,MACLrE,KAAK6C,KAAOqB,EAAMK,gBACbT,EAAOI,EAAMK,UAAU,OAG3B,CAAA,IAAID,QAMH,IAAIG,MAAM,6CALZzE,KAAK6C,KAAOqB,EAAMM,kBACbV,EAAOI,EAAMM,uBAUtB,SAASd,EAAMrC,OAChB,IAAI4C,EAAIjE,KAAKkD,WAAWT,OAAS,EAAQ,GAALwB,IAAUA,EAAG,KAChDC,EAAQlE,KAAKkD,WAAWe,MACxBC,EAAME,QAAUpE,KAAK6C,MACrBnE,EAAO2B,KAAK6D,EAAO,eACnBlE,KAAK6C,KAAOqB,EAAMM,WAAY,KAC5BE,EAAeR,SAKnBQ,IACU,UAAThB,GACS,aAATA,IACDgB,EAAaN,QAAU/C,GACvBA,GAAOqD,EAAaF,eAGP,UAGbL,EAASO,EAAeA,EAAajB,WAAa,YAC/CC,KAAOA,IACPrC,IAAMA,EAETqD,QACGzB,OAAS,YACTnB,KAAO4C,EAAaF,WAClB1E,GAGFE,KAAK2E,SAASR,aAGb,SAASA,EAAQS,MACL,UAAhBT,EAAOT,WACHS,EAAO9C,UAGK,UAAhB8C,EAAOT,MACS,aAAhBS,EAAOT,UACJ5B,KAAOqC,EAAO9C,IACM,WAAhB8C,EAAOT,WACXC,KAAO3D,KAAKqB,IAAM8C,EAAO9C,SACzB4B,OAAS,cACTnB,KAAO,OACa,WAAhBqC,EAAOT,MAAqBkB,SAChC9C,KAAO8C,GAGP9E,UAGD,SAAS0E,OACV,IAAIP,EAAIjE,KAAKkD,WAAWT,OAAS,EAAQ,GAALwB,IAAUA,EAAG,KAChDC,EAAQlE,KAAKkD,WAAWe,MACxBC,EAAMM,aAAeA,cAClBG,SAAST,EAAMT,WAAYS,EAAMU,YACxBV,GACPpE,UAKJ,SAASsE,OACX,IAAIH,EAAIjE,KAAKkD,WAAWT,OAAS,EAAQ,GAALwB,IAAUA,EAAG,KAChDC,EAAQlE,KAAKkD,WAAWe,MACxBC,EAAME,SAAWA,EAAQ,KACvBD,EAASD,EAAMT,cACC,UAAhBU,EAAOT,KAAkB,KACvBmB,EAASV,EAAO9C,MACN6C,UAETW,SAML,IAAIJ,MAAM,wCAGH,SAASK,EAAUC,EAAYC,eACvChC,SAAW,UACJ5C,EAAO0E,cACLC,UACHC,GAGS,SAAhBhF,KAAKiD,cAGF5B,IAAM/C,GAGNwB,aAnqBFL,EAAKgC,EAASC,EAASC,EAAMC,OA0MZH,EAASE,EAAMkC,EACnCoB,EAzMAC,EAAiBxD,GAAWA,EAAQjD,qBAAqB+B,EAAYkB,EAAUlB,EAC/E2E,EAAY3G,OAAOiC,OAAOyE,EAAezG,WACzCoF,EAAU,IAAIlB,EAAQf,GAAe,aAI/BwD,SAkMc3D,EAlMaA,EAkMJE,EAlMaA,EAkMPkC,EAlMaA,EAmMhDoB,EAAQvF,EAEL,SAAgBuD,EAAQ5B,MACzB4D,IAAUrF,QACN,IAAI6E,MAAM,mCAGdQ,IAAUpF,EAAmB,IAChB,UAAXoD,QACI5B,SAKDgE,UAGDpC,OAASA,IACT5B,IAAMA,IAED,KACP2B,EAAWa,EAAQb,YACnBA,EAAU,KACRsC,EAAiBC,EAAoBvC,EAAUa,MAC/CyB,EAAgB,IACdA,IAAmBxF,EAAkB,gBAClCwF,MAIY,SAAnBzB,EAAQZ,SAGFH,KAAOe,EAAQd,MAAQc,EAAQxC,SAElC,GAAuB,UAAnBwC,EAAQZ,OAAoB,IACjCgC,IAAUvF,UACJG,EACFgE,EAAQxC,MAGRmE,kBAAkB3B,EAAQxC,SAEN,WAAnBwC,EAAQZ,UACTwC,OAAO,SAAU5B,EAAQxC,OAG3BzB,MAEJuE,EAASuB,EAASjE,EAASE,EAAMkC,MACjB,WAAhBM,EAAOT,KAAmB,MAGpBG,EAAQ5B,KACZpC,EACAF,EAEAwE,EAAO9C,MAAQvB,iBAIZ,OACEqE,EAAO9C,SACRwC,EAAQ5B,MAGS,UAAhBkC,EAAOT,SACR7D,IAGAoD,OAAS,UACT5B,IAAM8C,EAAO9C,QAxQpB8D,WAcAO,EAASC,EAAIC,EAAKvE,aAEhB,CAAEqC,KAAM,SAAUrC,IAAKsE,EAAGtF,KAAKuF,EAAKvE,IAC3C,MAAOwE,SACA,CAAEnC,KAAM,QAASrC,IAAKwE,aAiBxBrF,cACAG,cACAJ,cA4BAuF,EAAsBrH,IAC5B,OAAQ,QAAS,UAAU0E,QAAQ,SAASF,KACjCA,GAAU,SAAS5B,UACpBrB,KAAKoF,QAAQnC,EAAQ5B,eAoCzBE,EAAc4D,OAgCjBY,OAgCCX,iBA9BYnC,EAAQ5B,YACd2E,WACA,IAAIC,QAAQ,SAASC,EAASC,aAnChCC,EAAOnD,EAAQ5B,EAAK6E,EAASC,OAChChC,EAASuB,EAASP,EAAUlC,GAASkC,EAAW9D,MAChC,UAAhB8C,EAAOT,KAEJ,KACD1B,EAASmC,EAAO9C,IAChBa,EAAQF,EAAOE,aACfA,GACiB,qBAAVA,gBAAAA,KACPxD,EAAO2B,KAAK6B,EAAO,WACd+D,QAAQC,QAAQhE,EAAMZ,SAASS,KAAK,SAASG,KAC3C,OAAQA,EAAOgE,EAASC,IAC9B,SAASN,KACH,QAASA,EAAKK,EAASC,KAI3BF,QAAQC,QAAQhE,GAAOH,KAAK,SAASsE,KAInCnE,MAAQmE,IACPrE,IACP,SAASsE,UAGHF,EAAO,QAASE,EAAOJ,EAASC,OAvBlChC,EAAO9C,MAiCL4B,EAAQ5B,EAAK6E,EAASC,YAI1BJ,IAaaA,EAAgBhE,KAChCiE,KAIEA,cA+GDT,EAAoBvC,EAAUa,OACjCZ,EAASD,EAASjE,SAAS8E,EAAQZ,WACnCA,IAAW3E,EAAW,MAGhB0E,SAAW,KAEI,UAAnBa,EAAQZ,OAAoB,IAC1BD,EAASjE,SAASwH,WAGZtD,OAAS,WACT5B,IAAM/C,IACM0E,EAAUa,GAEP,UAAnBA,EAAQZ,eAGHnD,IAIHmD,OAAS,UACT5B,IAAM,IAAImF,UAChB,yDAGG1G,MAGLqE,EAASuB,EAASzC,EAAQD,EAASjE,SAAU8E,EAAQxC,QAErC,UAAhB8C,EAAOT,cACDT,OAAS,UACT5B,IAAM8C,EAAO9C,MACb2B,SAAW,KACZlD,MAGL2G,EAAOtC,EAAO9C,WAEZoF,EAOFA,EAAKxE,QAGCe,EAAS+B,YAAc0B,EAAKvE,QAG5BJ,KAAOkB,EAASgC,QAQD,WAAnBnB,EAAQZ,WACFA,OAAS,SACT5B,IAAM/C,KAUV0E,SAAW,KACZlD,GANE2G,KA3BCxD,OAAS,UACT5B,IAAM,IAAImF,UAAU,sCACpBxD,SAAW,KACZlD,YAoDF4G,EAAaC,OAChBzC,EAAQ,CAAEE,OAAQuC,EAAK,IAEvB,KAAKA,MACDpC,SAAWoC,EAAK,IAGpB,KAAKA,MACDnC,WAAamC,EAAK,KAClB/B,SAAW+B,EAAK,SAGnBzD,WAAWX,KAAK2B,YAGdd,EAAcc,OACjBC,EAASD,EAAMT,YAAc,KAC1BC,KAAO,gBACPS,EAAO9C,MACRoC,WAAaU,WAGZxB,EAAQf,QAIVsB,WAAa,CAAC,CAAEkB,OAAQ,WACjBjB,QAAQuD,EAAc1G,WAC7B4G,OAAM,YA8BJxG,EAAO0E,MACVA,EAAU,KACR+B,EAAiB/B,EAAShG,MAC1B+H,SACKA,EAAexG,KAAKyE,MAGA,mBAAlBA,EAAShD,YACXgD,MAGJxB,MAAMwB,EAASrC,QAAS,KACvBwB,GAAK,EAAGnC,EAAO,SAASA,WACjBmC,EAAIa,EAASrC,WAChB/D,EAAO2B,KAAKyE,EAAUb,YACnB/B,MAAQ4C,EAASb,KACjBhC,MAAO,EACLH,WAINI,MAAQ5D,IACR2D,MAAO,EAELH,UAGFA,EAAKA,KAAOA,SAKhB,CAAEA,KAAMuD,YAIRA,UACA,CAAEnD,MAAO5D,EAAW2D,MAAM,IAxfnC,CAssBC,kBACQjC,MAAyB,gCAAT2B,mBAAAA,QAAqBA,KAD7C,IAEOmF,SAAS,cAATA,IC/sBV,IAAMC,EAAQvI,OAAOC,UAAU0D,SAOxB,SAAS6E,EAAU9E,SACK,oBAAtB6E,EAAM1G,KAAK6B,GAGb,SAAS+E,EAAWtB,UAClB,kCACE,IAAIM,QAAQ,SAACC,EAASC,6CACrBe,WAAW,SAACrB,EAAK7D,KACfmE,EAAON,GAAOK,EAAQlE,UAM7B,SAASmF,EAAWjF,MACrBkF,EAAMlF,UACDmF,OAAOnF,MAEe,mBAApBA,EAAMoF,iBACRH,EAAUjF,EAAMoF,gBAEK,mBAAnBpF,EAAMqF,gBACRJ,EAAUjF,EAAMqF,eAErBP,EAAS9E,IAAUA,aAAiBsF,QAAUtF,aAAiBuF,YAC1DvF,EAAMC,eAGTuF,EAAQ,UACPC,KAAKR,UAAUjF,EAAO,SAACI,EAAKJ,MAC7B0F,GAAS1F,GAAQ,KACW,IAA1BwF,EAAMG,QAAQ3F,YAGZK,KAAKL,UAENA,IAIJ,SAASzB,GAAQqH,UACftJ,OAAOiC,OAAOqH,GAGhB,SAASV,EAAOlF,UACdA,MAAAA,EAGF,SAAS6F,GAAS7F,SAEM,mBAAtB6E,EAAM1G,KAAK6B,GAuCb,SAAS8F,EAAQ3F,YACbuF,GAASvF,GAAUA,EAAS,GACxB4F,MAAMxJ,UAAU8E,MAAMlD,KAAK6G,UAAW,GAC9C/D,QAAQ,SAAC+E,UAAQ1J,OAAOwJ,OAAO3F,EAAQ6F,KACrC7F,EAGF,SAAS8F,EAAMC,UACbA,EAAIA,EAAI3F,OAAS,GAGnB,SAAS4F,EAAMD,WACdE,EAAI,GACJC,EAAI,GACDtE,EAAI,EAAGuE,EAAIJ,EAAI3F,OAAQwB,EAAIuE,IAAKvE,EACnCqE,EAAE3J,eAAeyJ,EAAInE,QAGvB1B,KAAK6F,EAAInE,MACTmE,EAAInE,IAAM,UAEPsE,EASF,SAASX,GAAU1F,OAClBwB,WAAcxB,gBAAAA,UACH,OAAVA,IAA4B,WAATwB,GAA8B,aAATA,GC/HjD,IAEa+E,EAAS,IAAIjB,OAFL,UAE4BkB,WAD5B,UACmDA,QAC3DC,EAAgB,IAAInB,aAAaiB,EAAOC,oBAIxCE,EAAS,qBACTC,EAAO,aAGPC,GAAa,aACbC,EAAY,IAAIvB,gBAAgBiB,EAAOC,0BACvCM,EAAU,IAAIxB,aAAaiB,EAAOC,WAAUG,EAAKH,WAAUE,EAAOF,YAClEO,EAAW,IAAIzB,OAAUsB,GAAWJ,gBAAeI,GAAWJ,WAAUK,EAAUL,aAGlFQ,EAAa,IAAI1B,aAAayB,EAASP,WAAUE,EAAOF,YACxDS,EAAQ,IAAI3B,aAAa0B,EAAWR,gBAAeQ,EAAWR,cAC9DU,EAAe,IAAI5B,cAAc0B,EAAWR,kBAAiBQ,EAAWR,eAExExG,GAAQ,IAAIsF,aAAayB,EAASP,WAAUM,EAAQN,WAAUS,EAAMT,YAGpEW,GAAO,IAAI7B,aAAasB,GAAWJ,uBAAsBxG,GAAMwG,YAC/DY,EAAc,IAAI9B,WAAWsB,GAAWJ,qBAAoBxG,GAAMwG,WAAW,KAG7Ea,EAAU,IAAI/B,gBAAgBsB,GAAWJ,gCACzCc,EAAc,IAAIhC,WAAWwB,EAAQN,WAAW,KAChDe,EAAe,IAAIjC,WAAWyB,EAASP,YACvCgB,EAAa,IAAIlC,WAAWoB,EAAOF,YACnCiB,EAAW,IAAInC,WAAWqB,EAAKH,WAAW,KAC1CkB,GAAa,IAAIpC,WAAWiB,EAAOC,YACnCmB,EAAY,IAAIrC,WAAW4B,EAAaV,YACxCoB,EAAc,IAAItC,WA7BR,QA6B2BkB,YAGrCqB,EAAmB,IAAIvC,aAAasB,GAAWJ,qBAAoBxG,GAAMwG,QACzEsB,EAAY,IAAIxC,OAAUuC,EAAiBrB,oBAAmBqB,EAAiBrB,aAC/EuB,EAAS,IAAIzC,OAAUsB,GAAWJ,sBAAqBsB,EAAUtB,YAAY,KAC7EwB,EAAgB,IAAI1C,WAAWsB,GAAWJ,wBAAuBsB,EAAUtB,cAC3EyB,EAAa,IAAI3C,WAAW0C,EAAcxB,YAE1C0B,EAAY,CACvB,WACA,YACA,2CC9COC,SACFrJ,KAAOhB,KAAKU,YAAYM,KACzByD,MAAM6F,yBACFA,kBAAkBtK,KAAMA,KAAKU,aAIvC,SAAS6J,EAAiB1E,EAAK2E,KACnBnK,KAAKL,WAEVyK,MAAQD,EAAMC,WACdC,KAAOF,EAAME,UACbC,KAAOH,EAAMG,SAmDAF,EAAOC,EACnBE,EACAC,EACAC,EApDAjH,GAiDY4G,EAjDQD,EAAMC,MAiDPC,EAjDcF,EAAME,KAkDvCE,EAAQH,EAAMM,MAAM,MACpBF,EAAQG,KAAKC,IAAIP,EAAO,EAAG,GAC3BI,EAAME,KAAKE,IAAIR,EAAO,EAAGE,EAAMnI,QFuEhC,SAAgB0I,EAAOC,EAAMC,GACT,IAArBnE,UAAUzE,WACL0I,IACC,KAEHE,GAAQ,UAETjD,EAAM,GACHnE,EAAIkH,EAAOlH,EAAImH,EAAMnH,GAAKoH,IAC7B9I,KAAK0B,UAEJmE,EEhFSkD,CACPT,EAAOC,EAAM,GACnBS,IAAI,kBAAK,CACP/C,IAAMkC,EAAQ,MAAQ,OAUbc,EATJhD,EASOyC,EATJH,EAWPW,EAAMD,EAAI,GACFvD,OAFEgD,EAAM,IAAIxI,OAEGgJ,EAAIhJ,QAAQiJ,KAAK,KAC/BD,GAZX,KACAb,EAAMpC,EAAI,IACVkD,KAAK,IAMX,IAAgBF,EAAGP,EAEXQ,IAPHC,KAAK,YA7DHC,QAyEP,SAAoBC,EAAKpB,KACjBoB,GAAO,GACTpB,EAAMG,UACD,UAAYH,EAAMG,MAEvBH,EAAME,UACD,UAAYF,EAAME,aAEpBkB,EAjFQC,CAAUhG,EAAI8F,QAASnB,QACjCsB,MAAQjI,EACX,MAAQ7D,KAAK8L,OAAS9L,KAAK2L,UACxB9F,EAAIiG,MAAQ,UAAYjG,EAAIiG,MAAQ,IAGpC,SAASC,EAAmBJ,EAASnB,KAC1BnK,KAAKL,KAAM,CAAC2L,QAASA,GAAUnB,GAK1C,SAASwB,EAAYC,EAAGzB,KACpBxK,KAAMiM,QACVC,cAAgBD,IAEL5L,KAAKL,KAAMiM,EAAGzB,GAKzB,SAAS2B,EAAaF,EAAGG,MAE1BH,aAAaE,SACRF,IAEAjM,KAAMiM,QACVC,cAAgBD,IAEL5L,KAAKL,KAAMiM,EAAGG,EAAI5B,OAK7B,SAAS6B,EAAkBV,KACtBtL,KAAKL,WACV2L,QAAUA,EAAU,GAKpB,SAASW,EAAgBX,KACpBtL,KAAKL,WACV2L,QAAUA,EAAU,GC1DZ,YAAUY,EAAWZ,OAC7BY,QAEG,IAAID,IADAX,aAAqBY,kBDsBnCR,EAAkBtN,UAAY6M,GAAS7G,MAAMhG,YACjBiC,YAAcqL,GAQ1CC,EAAWvN,UAAY6M,GAAS7G,MAAMhG,YACjBiC,YAAcsL,GAYnCG,EAAY1N,UAAY6M,GAAS7G,MAAMhG,YACjBiC,YAAcyL,GAMpCE,EAAiB5N,UAAY6M,GAAS7G,MAAMhG,YACjBiC,YAAc2L,GAMzCC,EAAe7N,UAAY6M,GAAS7G,MAAMhG,YACjBiC,YAAc4L,ME3DjCE,EAAQ,QACJ,kBACCxM,KAAKyM,SAASC,OAAO,SAACC,EAAKC,UAAQtB,EAASqB,EAAKC,IAAMtB,GAAS,YAEpE,SAAUuB,cACPC,EAAQ9M,KAAK+M,kBAAkBF,GAC/BG,EAAQhN,KAAKiN,eAAeH,EAAM,KAAOxB,EAAOtL,KAAKyM,iBACpDK,EAAMJ,OAAO,SAACxK,EAAOI,UAAQ4K,EAAKC,aAAajL,EAAOI,IAAM0K,QAEhE,SAAUH,EAAMO,OACbN,EAAQ9M,KAAK+M,kBAAkBF,GACjCG,EAAQhN,KAAKiN,eAAeH,EAAM,KAAOxB,EAAOtL,KAAKyM,YACnDY,KAAK,SAAC/K,EAAK2B,UACVqH,GAAW0B,KAGZ/I,IAAM6I,EAAMrK,OAAS,KACjBH,GAAO8K,GACN,SAEL9O,IAAc0O,EAAM1K,OAChBA,GAAO,WAEP0K,EAAM1K,iBAGT,SAAUqK,UACV3M,KAAKyM,SAASa,QAAQX,SAEzB,SAAUA,UACP3M,KAAKyM,SAASlK,KAAKoK,QAEvB,SAAUA,OACRzF,UAAUzE,cACNzC,KAAKyM,SAAS/J,UAEjBuB,EAAIjE,KAAKyM,SAASc,UAAU,mBAASP,IAAUL,QAC1C,IAAP1I,QACI,IAAIuC,UAAU,sCAEfxG,KAAKyM,SAASe,OAAOvJ,EAAG,GAAG,mBAEpB,SAAU3B,EAAK2H,KACpBA,GAAW,kBAAM,OACrB,IAAIhG,EAAIjE,KAAKyM,SAAShK,OAAS,EAAQ,GAALwB,EAAQA,IAAK,KAC5CwJ,EAAYzN,KAAKyM,SAASxI,MAC3BgG,EAAOwD,IACRnL,KAAOmL,SACFA,SAGJ,mBAEK,SAAU7H,EAAKtD,OACvBsK,YACAtB,EAAQ1F,UACJtH,GAEuB,mBAAlBsH,EAAI0B,YACP1B,EAAI0B,YACuB,mBAAjB1B,EAAI2B,aACd3B,EAAI2B,cAGA,SAARjF,IAAmBgJ,GAAU1F,IAAQ0F,EAAW1F,IAC5CA,EAAInD,OAEJmD,EAAItD,IAGVgJ,EAAQsB,IAAQ5M,KAAK0N,KAAKC,uBACtB,IAAInH,iCAAiClE,UAEtCsK,qBAWU,SAAUnB,KACrBpE,OAAOoE,WHtCUA,EGuCjBmC,EAAM,GACR5M,EAAO,GACP6M,SACA5J,EAAI,EACDA,EAAIwH,EAAIhJ,eACLgJ,EAAIxH,QACL,YAGG6J,EAAYrC,EAAIxH,EAAI,GACtB,OAAO8J,KAAKD,QAEA,OADVrC,EAAI5D,QAAQiG,EAAW7J,EAAI,kBACA6J,OAAcrC,KACtCA,EAAIlI,MAAMU,EAAI,EAAG4J,SAEpBA,EAAI,QAGM,OADVG,EAAkBvC,EAAKxH,EAAI,sBACIwH,KAC5BA,EAAIlI,MAAMU,EAAI,EAAG4J,GH1DTpC,EG2DQzK,EH1D1B8I,EAAYiE,KAAKtC,OG2DLpE,OAAOrH,KAAKiO,IAAIjN,WAGrB6M,EAAI,aAGP,6BAKKpC,EAAIxH,eAMb2J,EAAInL,aACD,IAAI+D,2BAA2BiF,cAEhCmC,WAEErL,IACHvB,EAAKyB,QAAQmL,EAAIrL,KAAKvB,KACnB,MAKb,SAASgN,EAAmBvC,EAAKZ,WAC3BiB,EAAQ,EACH7H,EAAI4G,EAAO5G,EAAIwH,EAAIhJ,OAAQwB,OACnB,MAAXwH,EAAIxH,QAGO,MAAXwH,EAAIxH,IAEQ,eACLA,SAIL,WCnJH,SAASiK,EAAWpJ,EAAUqJ,OAC/BC,EAAMnI,QAAQE,OAAO,IAAI1B,MAAM,kBAC1BtB,QAAQ,SAAUkL,EAAMC,KACzBF,EAAIG,MAAM,mBAAKJ,EAASE,EAAMC,EAAKxJ,OAEpCsJ,EASF,SAASI,GAAW1J,EAAUqJ,OAC/BC,EAAMnI,QAAQC,QAAQ,QACpBlE,EAAS,YACNmB,QAAQ,SAAUkL,EAAMC,KACzBF,EACHrM,KAAK,kBAAMoM,EAASE,EAAMC,EAAKxJ,KAC/B/C,KAAK,mBAAKC,EAAOO,KAAKkM,OAEpBL,EAAIrM,KAAK,kBAAMC,iBCvBlB0M,EAAgBpD,EAAYqD,EAAGC,MAC/BC,EAAgBvD,EAAYqD,EAAGG,yCAE9B,WAAwBC,EAAUC,EAAMC,sGACxCpC,EAAKqC,QAAQH,QACJE,EAAQC,WAGf5D,IADA2D,EAAQD,KAAKG,OAAOH,GAAQ,OAErBA,EAAKzD,IAAI,mBAAQsB,EAAK3G,QAAQ8I,EAAMD,uBAC3Cb,EAAUpB,6CAAO,WAAMD,2GAEpB6B,EAAc7B,mCACbA,8CAELlB,QAAayD,KAAEC,2BAA0BN,UAAgBC,iPAM1D,WAAqBD,2GACnBF,EAAcE,EAAU,6GCnBjBO,EAAO7E,EAAOE,EAAMsE,MAC3B3D,EAAWb,GAAQ,yBAoEP8E,EACfC,EACAC,EA9DKC,EAmCiBC,EAAKzN,EAAO0N,EAzChCC,EAAU,6CACZC,EAAa,EACXC,GAgEaR,EAhEW9E,EAiE1B+E,EAAmB,EACnBC,GAAkB,EAEf,KACA,SAAUG,OACPhF,EAAQ2E,EAAKhM,MAAMkM,EAAiB,EAAGG,GAAK7E,MAAM,gBACpCH,EAAMnI,OAAS,IAClBmN,EACVJ,EAAmB,KAxE1BQ,EAAe,EACbC,EAAS,GAEEP,EAAQG,EAAQK,KAAKzF,GAASuF,EAAeH,EAAQM,UAChET,EAAMU,MAAQJ,KACTzN,KAAK8N,EAAeL,EAAcN,EAAMU,UAE1C7N,KAAKmN,EAAM,GACdY,EAAcZ,EAAM,GAAIA,EAAM,GAAGa,OAAQb,EAAMU,QA8B3BT,EA7BJD,EAAM,GA6BGxN,EA7BCwN,EAAM,GAAGa,OA6BHX,EA7BWF,EAAMU,MA8B9C,MACC,aACAL,EAAW9B,IAAI2B,aACU,QAApBD,EAAIpM,MAAM,EAAG,cACM,QAAlBoM,EAAIpM,OAAO,0CAhCvBkH,EAAMhI,OAASuN,KACVzN,KAAK8N,EAAeL,EAAcvF,EAAMhI,SCxBpC,SAAyBwN,EAAQhB,KACpCjH,EAAO,CAAEwI,QAAQ,GAAQvB,OAC/BwB,GAAQ,IAELtN,QAAQ,SAACqH,EAAOvG,GAoBzB,IAA0BuG,EAAcyE,EANfzE,EAAcyE,EAAdzE,EAbFA,EAagByE,EAbFA,GAAPwB,IAeT,QAAfjG,EAAM9G,KAAuB8G,EAAMkG,WAAazB,EAAQ0B,cACzC,UAAfnG,EAAM9G,KAAyB8G,EAAMkG,WAAazB,EAAQ2B,yBAShE,SAAmBpG,EAAOgG,MACnBhG,GAAwB,SAAfA,EAAM9G,UAEdmN,EAAQL,EAAS,QAAU,eAC3BtO,MAAQsI,EAAMtI,MAAM4O,QAAQD,EAAO,MA5B5BZ,EAAOhM,EAAI,GAAIgL,EAAQuB,QAGf,QAAfhG,EAAM9G,MAAiC,QAAf8G,EAAMxJ,OAAgByP,GAAQ,GACvC,QAAfjG,EAAM9G,MAAiC,WAAf8G,EAAMxJ,OAAmByP,GAAQ,GAcvCjG,EAZFA,EAYgByE,EAZFA,GAAPwB,IAcV,QAAfjG,EAAM9G,KAAuB8G,EAAMuG,YAAc9B,EAAQ+B,eAC1C,UAAfxG,EAAM9G,KAAyB8G,EAAMuG,YAAc9B,EAAQgC,0BAUjE,SAAoBzG,EAAOgG,MACpBhG,GAAwB,SAAfA,EAAM9G,UAEdwN,EAASV,EAAS,QAAU,kBAC5BtO,MAAQsI,EAAMtI,MAAM4O,QAAQI,EAAQ,MA5B5BjB,EAAOhM,EAAI,GAAIgL,EAAQuB,WDatBP,EAAQhB,GAChBgB,WAEEK,EAAeX,EAAKzN,EAAO0N,OAC5BF,EAAQxN,EAAMwN,MAAMyB,GACpB3G,EAAQ,MACN,aACEsF,OACFC,EAAW9B,IAAI2B,aACU,QAApBD,EAAIpM,MAAM,EAAG,cACM,QAAlBoM,EAAIpM,OAAO,qCAMpBmM,QACG,IAAI3D,uBAAwCvB,YAE9CxJ,KAAO0O,EAAM,KACb0B,KAAO1B,EAAM,GACZlF,WAgBA6F,EAAgBxF,EAAOC,OACxBuG,EAAe5G,EAAMlH,MAAMsH,EAAOC,YAC3BQ,EAAQ+F,EAActG,MAAM,OAAOtI,OAEzC,MACC,WACD4O,QACEA,IEpEb,ICJyBC,EDInBlH,ICJmBkH,EDIGA,GCHnB,MACC,SAAC9I,EAAG+I,UAAM/I,IAAM+I,QAChB,SAAC/I,EAAG+I,UAAM/I,IAAM+I,OACjB,SAAC/I,EAAG+I,UAAY,OAAN/I,GAAoB,OAAN+I,GAAkBA,EAAJ/I,OACtC,SAACA,EAAG+I,UAAY,OAAN/I,GAAoB,OAAN+I,GAAc/I,EAAI+I,QACzC,SAAC/I,EAAG+I,UAAY,OAAN/I,GAAoB,OAAN+I,GAAmBA,GAAL/I,QACtC,SAACA,EAAG+I,UAAY,OAAN/I,GAAoB,OAAN+I,GAAc/I,GAAK+I,YACrC,SAAC/I,EAAG+I,WACT/I,GACoB,mBAAdA,EAAEX,UACU,EAAhBW,EAAEX,QAAQ0J,QAEZ,SAAC/I,EAAG+I,UAAMD,EAAS9I,IAAM8I,EAASC,OACnC,SAAC/I,EAAG+I,UAAMD,EAAS9I,IAAM8I,EAASC,MDRrC,SAASC,GAASC,EAAKzE,MACrBA,EAAO,8CACR0E,EAAcP,EAChBzB,SACKzL,EAAI,EAAGA,EAAIyN,EAAYjP,OAAQwB,IAAK,KACrC0N,EAAaD,EAAYzN,GACzB2N,EAAQ,IAAIpK,YAAY2J,EAAsBzI,YAAWiJ,EAAWjJ,YAAWyI,EAAsBzI,gBACtGgH,EAAQ+B,EAAI/B,MAAMkC,GAAS,KACxBpJ,EAAIgJ,GAAQ9B,EAAM,GAAI1C,UAGrB6E,EAFIzH,GAAUsF,EAAM,GAAGa,SAEpB/H,EADAgJ,GAAQ9B,EAAM,GAAI1C,QAK3B0C,EAAQ+B,EAAI/B,MAAMyB,GAAqB,SACpCW,EAAMC,GAAUrC,EAAM,GAAI1C,GAC1BgF,EAAOD,GAAUrC,EAAM,GAAI1C,GAC3B7D,EAAQ,GACL0E,EAAIiE,EAAKjE,GAAKmE,EAAMnE,MACrBtL,KAAKsL,UAEN1E,SAGF4I,GAAUN,EAAKzE,GAGjB,SAAS+E,GAAWtG,EAAKuB,QACxBvB,GAAOA,EAAI8E,WRoBQ9E,EQjBHA,ERkBfjC,EAAYuE,KAAKtC,UAenB,SAAuBA,OACxBwG,EAAMxG,EAAIiE,MAAMhG,MAChBuI,SACKC,OAAOzG,QAEVA,EAAIiE,MAAM/F,SAEe,SAAtB8B,EAAI0G,mBAEP1G,EAAIiE,MAAM9F,WAEP6B,EAAIlI,MAAM,GAAI,SAEjB,IAAIiD,2BAA2BiF,kBQ7C5B0F,CAAqB1F,GRgBzB,IAAoBA,EAQCA,KAAAA,EQtBHA,ERuBhBhC,EAAasE,KAAKtC,UQtBhBuB,EAAMiB,IAAIxC,SAEb,IAAIjF,0BAA0BiF,iBAG/B,SAAS6F,GAAU1E,UAChBwF,GAAQxF,GAGX,SAASwF,GAASxF,UACR,IAARA,GAAAA,MAA+BA,eE/ClCyF,GAAS,+CACI,WAAgBC,EAAWtF,sDAiB1C,WAA+BuF,2FACP,QAAlBA,EAAS7O,qBACW1D,KAAKwS,UAAUD,EAAUvF,gEAC5B1O,IAAZmU,EAAwB,GAAKA,aAEhB,UAAlBF,EAAS7O,8BACJ1D,KAAK0S,YAAYH,EAAUvF,mDAE7BuF,EAASrQ,oLAxBX8K,EAAO,sDAEH,yBACOsF,wGAEAK,EAAetS,KAAKL,KAAMoM,0EAEpCwG,gBAAavG,aACbwG,aAAetD,qCAGb,IAAIpD,OAAeC,kSAGtBmD,4KAcE,WAAgBgD,EAAUvF,qFACb,aAAlBuF,EAASvR,WACL,IAAIqL,EAAiB,qCAEP,UAAlBkG,EAASvR,WACL,IAAIqL,EAAiB,wDAEtBkG,EAASF,OAAOrF,4IAGZ,WAAgBuF,EAAUvF,iGACrBhN,KAAK+R,UAAUQ,EAAUvF,0BACtB1O,IAAZmU,EAAwB,GAAKtL,EAAUsL,4GAGrC,SAAUF,EAAUvF,aACtBA,EAAO,wCACPuF,EAASO,QAAQpG,OACtB,SAAC7J,EAAMoH,UAAWA,EAAOoI,OAAOxP,EAAMmK,IACtCwE,GAAQe,EAASQ,QAAS/F,MCjDhC,SAAS3D,GAAM2J,EAAQhG,OACfpH,EAAM,GACR8J,eACQS,UAAY,EAChBT,EAAQpG,EAAY4G,KAAK8C,IAAU,KACnCC,EAAIvD,EAAM,GACVtC,EAAIsC,EAAM,KACZuD,GAAKlB,GAAU3E,EAAGJ,UAEjBpH,ECTT,IAAMsN,GAAU,IAAI1L,UAAU2J,GAAczI,OAAU,KCAvC,YAAUyK,EAAKC,OACtBC,EAAS,MACP,SAAUpD,eACTA,OAASA,OACTqD,SAAW,GACTtT,SAEL,SAAUgB,EAAMuS,eACbD,SAAStS,GAAQuS,EACfvT,cAEA,SAAUwT,EAAOnS,OAClBoS,EAAIzT,KAAKsT,SAASE,MACP,mBAANC,WACPpS,IACK,SAGJ,gBACAqS,QAAQ,iBACTlJ,UACIxK,KAAK2T,gBAAkBnJ,EAAQxK,KAAKiQ,OAAO2D,eAC7C5T,KAAK0T,QAAQ,QAASlJ,IACP,QAAfA,EAAM9G,MACN1D,KAAK0T,eAAelJ,EAAMxJ,KAAQwJ,SAGhC+H,EAAWsB,EAAWrJ,EAAOxK,KAAKiQ,aACnCyD,QAAQ,WAAYnB,UAEtBvS,KAAK2T,eAAe3T,KAAK0T,QAAQ,OAC/B1T,WAEH,uBACC2T,eAAgB,EACd3T,gBAaF6T,EAAYrJ,EAAOyF,WAEpB7D,EAAM,cACS,QAAf5B,EAAM9G,KACFoQ,EAAStJ,EAAOyF,GACE,UAAfzF,EAAM9G,KACTqQ,EAAWvJ,EAAMtI,OAEjBsI,GAEJA,MAAQA,EACL4B,EACP,MAAOH,SACD,IAAID,EAAWC,EAAGzB,aAInBsJ,EAAUtJ,EAAOyF,SACL,aAAfzF,EAAMxJ,MAAsC,UAAfwJ,EAAMxJ,KAAyBwJ,EACzD2I,EAAIa,UAAUxJ,EAAOyF,YAGrB8D,EAAYtI,ObRKA,EaSpBiE,GbToBjE,EaSOA,EbR1BvJ,GAAMgO,KAAKzE,OaSTiE,2BAAgCjE,OAEjCsH,EAAUrD,EAAM,KAChBjE,EAAIwI,OAAOvE,EAAMU,MAAQV,EAAM,GAAGjN,gBAElCqQ,EAAU,GACRpD,EAAQyB,EAAejB,KAAKzE,MAC1BlJ,KAAK,CAACmN,EAAM,GAAGa,eAGlB,MACC,gBACGwC,UACAD,EAAQvH,IAAI,mBAAO6H,EAAOY,UAAUvI,YAS1C,gBAvDSwE,WACVzF,SACE8H,EAAY,GACV9H,EAAQyF,EAAO2D,WACXrR,KAAKsR,EAAWrJ,EAAOyF,WAE5BqC,mCA4CarC,UACVxP,GAAO4S,GACRa,KAAKjE,kBC7FlB,IAAMkE,GAAe,UCYN,YAAUC,EAAQC,GCXlB,IAAUC,EAAQD,EACzBE,EACCC,ECFgBF,EAAQD,IACzBE,EACCE,ECNgBH,EAAQD,ECARC,ECGAA,EAAQD,EACzBK,EACAC,ECDiBL,IAChBG,EAAcD,EAAaI,ECAXN,EAAQD,MACzBhI,EACAkI,ECPiBD,EAAQD,ETKRC,EAAQD,IACzBQ,EUFiBP,IAChBG,EAAcD,EAAaM,ECIXR,EAAQD,MACzBF,ECViBG,ECIAA,EAAQD,IACzBE,ECLiBD,EAAQD,EZIRC,EDYhBF,ECZwBC,EDYhBA,ECXTE,EAAK,IAAI/M,WAAWsB,GAAWJ,uBAC9B8L,EAAeH,EAAOU,MAAtBP,cAEAQ,YAAY,SAAU,OACpB,SAAUxK,OACTkF,EAAQlF,EAAM4G,KAAK1B,MAAM6E,MACxB7E,mBAAwBlF,EAAMmF,UAChCrN,IAAMoN,EAAM,QACZxN,MAAQwN,EAAM,WAEb,SAAU1C,OACVL,EAAMlM,GAAO+T,YACfxU,KAAKsC,KAAOgS,EAAOvC,UAAU/R,KAAKkC,MAAO8K,KACvCzK,KAAKoK,GACJ1G,QAAQC,QAAQ,OCfJoO,EFafF,EEbuBC,EFafA,EEZVE,EAAK,IAAI/M,WAAWsB,GAAWJ,YAC9B+L,EAAgBJ,EAAOU,MAAvBN,eAEAO,YAAY,UAAW,OACrB,SAAUC,EAAUC,cACnBxF,EAAQuF,EAAS7D,KAAK1B,MAAM6E,MAC3B7E,EAAUuF,EAAS7D,mCAErBnI,SAAWyG,EAAM,QACjB4C,UAAY,OAEXe,EAASiB,EAAOa,OAAOC,YAAYF,KAClCG,GAAG,iBAAkB,mBAAShC,EAAOjI,SACzCiK,GAAG,WAAY,mBAAOnI,EAAKoF,UAAU/P,KAAK6J,KAC1CiJ,GAAG,MAAO,kBACH,IAAI5Q,aAAawQ,EAAStF,uBAE7BxE,6CAED,WAAgB6B,EAAO3D,0GACViL,EAAOgB,SAASC,gBAAgBvV,KAAKsS,UAAWtF,sBACvDvM,GAAOgU,IACfzU,KAAKiJ,UAAYsG,IACfhN,KAAKoK,kGC5BgB0H,EHkBlBA,GGlBUC,EHkBlBF,GGjBEY,YAAY,OAAQ,OAElB,SAAUC,EAAUC,mBACpBM,KAAOP,EAAS7D,UAChBqE,MAAQ,QACRC,cAAgB,OAEjBC,EAAI,GACFtC,EAASiB,EAAOa,OAAOC,YAAYF,GACtCG,GAAG,WAAY,cACTI,MAAMlT,KAAK,KACTiI,EAAM4G,eACAuE,EAAI,OAGlBN,GAAG,WAAY,kBAAOM,EAAIzI,EAAKwI,gBAC/BL,GAAG,cAAe,mBAAShC,EAAOjI,SAClCiK,GAAG,WAAY,mBAAOM,EAAEpT,KAAK6J,KAC7BiJ,GAAG,MAAO,kBACH,IAAI5Q,aAAawQ,EAAStF,uBAG7BxE,gBAGD,SAAU6B,EAAO3D,OAClB,IAAIpF,EAAI,EAAGA,EAAIjE,KAAKyV,MAAMhT,OAAQwB,IAAK,KACpC2R,EAAS5V,KAAKyV,MAAMxR,MACdoQ,EAAO7C,QAAQoE,EAAOhJ,IAAKI,KAC1BqH,EAAO7C,QAAQxR,KAAKwV,KAAMxI,UAE9BsH,EAAOgB,SAASC,gBAAgBK,EAAOtD,UAAWtF,UAGtDsH,EAAOgB,SAASC,gBAAgBvV,KAAK0V,cAAe1I,OCnCxCsH,EJmBfF,GIlBDY,YAAY,UAAW,OACrB,SAAUC,EAAUC,OACnB7B,EAASiB,EAAOa,OAAOC,YAAYF,KAEtCG,GAAG,QAAS,YACQ,eAAf7K,EAAMxJ,MAAuBqS,EAAOjI,SAEzCiK,GAAG,MAAO,kBACH,IAAI5Q,aAAawQ,EAAStF,uBAE7BxE,WCRYmJ,ELiBjBF,EKjByBC,ELiBjBA,EKhBRK,EAAU,IAAIlN,eAAeqO,GAAOnN,4BACpCiM,EAAe,IAAInN,OAAOqO,GAAOnN,OAAQ,OAExCsM,YAAY,QAAS,OAEnB,SAAUC,EAAUC,OACrBxF,EAAQgF,EAAQxE,KAAK+E,EAAS7D,SAC3B1B,kBAAuBuF,EAAStF,UAElCmG,MAAQpG,EAAM,IAAM,OACnBqG,EAAarG,EAAM,YAEpBqG,WAAa,GAEVrG,EAAQiF,EAAazE,KAAK6F,SAC3BA,WAAWxT,KAAKmN,EAAM,OAEtB1P,KAAK+V,WAAWtT,4BAA6BwS,EAAStF,aAGvD,SAAU3C,EAAO3D,OAEjB2M,EAAc,SADN3B,EAAOtC,UAAU/R,KAAK8V,MAAO9I,OACHhN,KAAK+V,WAAWrK,KAAK,KAEvDuK,EAASjJ,EAAMU,KAAKuI,OAASjJ,EAAMU,KAAKuI,QAAU,GACpD3H,EAAM2H,EAAOD,QAEL1X,IAARgQ,MACI2H,EAAOD,GAAe,OAGxBvI,EAAYzN,KAAK+V,WAAWzH,aAC3BA,EAAM,GAAKtO,KAAK+V,WAAWtT,SAC3BuT,GAAe1H,EAEf+F,EAAOtC,UAAUtE,EAAWT,MCnChBsH,ENiBbF,IAAQC,EMhByCU,MAApDN,IAAAA,aAAcD,IAAAA,YAAaI,IAAAA,iBAE3BI,YAAY,YAAa,OACvB,SAAUxK,OACTkF,EAAQlF,EAAM4G,KAAK1B,MAAM5G,OACxB4G,wBAA6BlF,EAAM4G,WACrCnI,SAAWyG,EAAM,WAEhB,SAAU1C,EAAO3D,OACnBxF,EAAUmJ,EAAMC,eAClBjN,KAAKiJ,SACL,gBACQnB,EAAQtJ,OAAO0B,eAAeyM,UAC7B7E,IAAU2M,GAAgB3M,IAAU0M,WAG1C3Q,MACOpD,GAAOmU,KACXtH,QAAQzJ,IAEsB,iBAA3BA,EAAQ7D,KAAKiJ,cACdjJ,KAAKiJ,UAAY,KAElBpF,EAAQ7D,KAAKiJ,aCvBHqL,EPiBnBF,EOjB2BC,EPiBnBA,8BOeZ,WAAuBrH,EAAO3D,4GAGvBtB,KAFYsM,EAAO7C,QAAQxR,KAAKkW,WAAYlJ,MAG3ChG,EAASkP,IAAmC,EAApBA,EAAWzT,SACxB,CAACyT,GACLtO,GAASsO,OACL1X,OAAO4D,KAAK8T,GAAY3K,IAAI,SAACjJ,SAAQ,CAACA,EAAK4T,EAAW5T,QAGlEyF,GAAQmO,IAAgBA,EAAWzT,gDAC/B6R,EAAOgB,SAASC,gBAAgBvV,KAAK0V,cAAe1I,oBAG9C3D,EAAK8M,QAAU,SACA7X,IAAf+K,EAAK+M,MAAuBF,EAAWzT,OAAS4G,EAAK+M,QAEvDF,EAAW3S,MAAM4S,EAAQA,EAASC,GAC3CpW,KAAKqW,UAAUH,EAAW1T,YAEb0T,EAAW3K,IAAI,SAAC8C,EAAMpK,OAC/B0I,EAAM,YACR2J,EAAKrN,UAAYoF,IACjBkI,QAAU,OACC,IAANtS,QACAA,EAAI,SACHA,OACFA,IAAMiS,EAAWzT,OAAS,SACxByT,EAAWzT,cACXyT,EAAWzT,OAASwB,UACnBiS,EAAWzT,OAASwB,EAAI,GAE5B0I,MAGE,MACI,YACT6B,GAAU/B,6CAAU,WAAM5I,qFAC1B2S,2DAEEjU,KAAKsB,qBAEKyQ,EAAOgB,SAASC,gBAAgBe,EAAKhE,UAAWtF,yEAE1DoC,gBAAa/C,uBACP+C,KAAEyD,aACQ,UAAdzD,KAAEzD,aACO,gDAIXjJ,IAAImB,+IAEL0L,kGApFHlD,EAAmBgI,EAAOU,MAAM1I,iBAChCkI,EAAK,IAAI/M,OAAO,KAAKsB,GAAWJ,sBAC9BxG,GAAMwG,kBACAW,GAAKX,sCAELW,GAAKX,gBAEZsM,YAAY,MAAO,CAAC1F,eAEX2F,EAAUC,cAClBxF,EAAQ6E,EAAGrE,KAAK+E,EAAS7D,SACxB1B,kBAAuBuF,EAAStF,UAClC1G,SAAWyG,EAAM,QACjBwG,WAAaxG,EAAM,QACnB2G,WAAa3G,EAAM,QAEnB4C,UAAY,QACZoD,cAAgB,OAEjBC,SACEtC,EAASiB,EAAOa,OAAOC,YAAYF,GACtCG,GAAG,QAAS,kBAAOM,EAAIzI,EAAKoF,YAC5B+C,GAAG,WAAY,kBAAOM,EAAIzI,EAAKwI,gBAC/BL,GAAG,aAAc,kBAAMhC,EAAOjI,SAC9BiK,GAAG,WAAY,mBAAOM,EAAEpT,KAAK6J,KAC7BiJ,GAAG,MAAO,iBACH,IAAI5Q,aAAawQ,EAAStF,uBAG7BxE,SAtByBkH,WCbHgC,ERuBpBA,GQvBYC,ERuBpBF,GQtBIY,YAAY,KAAM,OAEhB,SAAUC,EAAUC,mBACpBuB,SAAW,QACXf,cAAgB,OAEjBC,SACEtC,EAASiB,EAAOa,OAAOC,YAAYF,GACtCG,GAAG,QAAS,kBAAMnI,EAAKuJ,SAASlU,KAAK,MAC9B0S,EAAS7D,eACHuE,EAAI,OAEjBN,GAAG,YAAa,cACVoB,SAASlU,KAAK,MACXiI,EAAM4G,eACDuE,EAAI,OAGlBN,GAAG,WAAY,kBAAOM,EAAIzI,EAAKwI,gBAC/BL,GAAG,YAAa,mBAAShC,EAAOjI,SAChCiK,GAAG,WAAY,mBAAOM,EAAEpT,KAAK6J,KAC7BiJ,GAAG,MAAO,kBACH,IAAI5Q,aAAawQ,EAAStF,uBAG7BxE,gBAGD,SAAU6B,EAAO3D,0CACFrJ,KAAKyW,wDAAU,KAAzBb,UACHJ,EAAOnB,EAAO7C,QAAQoE,EAAOJ,KAAMxI,MACrCqH,EAAO/C,SAASkE,UACXlB,EAAOgB,SAASC,gBAAgBK,EAAOtD,UAAWtF,wFAGtDsH,EAAOgB,SAASC,gBAAgBvV,KAAK0V,cAAe1I,MT/BxCsH,ECmBfF,EDnBuBC,ECmBfA,EDlBVQ,EAAS,IAAIrN,mBAAmBtF,GAAMwG,cAErCsM,YAAY,UAAW,OACrB,SAAUxK,OACXkF,EAAQyE,GAAajE,KAAK1F,EAAM4G,MAChC1B,SACGgH,YAAchH,EAAM,OAGnBxN,GAAMgO,KAAK1F,EAAM4G,cAElBlP,MAAQwN,EAAM,OAGbmF,EAAO3E,KAAK1F,EAAM4G,cAEnBuF,KAAOjH,EAAM,yCAGd,WAAgB1C,EAAO3D,+GAEzB2D,EAAMU,KAAKkJ,oCACThN,GAAWsG,KAAKlQ,KAAKkC,gBACNlC,KAAKkC,MAAMqB,MAAM,GAAI,YACrB+Q,EAAOuC,eAAetE,EAAUvF,EAAM8J,SAAU9J,EAAMU,8DAE5D2G,EAAOtC,UAAU/R,KAAKkC,MAAO8K,qCAG/BhN,KAAK0W,8BAEX3H,0CAEc/B,EAAMU,KAAKqJ,SACR/J,EAAMU,KAAKsJ,YAE7BtJ,KAAKqJ,OAAS,KACdrJ,KAAKsJ,UAAY,SACnBhX,KAAK2W,SACF5H,GAAYsF,EAAOtC,UAAU/R,KAAK2W,KAAM3J,cAEvBsH,EAAO2C,YAAYlI,EAAU/B,EAAMU,KAAKsB,gCAC1DzM,KAAK8G,aACQiL,EAAOgB,SAASC,gBAAgBjD,EAAWtF,6BACxDtK,IAAI2G,KACJqE,KAAKqJ,OAASG,IACdxJ,KAAKsJ,UAAYG,oBAChB5H,mGUjDY+E,ETqBbF,IAAQC,ESpByCU,MAApDN,IAAAA,aAAcD,IAAAA,YAAaM,IAAAA,iBAE3BE,YAAY,YAAa,OACvB,SAAUxK,OACTkF,EAAQlF,EAAM4G,KAAK1B,MAAM5G,OACxB4G,wBAA6BlF,EAAM4G,WACrCnI,SAAWyG,EAAM,WAEhB,SAAU1C,EAAO3D,OACnBxF,EAAUmJ,EAAMC,eAClBjN,KAAKiJ,SACL,gBACQnB,EAAQtJ,OAAO0B,eAAeyM,UAC7B7E,IAAU2M,GAAgB3M,IAAU0M,IAG1C3Q,MACOpD,GAAOqU,KACXxH,QAAQzJ,IAEsB,iBAA3BA,EAAQ7D,KAAKiJ,cACdjJ,KAAKiJ,UAAY,OAErB2D,EAAM/I,EAAQ7D,KAAKiJ,mBACjBjJ,KAAKiJ,YACN2D,KCrBoByH,EViBhBA,EUhBTF,EAAe,OADEG,EViBhBF,GUdAY,YAAY,SAAU,OACpB,SAAUxK,EAAO0K,OAClBxF,EAAQyE,EAAajE,KAAK1F,EAAM4G,MAChC1B,SACG0H,aAAe1H,EAAM,OAGpBmG,GAAO3F,KAAK1F,EAAM4G,cAEnBiG,OAAS3H,EAAM,SAGjB4H,KAAOhD,EAAOa,OAAO7F,MAAM4F,wCAE1B,WAAgBlI,EAAO3D,0GACd2D,EAAMU,KAAKkJ,gBACtBvC,EAAOtC,UAAU/R,KAAKqX,OAAQrK,GAC9BhN,KAAKoX,0DAIH1J,KAAKsJ,UAAY,iBACJ1C,EAAOgB,SAASC,gBAAgBvV,KAAKsX,KAAMtK,+BAChC1O,IAA1B0O,EAAMU,KAAKqJ,OAAO,QACdrJ,KAAKqJ,OAAO,IAAMxH,YAEF+E,EAAO2C,YAAYI,EAAQrK,EAAMU,KAAKsB,+BACxDzM,KAAK8G,KACLqE,KAAKsJ,UAAY,mBACD1C,EAAOgB,SAASC,gBAAgBjD,EAAWtF,6BAC3DtK,IAAI2G,qBACHoJ,qGAIJuC,YAAY,QAAS,OACnB,SAAUxK,EAAO0K,cAChBxF,EAAQ,MAAMQ,KAAK1F,EAAM4G,WAC1BmG,MAAQ7H,EAAQA,EAAM,GAAK,QAE3B4H,KAAO,OACNjE,EAASiB,EAAOa,OAAOC,YAAYF,GACtCG,GAAG,eAAgB,kBAAMhC,EAAOjI,SAChCiK,GAAG,WAAY,mBAAOnI,EAAKoK,KAAK/U,KAAK6J,KACrCiJ,GAAG,MAAO,iBACH,IAAI5Q,aAAa+F,EAAMmF,uBAE1BxE,6CAED,WAAgB6B,kGAEQ1O,OADT0O,EAAMU,KAAKqJ,OAAO/W,KAAKuX,6BAExCC,wCACMlD,EAAOgB,SAASC,gBAAgBvV,KAAKsX,KAAMtK,uCAExB,UAAzBA,EAAMU,KAAKsJ,mBACPtJ,KAAKqJ,OAAO/W,KAAKuX,OAAShI,oBACzB,qDAEFA,kGCvEY+E,EX2BnBF,GW1BGY,YAAY,MAAO,OACjB,SAAUC,EAAUC,mBACpBjF,OAAS,OAERoD,EAASiB,EAAOa,OAAOC,YAAYF,KAEtCG,GAAG,QAAS,YACQ,WAAf7K,EAAMxJ,KAAmBqS,EAAOjI,OAC/B8B,EAAK+C,OAAO1N,KAAKiI,KAEvB6K,GAAG,MAAO,iBACH,IAAI5Q,aAAawQ,EAAStF,uBAE7BxE,gBAED,SAAU6B,EAAO3D,UAChBrJ,KAAKiQ,OAAO1E,IAAI,mBAASf,EAAMmF,MAAKjE,KAAK,OCb7B4I,EZwBdF,EYxBsBC,EZwBdA,EYvBXE,EAAK,IAAI/M,OAAO,KAAKsB,GAAWJ,sBAChCxG,GAAMwG,kBACAW,GAAKX,gBAEVsM,YAAY,WAAY,OAEtB,SAAUC,EAAUC,cACnBxF,EAAQ6E,EAAGrE,KAAK+E,EAAS7D,SACxB1B,kBAAuBuF,EAAStF,UAElC1G,SAAWyG,EAAM,QACjBwG,WAAaxG,EAAM,QACnB4C,UAAY,OAEbqD,SACEtC,EAASiB,EAAOa,OAAOC,YAAYF,GACtCG,GAAG,QAAS,kBAAOM,EAAIzI,EAAKoF,YAC5B+C,GAAG,kBAAmB,mBAAShC,EAAOjI,SACtCiK,GAAG,WAAY,mBAAOM,EAAEpT,KAAK6J,KAC7BiJ,GAAG,MAAO,iBACH,IAAI5Q,aAAawQ,EAAStF,uBAG7BxE,6CAGD,WAAgB6B,EAAO3D,oHACZgL,EAAO7C,QAAQxR,KAAKkW,WAAYlJ,IAAU,KAC5C3D,EAAK8M,QAAU,SACA7X,IAAf+K,EAAK+M,MAAuBF,EAAWzT,OAAS4G,EAAK+M,QAEvDF,EAAW3S,MAAM4S,EAAQA,EAASC,KAClC/M,EAAKoO,MAAQvB,EAAWzT,SACpByT,EAAW3K,IAAI,SAAC8C,EAAMpK,OAC/B0I,EAAM,YACR2J,EAAKrN,UAAYoF,EACd1B,eAIE,aACL6B,GAAU/B,6CAAU,WAAO5I,EAASyK,iGAClCtD,KAAK0M,MAAMpJ,EAAMmJ,GAAQ,EAEnB,MADCnJ,EAAMmJ,EAAQ,KAEb,IAARE,OACM,6BAEeA,4BAGFC,SACnBrV,KAAKsB,YACGyQ,EAAOgB,SAASC,gBAAgBe,EAAKhE,UAAWtF,8BACtD,UACFtK,IAAImB,qBACH0L,uHAEC,EAANoI,OACM,2BAEHpI,mGClEoB8E,Eb6BhBA,Ga7BQC,Eb6BhBF,Ga5BAY,YAAY,SAAU,OACpB,SAAUC,EAAUC,mBACpB5C,UAAY,QACZoD,cAAgB,OACjBC,SACEtC,EAASiB,EAAOa,OAAOC,YAAYF,GACtCG,GAAG,QAAS,cACPnI,EAAKoF,YACJkD,KAAOP,EAAS7D,OAEtBiE,GAAG,WAAY,kBAAOM,EAAIzI,EAAKwI,gBAC/BL,GAAG,gBAAiB,mBAAShC,EAAOjI,SACpCiK,GAAG,WAAY,mBAAOM,EAAEpT,KAAK6J,KAC7BiJ,GAAG,MAAO,kBACH,IAAI5Q,aAAawQ,EAAStF,uBAG7BxE,gBAGD,SAAU6B,EAAO3D,OACjBmM,EAAOnB,EAAO7C,QAAQxR,KAAKwV,KAAMxI,UAChCqH,EAAOjC,QAAQoD,GAClBlB,EAAOgB,SAASC,gBAAgBvV,KAAKsS,UAAWtF,GAChDsH,EAAOgB,SAASC,gBAAgBvV,KAAK0V,cAAe1I,MCzB9D,IAAM6K,GAAa,CACjB,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAChE,YAAa,UAAW,WAAY,YAEhCC,GAAW,CACf,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAE9DC,GAAkBF,GAAWtM,IAAIyM,IACjCC,GAAgBH,GAASvM,IAAIyM,IAC7BE,GAAW,GACZ,OACA,OACA,aACQ,MAGb,SAASF,GAAMvM,UACNA,EAAIlI,MAAM,EAAG,GAItB,IAAM4U,GAAQ,aACC,SAAUC,SAEd,CAAC,GADID,GAAME,WAAWD,GAAK,GAAK,GACtB,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,kBAGzC,SAAUA,WAClBE,EAAM,EACDrU,EAAI,EAAGA,EAAImU,EAAEG,aAActU,KAC3BkU,GAAMK,YAAYJ,GAAGnU,UAEvBqU,EAAMF,EAAEK,yBAKF,SAAUL,EAAGM,OAEpBC,EAAM3Y,KAAK4Y,aAAaR,IAAMM,EAAWN,EAAES,UAG3C9W,EAAQ,EADD,IAAI0F,KAAK2Q,EAAEU,cAAe,EAAG,GACnBD,SAAWH,SAC3BK,GAAQC,IAAIhO,KAAK0M,OAAOiB,EAAM5W,GAAQ,GAAK,EAAG,eAG3C,SAAUqW,OACda,EAAOb,EAAEU,sBACU,IAAP,EAAPG,MAAoBA,EAAO,KAAQA,EAAO,KAAQ,GAAKA,eAGzD,SAAUb,OACb3M,EAAM2M,EAAEK,UAAUtW,WAClBiO,EAAQ8I,SAASzN,EAAIlI,OAAO,WAC3B2U,GAAS9H,IAAU8H,GAAA,iBAGnB,SAAUE,UACVc,SAASd,EAAEU,cAAc3W,WAAWgX,UAAU,EAAG,GAAI,MAI1DJ,GAAU,KACT,SAAU7W,EAAOkX,EAAMC,GACrBA,IAAIA,EAAK,aACVrX,EAASE,EAAMC,WACf6W,EAAMI,EAAOpX,EAAOS,OAET,EAARuW,OACIK,EAAKrX,SAGTA,IAILsX,GAAc,GACf,SAAUlB,UACJH,GAAcG,EAAES,aAEtB,SAAUT,UACJN,GAASM,EAAES,aAEjB,SAAUT,UACJL,GAAgBK,EAAEG,eAExB,SAAUH,UACJP,GAAWO,EAAEG,eAEnB,SAAUH,UACJA,EAAEmB,oBAER,SAAUnB,UACJD,GAAMqB,QAAQpB,MAEpB,SAAUA,UACJW,GAAQC,IAAIZ,EAAEK,UAAW,MAE/B,SAAUL,UACJW,GAAQC,IAAIZ,EAAEK,UAAW,EAAG,QAElC,SAAUL,UACJW,GAAQC,IAAIZ,EAAEqB,WAAY,MAEhC,SAAUrB,UACJW,GAAQC,IAAIZ,EAAEqB,WAAa,IAAM,GAAI,MAE3C,SAAUrB,UACJW,GAAQC,IAAIb,GAAMS,aAAaR,GAAI,MAEzC,SAAUA,UACJW,GAAQC,IAAIZ,EAAEqB,WAAY,EAAG,QAEnC,SAAUrB,UACJW,GAAQC,IAAIZ,EAAEqB,WAAa,IAAM,GAAI,EAAG,QAE9C,SAAUrB,UACJW,GAAQC,IAAIZ,EAAEsB,kBAAmB,MAEvC,SAAUtB,UACJW,GAAQC,IAAIZ,EAAEG,WAAa,EAAG,MAEpC,SAAUH,UACJW,GAAQC,IAAIZ,EAAEuB,aAAc,MAElC,SAAUvB,UACHA,EAAEqB,WAAa,GAAK,KAAO,QAElC,SAAUrB,UACHA,EAAEqB,WAAa,GAAK,KAAO,QAElC,SAAUrB,UACJD,GAAMyB,UAAUxB,MAEtB,SAAUA,UACJpN,KAAK6O,MAAMzB,EAAE0B,UAAY,QAE/B,SAAU1B,UACJW,GAAQC,IAAIZ,EAAE2B,aAAc,MAElC,SAAU3B,UACJA,EAAES,UAAY,KAEpB,SAAUT,UACJD,GAAM6B,cAAc5B,EAAG,MAE7B,SAAUA,UACJA,EAAES,YAER,SAAUT,UACJD,GAAM6B,cAAc5B,EAAG,MAE7B,SAAUA,UACJA,EAAE6B,wBAER,SAAU7B,UACJA,EAAE8B,wBAER,SAAU9B,UACJA,EAAEU,cAAc3W,WAAWgX,UAAU,EAAG,MAE9C,SAAUf,UACJA,EAAEU,iBAER,SAAUV,OACL+B,EAAK/B,EAAEgC,oBAAsB,GAAK,WAC3B,EAALD,EAAS,IAAM,KAAOpB,GAAQC,IAAIhO,KAAKqP,IAAIF,GAAK,QAErD,iBACI,MAGXb,GAAY7F,EAAI6F,GAAYgB,EAC5BhB,GAAYiB,EAAIjB,GAAYkB,MCzKtBC,GAAY,KACX,YACA,WACA,WACA,YACA,SAEDC,GAAc,SACT,WACD,WACA,YACC,YACA,KAGL5H,GAAU,KACP,mBAAK9H,KAAKqP,IAAIjN,WACX,SAACA,EAAG/L,UAAQ+L,EAAI/L,cACZ,mBAAO8F,GAAUsE,GAAKpI,OAAO,GAAGsX,cAAgBlP,EAAIlI,MAAM,SAChE,mBAAKyH,KAAK4P,KAAKxN,WACb,SAACA,EAAG/L,UAAQ4G,MAAMxJ,UAAU0Q,OAAO9O,KAAK+M,EAAG/L,SAC7C,SAAC+L,EAAG/L,OAyGQwZ,EAxGdA,EAAOzN,QACD,QAANA,IACK,IAAI3F,KACF6D,EAAW8B,OACb,IAAI3F,KAAK2F,KAoGAyN,EAlGCA,aAmGEpT,OAASnE,MAAMuX,EAAKC,WD4C9B,SAAU1C,EAAG2C,WACtBC,EAAS,GACTC,EAAYF,IAEH,KACLxJ,EAAI,MACJ2J,EAAU3J,EAAErB,KAAK+K,OAGlBC,SACIF,EAASC,KAIRA,EAAU1X,MAAM,EAAGgO,EAAEpB,UAAY,KAC/B8K,EAAU1X,MAAMgO,EAAEpB,eAGxBkJ,EAAK6B,EAAQ,GAAG7X,OAAO,GACvB8X,EAAO7B,GAAYD,MACf8B,EAAOA,EAAK9a,KAAKL,KAAMoY,GAAK,IAAMiB,GCnKjB+B,CAASP,EAAMxZ,GAAO+L,WAExC,SAACA,EAAG/L,UAAQiQ,GAASlE,GAAKA,EAAI/L,cAC3B,SAAC+L,EAAG/L,UAAQ+L,EAAI/L,YAClB,mBAAK+L,EAAE+E,sBACTkJ,eAEK,mBAAOA,GAoEflU,GApE+BsE,GAoEhBqF,QAAQ,yBAA0B,mBAAK4J,GAAYY,aAnEhE,mBAAKlO,EAAE,UACP,mBAAKpC,KAAK0M,MAAMtK,SACjB,SAACA,EAAG/L,UAAQ+L,EAAE1B,UAAapN,IAAR+C,EAAoB,IAAMA,SAC7C,mBAAKiK,EAAO8B,WACV,mBAAKjG,GAAUiG,GAAG0D,QAAQ,OAAQ,SACrC,SAAC1I,EAAK/G,UAAQ+G,EAAImD,IAAI,mBAAK6B,EAAE/L,YAC3Bka,GAAU,SAACnO,EAAG/L,UAAQ+L,EAAI/L,WACzBka,GAAU,SAACnO,EAAG/L,UAAQ+L,EAAI/L,kBACnB,mBAAK+L,EAAE0D,QAAQ,MAAO,gBAC/ByK,GAAU,SAACnO,EAAG/L,UAAQ6Q,OAAO9E,GAAK8E,OAAO7Q,aACtC,SAAC+L,EAAG/L,UAAQA,EAAM+L,UACnB,SAACA,EAAG/L,UAAQ+L,EAAErC,MAAM1J,GAAKqK,KAAK,kBACxB,SAAC0B,EAAG5E,UAAM4E,EAAE0D,QAAQtI,EAAG,aAC5B,SAAC4E,EAAGoO,EAASC,UACtBtU,GAAUiG,GAAGrC,MAAMyQ,GAAS9P,KAAK+P,kBAClB,SAACrO,EAAGsO,EAAMC,UAASxU,GAAUiG,GAAG0D,QAAQ4K,EAAMC,YACpD,mBAAKvO,EAAE5K,iBACT,SAAC4K,EAAG/L,OACLua,EAAM5Q,KAAK6Q,IAAI,GAAIxa,GAAO,UACzB2J,KAAK6O,MAAMzM,EAAIwO,EAAKva,GAAOua,UAE1B,mBAAOzU,GAAUsE,GAAKqF,QAAQ,OAAQ,UACxC,mBAAK1D,EAAE3K,cACN,SAAC2K,EAAGvC,EAAOpI,eACHnE,IAAXmE,IAAsBA,EAAS,GAC5B2K,EAAE7J,MAAMsH,EAAOA,EAAQpI,SAExB,SAAC2K,EAAG/L,UAAQ+L,EAAE0O,KAAKza,UAClB,SAAC+L,EAAG/L,UAAQ8F,GAAUiG,GAAGrC,MAAM1J,UAC/B,SAAC+L,UAAMjG,GAAUiG,GAAGmD,mBACf,mBAAKpJ,GAAUiG,GAAG0D,QAAQ,4DAA6D,oBACnF,mBAAK3J,GAAUiG,GAAG0D,QAAQ,MAAO,WAC1C,SAAC1D,EAAG/L,UAAQ+L,EAAI/L,YACb,SAAC+L,EAAG5E,EAAGuT,iBAENzd,IAANyd,EAAmB,MAAQA,IAC5BvT,GAAK,MAFLrB,GAAUiG,IAGR3K,QAAU+F,EAAU4E,EACnBA,EAAE6G,OAAO,EAAGzL,EAAIuT,EAAEtZ,QAAUsZ,iBAEpB,SAAC3O,EAAG5E,EAAGuT,QACZzd,IAANyd,IAAiBA,EAAI,WACnB3T,EAAMgF,EAAErC,MAAM,KAChBqD,EAAMhG,EAAI7E,MAAM,EAAGiF,GAAGkD,KAAK,YAC3BtD,EAAI3F,OAAS+F,IAAG4F,GAAO2N,GACpB3N,QAED,SAAUhG,OACVE,EAAI,UACFF,GAAO,IAAI6B,OAAO,mBACpB3B,EAAE3J,eAAeiO,OAGnBA,IAAO,aAIH,mBAAOzF,GAAUsE,GAAKkP,0BAClB,mBAAKlM,EAAE1D,MAAM,KAAKQ,IAAIyQ,oBAAoBtQ,KAAK,iBAC/C,mBAAK+C,EAAE1D,MAAM,KAAKQ,IAAI0Q,oBAAoBvQ,KAAK,OAG/D,SAAS2P,GAAQ5P,UACRtE,GAAUsE,GAAKqF,QAAQ,aAAc,mBAAK2J,GAAUa,KAO7D,SAASY,GAAU9O,OACXuI,GAAKvI,EAAI,IAAIrC,MAAM,YACN,EAAX4K,EAAElT,OAAckT,EAAE,GAAGlT,OAAS,EAOxC,SAAS0E,GAAWvB,UACXA,EAAM,GAGf,SAAS2V,GAAWhI,UACX,SAAC/K,EAAG+I,OATS/I,EAAG+I,EAUf4K,GAVY3T,EAUIA,EAVD+I,EAUIA,EATpBvG,KAAKC,IAAIiR,GAAS1T,GAAI0T,GAAS3K,YAU7BgC,EAAG/K,EAAG+I,GAAG6K,QAAQD,IAQb,SAASE,GAAa/H,U/B3D9B,SAAiBjS,EAAQ8L,OAEzB,IAAM8E,OADF5Q,GAAU,MAEbA,EAAO1D,eAAesU,KACe,IAAnC9E,EAAS9L,EAAO4Q,GAAIA,EAAG5Q,GAAmB,aAG3CA,E+BqDAiJ,CAASwH,GAAS,SAACqI,EAAMna,UAASsT,EAAOgI,eAAetb,EAAMma,KAGvEkB,GAAYvJ,QAAUA,mBC3HhByJ,GAAU,MACR,SAAUC,EAAKvS,EAAQgF,UACvBA,EAAQvH,aACLA,MAAQ,SAEVuH,QAAUA,OACVuN,IAAMA,OACNvS,OAASA,OACTkL,OAASsH,GAAOD,EAAKvS,QACrBqL,SrBmCU7U,GAAO4R,OqBjCjBrS,KAAMqU,OACHrU,MAEDA,YAEF,SAAUuP,EAAMR,OACfkB,EAASyM,EAAgBnN,EAAMR,EAAU/O,KAAKiP,gBAC7CjP,KAAKmV,OAAO7F,MAAMW,WAEnB,SAAU7D,EAAKO,EAAKe,KACnBpC,EAAS,GAAItL,KAAKiP,QAASvB,O5BwHbf,EAAKe,EAQtBV,E4B/HEA,G5BuHeL,E4BvHOA,E5BuHFe,E4BvHOA,G5B+H7BV,EAAQ1B,GAASkB,IACjBkB,KAAOpC,EARU,kBACJ,oBACC,kBACF,SACR,QACF,IAG8BoC,KAChCjB,SAAW,CAACE,GAAO,IAClBK,U4BjIEhN,KAAKsV,SAASC,gBAAgBnJ,EAAKY,iDAE5B,WAAgBuC,EAAM5C,EAAKe,wGACvB1N,KAAKsP,MAAMC,4CACtBvP,KAAKqS,OAAOjG,EAAKO,EAAKe,8IAElB,WAAgB/C,EAAMqE,+GACVuD,EAAiB5H,EAAMqE,EAAMhP,KAAKiP,kDAClDjP,KAAK2c,aAAa5N,4BAAU,kHACfwD,EAAcxD,4CACzB7B,EAAKoC,MAAM7D,EAAKsD,wLAGf,WAAgBpE,EAAMgC,EAAKe,iGAC9BpC,EAAS,GAAIoC,YACI1N,KAAKiX,YAAYtM,EAAM+C,EAAKsB,+CAC7ChP,KAAKqS,OAAOC,EAAW3F,EAAKe,+IAEvB,WAAgBpL,EAAKsa,gGACZ5c,KAAKiP,QAAQvH,QACd1H,KAAK0H,MAAMpF,4BACtBtC,KAAK0H,MAAMpF,0CAEAsa,2BAChBC,SACGnV,MAAMpF,GAAOJ,qBAEbA,2GAEE,SAAUuJ,EAAKuB,OAClBZ,EAAMpM,KAAKmV,OAAOpB,WAAWtI,EAAI8E,eAChCvQ,KAAKsV,SAASvD,UAAU3F,EAAKY,mBAEtB,SAAUhM,EAAMiJ,UACvBjK,KAAKiK,OAAO6S,SAAS9b,EAAMiJ,gBAEvB,SAAUjJ,EAAMwb,UACpBxc,KAAKwc,IAAIM,SAAS9b,EAAMwb,WAEzB,SAAUO,UACTA,EAAO1c,KAAKL,KAAMqU,aAElB,SAAU3G,KACVA,GAAQ,OACT/L,EAAO3B,YACN,SAAUgd,EAAUrQ,EAAK4G,MACvBjI,GAAUtL,KAAKgP,OAAS1D,EAAWtL,KAAKgP,MAC7C,mDACGA,KAAOhP,KAAKgP,OACZiO,WAAWD,EAAUrQ,EAAKe,GAAM3L,KAAK,mBAAQwR,EAAG,KAAMhE,IAAOgE,MAWzD,SAASc,GAAQpF,MACpB3D,EAAS,MACX,CAAC,YACA,UACE,oBACQ,kBACD,iBACD,oBACG,mBACD,UACT,kBACQ,oBACE,GACjB2D,IACKD,KApBV,SAA+B9M,MACzBoJ,GAAUpJ,GAAQ,OAAOA,KACzBoJ,EAAWpJ,GAAQ,MAAO,CAACA,SACzB,IAAIsE,UAAU,iBAAmBtE,GAiBxBgb,CAAqBjO,EAAQD,YpB9FxCmO,EAEEC,EoB8FAhJ,EAAS9I,GAASiR,aACjBrI,MpBjGHiJ,EAAW,GAETC,EAAe,qCACX,WAAgBpQ,+FACV3D,GAAKrJ,KAAKwK,MAAM4G,KAAMpE,GAEP,qBADdhN,KAAKqd,SACFhL,gCACP,mDAEFiL,EAAKjL,OAAOrF,EAAOpH,qGAErB,SAAU4E,EAAOyF,QACjBvM,KAAO,WACP8G,MAAQA,OACRxJ,KAAOwJ,EAAMxJ,SAEZqc,EAAUF,EAASnd,KAAKgB,SACvBqc,SAAgBrd,KAAKgB,wBACvBqc,QAAU5c,GAAO4c,GAClBrd,KAAKqd,QAAQ/N,YACV+N,QAAQ/N,MAAM9E,EAAOyF,KAmBzB,oBAVazF,EAAOyF,OACnBsN,EAAW9c,GAAO2c,YACf9N,MAAM9E,EAAOyF,GACfsN,qBAPUvc,EAAMwb,KACdxb,GAAQwb,sBAUN,MC/CA,SAAUvN,KACbjH,EAAO,GAAIiH,OACjB6D,EAAU,GAER0K,EAAkB,QACd,SAAUxC,EAAQhO,OAClBoE,EAAOpR,KAAKoR,KAAK7F,IAAI,mBAAOwG,GAAU1Q,EAAK2L,cAC5CM,QAAQ0N,GACNhb,KAAKiK,OAAOwT,MAAM,KAAMrM,UAE1B,SAAU3F,OACXiE,EAAQyB,EAAmBjB,KAAKzE,MAC7BiE,EAAO,mBAAqBjE,OAE7BzK,EAAO0O,EAAM,GACbgO,EAAUhO,EAAM,IAAM,GACtBzF,EAAS6I,EAAQ9R,MACD,mBAAXiJ,EAAuB,IAC5BgF,EAAQ0O,qBACJ,IAAInX,+BAA+BxF,eAEtCA,KAAOA,OACPiJ,OAAS,mBAAKwE,QACd2C,KAAO,GACLpR,aAGHoR,EAAO,GACL1B,EAAQwD,GAAQhD,KAAKwN,EAAQnN,SAAU,KACvCnD,EAAIsC,EAAM,GAEVkO,EADK,IAAIpW,OAAU4F,UAAU,KACf8C,KAAKR,EAAMjF,OACLmT,GAAYA,EAASxN,QAAUV,EAAMU,MAC3CgB,EAAK7O,SAAS6K,OAAQgE,EAAK7O,KAAK6K,eAGjDpM,KAAOA,OACPiJ,OAASA,OACTmH,KAAOA,EAELpR,aAiBJ,oBAbayL,UACDhL,GAAO+c,GACRlO,MAAM7D,IAYXqR,kBATM9b,EAAMiJ,KACfjJ,GAAQiJ,GAQK4T,mBAJX,KmBsDOzK,CAAOnE,GAAUA,GAC7BmF,SAGTC,GAAO/C,SAAWA,GAClB+C,GAAOjC,QAAUA,GACjBiC,GAAO7C,QAAUA,GACjB6C,GAAOtC,UAAYA,GACnBsC,GAAOU,MAAQ,kFAKA,gBACC,kBACE,kBACA"} \ No newline at end of file +{"version":3,"file":"liquid.min.js","sources":["../src/util/underscore.js","../node_modules/regenerator-runtime/runtime.js","../src/lexical.js","../src/util/error.js","../src/util/assert.js","../src/scope.js","../src/util/promise.js","../src/template.js","../src/tokenizer.js","../src/whitespace-ctrl.js","../src/syntax.js","../src/operators.js","../src/render.js","../src/tag.js","../src/filter.js","../src/parser.js","../src/tags/include.js","../src/tags/index.js","../src/tags/assign.js","../src/tags/capture.js","../src/tags/case.js","../src/tags/comment.js","../src/tags/cycle.js","../src/tags/decrement.js","../src/tags/for.js","../src/tags/if.js","../src/tags/increment.js","../src/tags/layout.js","../src/tags/raw.js","../src/tags/tablerow.js","../src/tags/unless.js","../src/util/strftime.js","../src/filters.js","../src/index.js"],"sourcesContent":["const toStr = Object.prototype.toString\nconst arrToStr = Array.prototype.toString\n\n/*\n * Checks if value is classified as a String primitive or object.\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is a string, else false.\n */\nexport function isString (value) {\n return toStr.call(value) === '[object String]'\n}\n\nexport function isFunction (value) {\n return typeof value === 'function'\n}\n\nexport function promisify (fn) {\n return function () {\n return new Promise((resolve, reject) => {\n fn(...arguments, (err, result) => {\n err ? reject(err) : resolve(result)\n })\n })\n }\n}\n\nexport function stringify (value) {\n if (isNil(value)) return String(value)\n if (isFunction(value.to_liquid)) return stringify(value.to_liquid())\n if (isFunction(value.toLiquid)) return stringify(value.toLiquid())\n if (isFunction(value.to_s)) return value.to_s()\n if ([toStr, arrToStr].indexOf(value.toString) > -1) return defaultToString(value)\n if (isFunction(value.toString)) return value.toString()\n return toStr.call(value)\n}\n\nfunction defaultToString (value) {\n const cache = []\n return JSON.stringify(value, (key, value) => {\n if (isObject(value)) {\n if (cache.indexOf(value) !== -1) {\n return\n }\n cache.push(value)\n }\n return value\n })\n}\n\nexport function create (proto) {\n return Object.create(proto)\n}\n\nexport function isNil (value) {\n return value === null || value === undefined\n}\n\nexport function isArray (value) {\n // be compatible with IE 8\n return toStr.call(value) === '[object Array]'\n}\n\nexport function isError (value) {\n const signature = toStr.call(value)\n // [object XXXError]\n return signature.substr(-6, 5) === 'Error' ||\n (typeof value.message === 'string' && typeof value.name === 'string')\n}\n\n/*\n * Iterates over own enumerable string keyed properties of an object and invokes iteratee for each property.\n * The iteratee is invoked with three arguments: (value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning false.\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @return {Object} Returns object.\n */\nexport function forOwn (object, iteratee) {\n object = object || {}\n for (const k in object) {\n if (object.hasOwnProperty(k)) {\n if (iteratee(object[k], k, object) === false) break\n }\n }\n return object\n}\n\n/*\n * Assigns own enumerable string keyed properties of source objects to the destination object.\n * Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * Note: This method mutates object and is loosely based on Object.assign.\n *\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @return {Object} Returns object.\n */\nexport function assign (object) {\n object = isObject(object) ? object : {}\n const srcs = Array.prototype.slice.call(arguments, 1)\n srcs.forEach((src) => Object.assign(object, src))\n return object\n}\n\nexport function last (arr) {\n return arr[arr.length - 1]\n}\n\nexport function uniq (arr) {\n const u = {}\n const a = []\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (u.hasOwnProperty(arr[i])) {\n continue\n }\n a.push(arr[i])\n u[arr[i]] = 1\n }\n return a\n}\n\n/*\n * Checks if value is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, new Number(0), and new String(''))\n * @param {any} value The value to check.\n * @return {Boolean} Returns true if value is an object, else false.\n */\nexport function isObject (value) {\n const type = typeof value\n return value !== null && (type === 'object' || type === 'function')\n}\n\n/*\n * A function to create flexibly-numbered lists of integers,\n * handy for each and map loops. start, if omitted, defaults to 0; step defaults to 1.\n * Returns a list of integers from start (inclusive) to stop (exclusive),\n * incremented (or decremented) by step, exclusive.\n * Note that ranges that stop before they start are considered to be zero-length instead of\n * negative — if you'd like a negative range, use a negative step.\n */\nexport function range (start, stop, step) {\n if (arguments.length === 1) {\n stop = start\n start = 0\n }\n step = step || 1\n\n const arr = []\n for (let i = start; i < stop; i += step) {\n arr.push(i)\n }\n return arr\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar regeneratorRuntime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n","// quote related\nconst singleQuoted = /'[^']*'/\nconst doubleQuoted = /\"[^\"]*\"/\nexport const quoted = new RegExp(`${singleQuoted.source}|${doubleQuoted.source}`)\nexport const quoteBalanced = new RegExp(`(?:${quoted.source}|[^'\"])*`)\n\n// basic types\nexport const integer = /-?\\d+/\nexport const number = /-?\\d+\\.?\\d*|\\.?\\d+/\nexport const bool = /true|false/\n\n// property access\nexport const identifier = /[\\w-]+[?]?/\nexport const subscript = new RegExp(`\\\\[(?:${quoted.source}|[\\\\w-\\\\.]+)\\\\]`)\nexport const literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`)\nexport const variable = new RegExp(`${identifier.source}(?:\\\\.${identifier.source}|${subscript.source})*`)\n\n// range related\nexport const rangeLimit = new RegExp(`(?:${variable.source}|${number.source})`)\nexport const range = new RegExp(`\\\\(${rangeLimit.source}\\\\.\\\\.${rangeLimit.source}\\\\)`)\nexport const rangeCapture = new RegExp(`\\\\((${rangeLimit.source})\\\\.\\\\.(${rangeLimit.source})\\\\)`)\n\nexport const value = new RegExp(`(?:${variable.source}|${literal.source}|${range.source})`)\n\n// hash related\nexport const hash = new RegExp(`(?:${identifier.source})\\\\s*:\\\\s*(?:${value.source})`)\nexport const hashCapture = new RegExp(`(${identifier.source})\\\\s*:\\\\s*(${value.source})`, 'g')\n\n// full match\nexport const tagLine = new RegExp(`^\\\\s*(${identifier.source})\\\\s*([\\\\s\\\\S]*)\\\\s*$`)\nexport const literalLine = new RegExp(`^${literal.source}$`, 'i')\nexport const variableLine = new RegExp(`^${variable.source}$`)\nexport const numberLine = new RegExp(`^${number.source}$`)\nexport const boolLine = new RegExp(`^${bool.source}$`, 'i')\nexport const quotedLine = new RegExp(`^${quoted.source}$`)\nexport const rangeLine = new RegExp(`^${rangeCapture.source}$`)\nexport const integerLine = new RegExp(`^${integer.source}$`)\n\n// filter related\nexport const valueDeclaration = new RegExp(`(?:${identifier.source}\\\\s*:\\\\s*)?${value.source}`)\nexport const valueList = new RegExp(`${valueDeclaration.source}(\\\\s*,\\\\s*${valueDeclaration.source})*`)\nexport const filter = new RegExp(`${identifier.source}(?:\\\\s*:\\\\s*${valueList.source})?`, 'g')\nexport const filterCapture = new RegExp(`(${identifier.source})(?:\\\\s*:\\\\s*(${valueList.source}))?`)\nexport const filterLine = new RegExp(`^${filterCapture.source}$`)\n\nexport const operators = [\n /\\s+or\\s+/,\n /\\s+and\\s+/,\n /==|!=|<=|>=|<|>|\\s+contains\\s+/\n]\n\nexport function isInteger (str) {\n return integerLine.test(str)\n}\n\nexport function isLiteral (str) {\n return literalLine.test(str)\n}\n\nexport function isRange (str) {\n return rangeLine.test(str)\n}\n\nexport function isVariable (str) {\n return variableLine.test(str)\n}\n\nexport function matchValue (str) {\n return value.exec(str)\n}\n\nexport function parseLiteral (str) {\n let res = str.match(numberLine)\n if (res) {\n return Number(str)\n }\n res = str.match(boolLine)\n if (res) {\n return str.toLowerCase() === 'true'\n }\n res = str.match(quotedLine)\n if (res) {\n return str.slice(1, -1)\n }\n throw new TypeError(`cannot parse '${str}' as literal`)\n}\n","import * as _ from './underscore.js'\n\nfunction initError () {\n this.name = this.constructor.name\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nfunction initLiquidError (err, token) {\n initError.call(this)\n\n this.input = token.input\n this.line = token.line\n this.file = token.file\n\n const context = mkContext(token.input, token.line)\n this.message = mkMessage(err.message, token)\n this.stack = context +\n '\\n' + (this.stack || this.message) +\n (err.stack ? '\\nFrom ' + err.stack : '')\n}\n\nexport function TokenizationError (message, token) {\n initLiquidError.call(this, { message: message }, token)\n}\nTokenizationError.prototype = _.create(Error.prototype)\nTokenizationError.prototype.constructor = TokenizationError\n\nexport function ParseError (e, token) {\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, token)\n}\nParseError.prototype = _.create(Error.prototype)\nParseError.prototype.constructor = ParseError\n\nexport function RenderError (e, tpl) {\n // return the original render error\n if (e instanceof RenderError) {\n return e\n }\n _.assign(this, e)\n this.originalError = e\n\n initLiquidError.call(this, e, tpl.token)\n}\nRenderError.prototype = _.create(Error.prototype)\nRenderError.prototype.constructor = RenderError\n\nexport function RenderBreakError (message) {\n initError.call(this)\n this.message = message + ''\n}\nRenderBreakError.prototype = _.create(Error.prototype)\nRenderBreakError.prototype.constructor = RenderBreakError\n\nexport function AssertionError (message) {\n initError.call(this)\n this.message = message + ''\n}\nAssertionError.prototype = _.create(Error.prototype)\nAssertionError.prototype.constructor = AssertionError\n\nfunction mkContext (input, line) {\n const lines = input.split('\\n')\n const begin = Math.max(line - 2, 1)\n const end = Math.min(line + 3, lines.length)\n\n const context = _\n .range(begin, end + 1)\n .map(l => [\n (l === line) ? '>> ' : ' ',\n align(l, end),\n '| ',\n lines[l - 1]\n ].join(''))\n .join('\\n')\n\n return context\n}\n\nfunction align (n, max) {\n const length = (max + '').length\n const str = n + ''\n const blank = Array(length - str.length).join(' ')\n return blank + str\n}\n\nfunction mkMessage (msg, token) {\n msg = msg || ''\n if (token.file) {\n msg += ', file:' + token.file\n }\n if (token.line) {\n msg += ', line:' + token.line\n }\n return msg\n}\n","import { AssertionError } from './error.js'\n\nexport default function (predicate, message) {\n if (!predicate) {\n message = message || `expect ${predicate} to be true`\n throw new AssertionError(message)\n }\n}\n","import * as _ from './util/underscore.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst Scope = {\n getAll: function () {\n return this.contexts.reduce((ctx, val) => _.assign(ctx, val), _.create(null))\n },\n get: function (path) {\n const paths = this.propertyAccessSeq(path)\n const scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n return paths.reduce((value, key) => this.readProperty(value, key), scope)\n },\n set: function (path, v) {\n const paths = this.propertyAccessSeq(path)\n let scope = this.findContextFor(paths[0]) || _.last(this.contexts)\n paths.some((key, i) => {\n if (!_.isObject(scope)) {\n return true\n }\n if (i === paths.length - 1) {\n scope[key] = v\n return true\n }\n if (undefined === scope[key]) {\n scope[key] = {}\n }\n scope = scope[key]\n })\n },\n unshift: function (ctx) {\n return this.contexts.unshift(ctx)\n },\n push: function (ctx) {\n return this.contexts.push(ctx)\n },\n pop: function (ctx) {\n if (!arguments.length) {\n return this.contexts.pop()\n }\n const i = this.contexts.findIndex(scope => scope === ctx)\n if (i === -1) {\n throw new TypeError('scope not found, cannot pop')\n }\n return this.contexts.splice(i, 1)[0]\n },\n findContextFor: function (key, filter) {\n filter = filter || (() => true)\n for (let i = this.contexts.length - 1; i >= 0; i--) {\n const candidate = this.contexts[i]\n if (!filter(candidate)) continue\n if (key in candidate) {\n return candidate\n }\n }\n return null\n },\n readProperty: function (obj, key) {\n let val\n if (_.isNil(obj)) {\n val = undefined\n } else {\n obj = toLiquid(obj)\n val = key === 'size' ? readSize(obj) : obj[key]\n if (_.isFunction(obj.liquid_method_missing)) {\n val = obj.liquid_method_missing(key)\n }\n }\n if (_.isNil(val) && this.opts.strict_variables) {\n throw new TypeError(`undefined variable: ${key}`)\n }\n return val\n },\n\n /*\n * Parse property access sequence from access string\n * @example\n * accessSeq(\"foo.bar\") // ['foo', 'bar']\n * accessSeq(\"foo['bar']\") // ['foo', 'bar']\n * accessSeq(\"foo['b]r']\") // ['foo', 'b]r']\n * accessSeq(\"foo[bar.coo]\") // ['foo', 'bar'], for bar.coo == 'bar'\n */\n propertyAccessSeq: function (str) {\n str = String(str)\n const seq = []\n let name = ''\n let j\n let i = 0\n while (i < str.length) {\n switch (str[i]) {\n case '[':\n push()\n\n const delemiter = str[i + 1]\n if (/['\"]/.test(delemiter)) { // foo[\"bar\"]\n j = str.indexOf(delemiter, i + 2)\n assert(j !== -1, `unbalanced ${delemiter}: ${str}`)\n name = str.slice(i + 2, j)\n push()\n i = j + 2\n } else { // foo[bar.coo]\n j = matchRightBracket(str, i + 1)\n assert(j !== -1, `unbalanced []: ${str}`)\n name = str.slice(i + 1, j)\n if (!lexical.isInteger(name)) { // foo[bar] vs. foo[1]\n name = String(this.get(name))\n }\n push()\n i = j + 1\n }\n break\n case '.':// foo.bar, foo[0].bar\n push()\n i++\n break\n default:// foo.bar\n name += str[i]\n i++\n }\n }\n push()\n\n if (!seq.length) {\n throw new TypeError(`invalid path:\"${str}\"`)\n }\n return seq\n\n function push () {\n if (name.length) seq.push(name)\n name = ''\n }\n }\n}\n\nfunction toLiquid (obj) {\n if (_.isFunction(obj.to_liquid)) {\n return obj.to_liquid()\n }\n if (_.isFunction(obj.toLiquid)) {\n return obj.toLiquid()\n }\n return obj\n}\n\nfunction readSize (obj) {\n if (!_.isNil(obj.size)) return obj.size\n if (_.isArray(obj) || _.isString(obj)) return obj.length\n return obj.size\n}\n\nfunction matchRightBracket (str, begin) {\n let stack = 1 // count of '[' - count of ']'\n for (let i = begin; i < str.length; i++) {\n if (str[i] === '[') {\n stack++\n }\n if (str[i] === ']') {\n stack--\n if (stack === 0) {\n return i\n }\n }\n }\n return -1\n}\n\nexport function factory (ctx, opts) {\n const defaultOptions = {\n dynamicPartials: true,\n strict_variables: false,\n strict_filters: false,\n blocks: {},\n root: []\n }\n const scope = _.create(Scope)\n scope.opts = _.assign(defaultOptions, opts)\n scope.contexts = [ctx || {}]\n return scope\n}\n","/*\n * Call functions in serial until someone resolved.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function anySeries (iterable, iteratee) {\n let ret = Promise.reject(new Error('init'))\n iterable.forEach(function (item, idx) {\n ret = ret.catch(e => iteratee(item, idx, iterable))\n })\n return ret\n}\n\n/*\n * Call functions in serial until someone rejected.\n * @param {Array} iterable the array to iterate with.\n * @param {Array} iteratee returns a new promise.\n * The iteratee is invoked with three arguments: (value, index, iterable).\n */\nexport function mapSeries (iterable, iteratee) {\n let ret = Promise.resolve('init')\n const result = []\n iterable.forEach(function (item, idx) {\n ret = ret\n .then(() => iteratee(item, idx, iterable))\n .then(x => result.push(x))\n })\n return ret.then(() => result)\n}\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport { anySeries } from './util/promise.js'\nimport fs from 'fs'\n\nconst statFileAsync = _.promisify(fs.stat)\nconst readFileAsync = _.promisify(fs.readFile)\n\nexport async function resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root, filepath))\n return anySeries(paths, async path => {\n try {\n await statFileAsync(path)\n return path\n } catch (e) {\n e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}`\n throw e\n }\n })\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath, 'utf8')\n}\n","import * as lexical from './lexical.js'\nimport { TokenizationError } from './util/error.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport whiteSpaceCtrl from './whitespace-ctrl.js'\n\nexport { default as whiteSpaceCtrl } from './whitespace-ctrl.js'\n\nexport function parse (input, file, options) {\n assert(_.isString(input), 'illegal input')\n\n const rLiquid = /({%-?([\\s\\S]*?)-?%})|({{-?([\\s\\S]*?)-?}})/g\n let currIndent = 0\n const lineNumber = LineNumber(input)\n let lastMatchEnd = 0\n const tokens = []\n\n for (let match; (match = rLiquid.exec(input)); lastMatchEnd = rLiquid.lastIndex) {\n if (match.index > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, match.index))\n }\n tokens.push(match[1]\n ? parseTagToken(match[1], match[2].trim(), match.index)\n : parseValueToken(match[3], match[4].trim(), match.index))\n }\n if (input.length > lastMatchEnd) {\n tokens.push(parseHTMLToken(lastMatchEnd, input.length))\n }\n whiteSpaceCtrl(tokens, options)\n return tokens\n\n function parseTagToken (raw, value, pos) {\n const match = value.match(lexical.tagLine)\n const token = {\n type: 'tag',\n indent: currIndent,\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{%-',\n trim_right: raw.slice(-3) === '-%}',\n raw,\n value,\n input,\n file\n }\n if (!match) {\n throw new TokenizationError(`illegal tag syntax`, token)\n }\n token.name = match[1]\n token.args = match[2]\n return token\n }\n\n function parseValueToken (raw, value, pos) {\n return {\n type: 'value',\n line: lineNumber.get(pos),\n trim_left: raw.slice(0, 3) === '{{-',\n trim_right: raw.slice(-3) === '-}}',\n raw,\n value,\n input,\n file\n }\n }\n\n function parseHTMLToken (begin, end) {\n const htmlFragment = input.slice(begin, end)\n currIndent = _.last((htmlFragment).split('\\n')).length\n\n return {\n type: 'html',\n raw: htmlFragment,\n value: htmlFragment\n }\n }\n}\n\nfunction LineNumber (html) {\n let parsedLinesCount = 0\n let lastMatchBegin = -1\n\n return {\n get: function (pos) {\n const lines = html.slice(lastMatchBegin + 1, pos).split('\\n')\n parsedLinesCount += lines.length - 1\n lastMatchBegin = pos\n return parsedLinesCount + 1\n }\n }\n}\n","import { assign } from './util/underscore.js'\n\nexport default function whiteSpaceCtrl (tokens, options) {\n options = assign({ greedy: true }, options)\n let inRaw = false\n\n tokens.forEach((token, i) => {\n if (shouldTrimLeft(token, inRaw, options)) {\n trimLeft(tokens[i - 1], options.greedy)\n }\n\n if (token.type === 'tag' && token.name === 'raw') inRaw = true\n if (token.type === 'tag' && token.name === 'endraw') inRaw = false\n\n if (shouldTrimRight(token, inRaw, options)) {\n trimRight(tokens[i + 1], options.greedy)\n }\n })\n}\n\nfunction shouldTrimLeft (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_left || options.trim_tag_left\n if (token.type === 'value') return token.trim_left || options.trim_value_left\n}\n\nfunction shouldTrimRight (token, inRaw, options) {\n if (inRaw) return false\n if (token.type === 'tag') return token.trim_right || options.trim_tag_right\n if (token.type === 'value') return token.trim_right || options.trim_value_right\n}\n\nfunction trimLeft (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rLeft = greedy ? /\\s+$/g : /[\\t\\r ]*$/g\n token.value = token.value.replace(rLeft, '')\n}\n\nfunction trimRight (token, greedy) {\n if (!token || token.type !== 'html') return\n\n const rRight = greedy ? /^\\s+/g : /^[\\t\\r ]*\\n?/g\n token.value = token.value.replace(rRight, '')\n}\n","import Operators from './operators.js'\nimport * as lexical from './lexical.js'\nimport assert from './util/assert.js'\n\nconst operators = Operators(isTruthy)\n\nexport function evalExp (exp, scope) {\n assert(scope, 'unable to evalExp: scope undefined')\n const operatorREs = lexical.operators\n let match\n for (let i = 0; i < operatorREs.length; i++) {\n const operatorRE = operatorREs[i]\n const expRE = new RegExp(`^(${lexical.quoteBalanced.source})(${operatorRE.source})(${lexical.quoteBalanced.source})$`)\n if ((match = exp.match(expRE))) {\n const l = evalExp(match[1], scope)\n const op = operators[match[2].trim()]\n const r = evalExp(match[3], scope)\n return op(l, r)\n }\n }\n\n if ((match = exp.match(lexical.rangeLine))) {\n const low = evalValue(match[1], scope)\n const high = evalValue(match[2], scope)\n const range = []\n for (let j = low; j <= high; j++) {\n range.push(j)\n }\n return range\n }\n\n return evalValue(exp, scope)\n}\n\nexport function evalValue (str, scope) {\n str = str && str.trim()\n if (!str) return undefined\n\n if (lexical.isLiteral(str)) {\n return lexical.parseLiteral(str)\n }\n if (lexical.isVariable(str)) {\n return scope.get(str)\n }\n throw new TypeError(`cannot eval '${str}' as value`)\n}\n\nexport function isTruthy (val) {\n return !isFalsy(val)\n}\n\nexport function isFalsy (val) {\n return val === false || undefined === val || val === null\n}\n","export default function (isTruthy) {\n return {\n '==': (l, r) => l === r,\n '!=': (l, r) => l !== r,\n '>': (l, r) => l !== null && r !== null && l > r,\n '<': (l, r) => l !== null && r !== null && l < r,\n '>=': (l, r) => l !== null && r !== null && l >= r,\n '<=': (l, r) => l !== null && r !== null && l <= r,\n 'contains': (l, r) => {\n if (!l) return false\n if (typeof l.indexOf !== 'function') return false\n return l.indexOf(r) > -1\n },\n 'and': (l, r) => isTruthy(l) && isTruthy(r),\n 'or': (l, r) => isTruthy(l) || isTruthy(r)\n }\n}\n","import { evalExp } from './syntax.js'\nimport { RenderBreakError, RenderError } from './util/error.js'\nimport { stringify, create } from './util/underscore.js'\nimport assert from './util/assert.js'\n\nconst render = {\n renderTemplates: async function (templates, scope) {\n assert(scope, 'unable to evalTemplates: scope undefined')\n\n let html = ''\n for (const tpl of templates) {\n try {\n html += await renderTemplate.call(this, tpl)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n e.resolvedHTML = html\n throw e\n }\n throw new RenderError(e, tpl)\n }\n }\n return html\n\n async function renderTemplate (template) {\n if (template.type === 'tag') {\n const partial = await this.renderTag(template, scope)\n return partial === undefined ? '' : partial\n }\n if (template.type === 'value') {\n return this.renderValue(template, scope)\n }\n return template.value\n }\n },\n\n renderTag: async function (template, scope) {\n if (template.name === 'continue') {\n throw new RenderBreakError('continue')\n }\n if (template.name === 'break') {\n throw new RenderBreakError('break')\n }\n return template.render(scope)\n },\n\n renderValue: async function (template, scope) {\n const partial = this.evalValue(template, scope)\n return partial === undefined ? '' : stringify(partial)\n },\n\n evalValue: function (template, scope) {\n assert(scope, 'unable to evalValue: scope undefined')\n return template.filters.reduce(\n (prev, filter) => filter.render(prev, scope),\n evalExp(template.initial, scope))\n }\n}\n\nexport default function () {\n const instance = create(render)\n return instance\n}\n","import { hashCapture } from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\n\nfunction hash (markup, scope) {\n const obj = {}\n let match\n hashCapture.lastIndex = 0\n while ((match = hashCapture.exec(markup))) {\n const k = match[1]\n const v = match[2]\n obj[k] = evalValue(v, scope)\n }\n return obj\n}\n\nexport default function () {\n let tagImpls = {}\n\n const _tagInstance = {\n render: async function (scope) {\n const obj = hash(this.token.args, scope)\n const impl = this.tagImpl\n if (typeof impl.render !== 'function') {\n return ''\n }\n return impl.render(scope, obj)\n },\n parse: function (token, tokens) {\n this.type = 'tag'\n this.token = token\n this.name = token.name\n\n const tagImpl = tagImpls[this.name]\n assert(tagImpl, `tag ${this.name} not found`)\n this.tagImpl = create(tagImpl)\n if (this.tagImpl.parse) {\n this.tagImpl.parse(token, tokens)\n }\n }\n }\n\n function register (name, tag) {\n tagImpls[name] = tag\n }\n\n function construct (token, tokens) {\n const instance = create(_tagInstance)\n instance.parse(token, tokens)\n return instance\n }\n\n function clear () {\n tagImpls = {}\n }\n\n return {\n construct,\n register,\n clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { evalValue } from './syntax.js'\nimport assert from './util/assert.js'\nimport { assign, create } from './util/underscore.js'\n\nconst valueRE = new RegExp(`${lexical.value.source}`, 'g')\n\nexport default function (options) {\n options = assign({}, options)\n let filters = {}\n\n const _filterInstance = {\n render: function (output, scope) {\n const args = this.args.map(arg => evalValue(arg, scope))\n args.unshift(output)\n return this.filter.apply(null, args)\n },\n parse: function (str) {\n let match = lexical.filterLine.exec(str)\n assert(match, 'illegal filter: ' + str)\n\n const name = match[1]\n const argList = match[2] || ''\n const filter = filters[name]\n if (typeof filter !== 'function') {\n if (options.strict_filters) {\n throw new TypeError(`undefined filter: ${name}`)\n }\n this.name = name\n this.filter = x => x\n this.args = []\n return this\n }\n\n const args = []\n while ((match = valueRE.exec(argList.trim()))) {\n const v = match[0]\n const re = new RegExp(`${v}\\\\s*:`, 'g')\n const keyMatch = re.exec(match.input)\n const currentMatchIsKey = keyMatch && keyMatch.index === match.index\n currentMatchIsKey ? args.push(`'${v}'`) : args.push(v)\n }\n\n this.name = name\n this.filter = filter\n this.args = args\n\n return this\n }\n }\n\n function construct (str) {\n const instance = create(_filterInstance)\n return instance.parse(str)\n }\n\n function register (name, filter) {\n filters[name] = filter\n }\n\n function clear () {\n filters = {}\n }\n\n return {\n construct, register, clear\n }\n}\n","import * as lexical from './lexical.js'\nimport { create } from './util/underscore.js'\nimport { ParseError } from './util/error.js'\nimport assert from './util/assert.js'\n\nexport default function (Tag, Filter) {\n const stream = {\n init: function (tokens) {\n this.tokens = tokens\n this.handlers = {}\n return this\n },\n on: function (name, cb) {\n this.handlers[name] = cb\n return this\n },\n trigger: function (event, arg) {\n const h = this.handlers[event]\n if (typeof h === 'function') {\n h(arg)\n return true\n }\n },\n start: function () {\n this.trigger('start')\n let token\n while (!this.stopRequested && (token = this.tokens.shift())) {\n if (this.trigger('token', token)) continue\n if (token.type === 'tag' &&\n this.trigger(`tag:${token.name}`, token)) {\n continue\n }\n const template = parseToken(token, this.tokens)\n this.trigger('template', template)\n }\n if (!this.stopRequested) this.trigger('end')\n return this\n },\n stop: function () {\n this.stopRequested = true\n return this\n }\n }\n\n function parse (tokens) {\n let token\n const templates = []\n while ((token = tokens.shift())) {\n templates.push(parseToken(token, tokens))\n }\n return templates\n }\n\n function parseToken (token, tokens) {\n try {\n let tpl = null\n if (token.type === 'tag') {\n tpl = parseTag(token, tokens)\n } else if (token.type === 'value') {\n tpl = parseValue(token.value)\n } else { // token.type === 'html'\n tpl = token\n }\n tpl.token = token\n return tpl\n } catch (e) {\n throw new ParseError(e, token)\n }\n }\n\n function parseTag (token, tokens) {\n if (token.name === 'continue' || token.name === 'break') return token\n return Tag.construct(token, tokens)\n }\n\n function parseValue (str) {\n let match = lexical.matchValue(str)\n assert(match, `illegal value string: ${str}`)\n\n const initial = match[0]\n str = str.substr(match.index + match[0].length)\n\n const filters = []\n while ((match = lexical.filter.exec(str))) {\n filters.push([match[0].trim()])\n }\n\n return {\n type: 'value',\n initial: initial,\n filters: filters.map(str => Filter.construct(str))\n }\n }\n\n function parseStream (tokens) {\n const s = create(stream)\n return s.init(tokens)\n }\n\n return {\n parse,\n parseTag,\n parseStream,\n parseValue\n }\n}\n","import assert from '../util/assert.js'\nimport { value, quotedLine } from '../lexical.js'\n\nconst staticFileRE = /[^\\s,]+/\n\nexport default function (liquid, Liquid) {\n const withRE = new RegExp(`with\\\\s+(${value.source})`)\n\n liquid.registerTag('include', {\n parse: function (token) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticValue = match[0]\n }\n\n match = value.exec(token.args)\n if (match) {\n this.value = match[0]\n }\n\n match = withRE.exec(token.args)\n if (match) {\n this.with = match[1]\n }\n },\n render: async function (scope, hash) {\n let filepath\n if (scope.opts.dynamicPartials) {\n if (quotedLine.exec(this.value)) {\n const template = this.value.slice(1, -1)\n filepath = await liquid.parseAndRender(template, scope.getAll(), scope.opts)\n } else {\n filepath = Liquid.evalValue(this.value, scope)\n }\n } else {\n filepath = this.staticValue\n }\n assert(filepath, `cannot include with empty filename`)\n\n const originBlocks = scope.opts.blocks\n const originBlockMode = scope.opts.blockMode\n\n scope.opts.blocks = {}\n scope.opts.blockMode = 'output'\n if (this.with) {\n hash[filepath] = Liquid.evalValue(this.with, scope)\n }\n const templates = await liquid.getTemplate(filepath, scope.opts.root)\n scope.push(hash)\n const html = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n scope.opts.blocks = originBlocks\n scope.opts.blockMode = originBlockMode\n return html\n }\n })\n}\n","import For from './for.js'\nimport Assign from './assign.js'\nimport Capture from './capture.js'\nimport Case from './case.js'\nimport Comment from './comment.js'\nimport Include from './include.js'\nimport Decrement from './decrement.js'\nimport Cycle from './cycle.js'\nimport If from './if.js'\nimport Increment from './increment.js'\nimport Layout from './layout.js'\nimport Raw from './raw.js'\nimport Tablerow from './tablerow.js'\nimport Unless from './unless.js'\n\nexport default function (engine, Liquid) {\n Assign(engine, Liquid)\n Capture(engine, Liquid)\n Case(engine, Liquid)\n Comment(engine, Liquid)\n Cycle(engine, Liquid)\n Decrement(engine, Liquid)\n For(engine, Liquid)\n If(engine, Liquid)\n Include(engine, Liquid)\n Increment(engine, Liquid)\n Layout(engine, Liquid)\n Raw(engine, Liquid)\n Tablerow(engine, Liquid)\n Unless(engine, Liquid)\n}\n","import assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\nimport { create } from '../util/underscore.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})\\\\s*=([^]*)`)\n const { AssignScope } = Liquid.Types\n\n liquid.registerTag('assign', {\n parse: function (token) {\n const match = token.args.match(re)\n assert(match, `illegal token ${token.raw}`)\n this.key = match[1]\n this.value = match[2]\n },\n render: function (scope) {\n const ctx = create(AssignScope)\n ctx[this.key] = liquid.evalValue(this.value, scope)\n scope.push(ctx)\n return Promise.resolve('')\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`(${identifier.source})`)\n const { CaptureScope } = Liquid.Types\n\n liquid.registerTag('capture', {\n parse: function (tagToken, remainTokens) {\n const match = tagToken.args.match(re)\n assert(match, `${tagToken.args} not valid identifier`)\n\n this.variable = match[1]\n this.templates = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream.on('tag:endcapture', token => stream.stop())\n .on('template', tpl => this.templates.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope, hash) {\n const html = await liquid.renderer.renderTemplates(this.templates, scope)\n const ctx = create(CaptureScope)\n ctx[this.variable] = html\n scope.push(ctx)\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('case', {\n\n parse: function (tagToken, remainTokens) {\n this.cond = tagToken.args\n this.cases = []\n this.elseTemplates = []\n\n let p = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:when', token => {\n this.cases.push({\n val: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endcase', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (let i = 0; i < this.cases.length; i++) {\n const branch = this.cases[i]\n const val = Liquid.evalExp(branch.val, scope)\n const cond = Liquid.evalExp(this.cond, scope)\n if (val === cond) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('comment', {\n parse: function (tagToken, remainTokens) {\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endcomment') stream.stop()\n })\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const groupRE = new RegExp(`^(?:(${rValue.source})\\\\s*:\\\\s*)?(.*)$`)\n const candidatesRE = new RegExp(rValue.source, 'g')\n\n liquid.registerTag('cycle', {\n\n parse: function (tagToken, remainTokens) {\n let match = groupRE.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.group = match[1] || ''\n const candidates = match[2]\n\n this.candidates = []\n\n while ((match = candidatesRE.exec(candidates))) {\n this.candidates.push(match[0])\n }\n assert(this.candidates.length, `empty candidates: ${tagToken.raw}`)\n },\n\n render: function (scope, hash) {\n const group = Liquid.evalValue(this.group, scope)\n const fingerprint = `cycle:${group}:` + this.candidates.join(',')\n\n const groups = scope.opts.groups = scope.opts.groups || {}\n let idx = groups[fingerprint]\n\n if (idx === undefined) {\n idx = groups[fingerprint] = 0\n }\n\n const candidate = this.candidates[idx]\n idx = (idx + 1) % this.candidates.length\n groups[fingerprint] = idx\n\n return Liquid.evalValue(candidate, scope)\n }\n })\n}\n","import { create } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, DecrementScope } = Liquid.Types\n\n liquid.registerTag('decrement', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(DecrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n return --context[this.variable]\n }\n })\n}\n","import { mapSeries } from '../util/promise.js'\nimport { isString, isObject, isArray } from '../util/underscore.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const RenderBreakError = Liquid.Types.RenderBreakError\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*` +\n `(?:\\\\s+(reversed))?` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('for', { parse, render })\n\n function parse (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n this.variable = match[1]\n this.collection = match[2]\n this.reversed = !!match[3]\n\n this.templates = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endfor', () => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n }\n async function render (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope)\n\n if (!isArray(collection)) {\n if (isString(collection) && collection.length > 0) {\n collection = [collection]\n } else if (isObject(collection)) {\n collection = Object.keys(collection).map((key) => [key, collection[key]])\n }\n }\n if (!isArray(collection) || !collection.length) {\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n if (this.reversed) collection.reverse()\n\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n ctx.forloop = {\n first: i === 0,\n index: i + 1,\n index0: i,\n last: i === collection.length - 1,\n length: collection.length,\n rindex: collection.length - i,\n rindex0: collection.length - i - 1\n }\n return ctx\n })\n\n let html = ''\n let finished = false\n await mapSeries(contexts, async context => {\n if (finished) return\n\n scope.push(context)\n try {\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n } catch (e) {\n if (e instanceof RenderBreakError) {\n html += e.resolvedHTML\n if (e.message === 'break') {\n finished = true\n }\n } else throw e\n }\n scope.pop(context)\n })\n return html\n }\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('if', {\n\n parse: function (tagToken, remainTokens) {\n this.branches = []\n this.elseTemplates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => this.branches.push({\n cond: tagToken.args,\n templates: (p = [])\n }))\n .on('tag:elsif', token => {\n this.branches.push({\n cond: token.args,\n templates: p = []\n })\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endif', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n for (const branch of this.branches) {\n const cond = Liquid.evalExp(branch.cond, scope)\n if (Liquid.isTruthy(cond)) {\n return liquid.renderer.renderTemplates(branch.templates, scope)\n }\n }\n return liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { create } from '../util/underscore.js'\nimport { identifier } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const { CaptureScope, AssignScope, IncrementScope } = Liquid.Types\n\n liquid.registerTag('increment', {\n parse: function (token) {\n const match = token.args.match(identifier)\n assert(match, `illegal identifier ${token.args}`)\n this.variable = match[0]\n },\n render: function (scope, hash) {\n let context = scope.findContextFor(\n this.variable,\n ctx => {\n const proto = Object.getPrototypeOf(ctx)\n return proto !== CaptureScope && proto !== AssignScope\n }\n )\n if (!context) {\n context = create(IncrementScope)\n scope.unshift(context)\n }\n if (typeof context[this.variable] !== 'number') {\n context[this.variable] = 0\n }\n const val = context[this.variable]\n context[this.variable]++\n return val\n }\n })\n}\n","import assert from '../util/assert.js'\nimport { value as rValue } from '../lexical.js'\n\n/*\n * blockMode:\n * * \"store\": store rendered html into blocks\n * * \"output\": output rendered html\n */\n\nexport default function (liquid, Liquid) {\n const staticFileRE = /\\S+/\n\n liquid.registerTag('layout', {\n parse: function (token, remainTokens) {\n let match = staticFileRE.exec(token.args)\n if (match) {\n this.staticLayout = match[0]\n }\n\n match = rValue.exec(token.args)\n if (match) {\n this.layout = match[0]\n }\n\n this.tpls = liquid.parser.parse(remainTokens)\n },\n render: async function (scope, hash) {\n const layout = scope.opts.dynamicPartials\n ? Liquid.evalValue(this.layout, scope)\n : this.staticLayout\n assert(layout, `cannot apply layout with empty filename`)\n\n // render the remaining tokens immediately\n scope.opts.blockMode = 'store'\n const html = await liquid.renderer.renderTemplates(this.tpls, scope)\n if (scope.opts.blocks[''] === undefined) {\n scope.opts.blocks[''] = html\n }\n const templates = await liquid.getTemplate(layout, scope.opts.root)\n scope.push(hash)\n scope.opts.blockMode = 'output'\n const partial = await liquid.renderer.renderTemplates(templates, scope)\n scope.pop(hash)\n return partial\n }\n })\n\n liquid.registerTag('block', {\n parse: function (token, remainTokens) {\n const match = /\\w+/.exec(token.args)\n this.block = match ? match[0] : ''\n\n this.tpls = []\n const stream = liquid.parser.parseStream(remainTokens)\n .on('tag:endblock', () => stream.stop())\n .on('template', tpl => this.tpls.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${token.raw} not closed`)\n })\n stream.start()\n },\n render: async function (scope) {\n const childDefined = scope.opts.blocks[this.block]\n const html = childDefined !== undefined\n ? childDefined\n : await liquid.renderer.renderTemplates(this.tpls, scope)\n\n if (scope.opts.blockMode === 'store') {\n scope.opts.blocks[this.block] = html\n return ''\n }\n return html\n }\n })\n}\n","export default function (liquid) {\n liquid.registerTag('raw', {\n parse: function (tagToken, remainTokens) {\n this.tokens = []\n\n const stream = liquid.parser.parseStream(remainTokens)\n stream\n .on('token', token => {\n if (token.name === 'endraw') stream.stop()\n else this.tokens.push(token)\n })\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n stream.start()\n },\n render: function (scope, hash) {\n return this.tokens.map(token => token.raw).join('')\n }\n })\n}\n","import { mapSeries } from '../util/promise.js'\nimport assert from '../util/assert.js'\nimport { identifier, value, hash } from '../lexical.js'\n\nexport default function (liquid, Liquid) {\n const re = new RegExp(`^(${identifier.source})\\\\s+in\\\\s+` +\n `(${value.source})` +\n `(?:\\\\s+${hash.source})*$`)\n\n liquid.registerTag('tablerow', {\n\n parse: function (tagToken, remainTokens) {\n const match = re.exec(tagToken.args)\n assert(match, `illegal tag: ${tagToken.raw}`)\n\n this.variable = match[1]\n this.collection = match[2]\n this.templates = []\n\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', () => (p = this.templates))\n .on('tag:endtablerow', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', () => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: async function (scope, hash) {\n let collection = Liquid.evalExp(this.collection, scope) || []\n const offset = hash.offset || 0\n const limit = (hash.limit === undefined) ? collection.length : hash.limit\n\n collection = collection.slice(offset, offset + limit)\n const cols = hash.cols || collection.length\n const contexts = collection.map((item, i) => {\n const ctx = {}\n ctx[this.variable] = item\n return ctx\n })\n\n let row\n let html = ''\n await mapSeries(contexts, async (context, idx) => {\n row = Math.floor(idx / cols) + 1\n const col = (idx % cols) + 1\n if (col === 1) {\n if (row !== 1) {\n html += ''\n }\n html += ``\n }\n\n html += ``\n scope.push(context)\n html += await liquid.renderer.renderTemplates(this.templates, scope)\n html += ''\n scope.pop(context)\n return html\n })\n if (row > 0) {\n html += ''\n }\n return html\n }\n })\n}\n","export default function (liquid, Liquid) {\n liquid.registerTag('unless', {\n parse: function (tagToken, remainTokens) {\n this.templates = []\n this.elseTemplates = []\n let p\n const stream = liquid.parser.parseStream(remainTokens)\n .on('start', x => {\n p = this.templates\n this.cond = tagToken.args\n })\n .on('tag:else', () => (p = this.elseTemplates))\n .on('tag:endunless', token => stream.stop())\n .on('template', tpl => p.push(tpl))\n .on('end', x => {\n throw new Error(`tag ${tagToken.raw} not closed`)\n })\n\n stream.start()\n },\n\n render: function (scope, hash) {\n const cond = Liquid.evalExp(this.cond, scope)\n return Liquid.isFalsy(cond)\n ? liquid.renderer.renderTemplates(this.templates, scope)\n : liquid.renderer.renderTemplates(this.elseTemplates, scope)\n }\n })\n}\n","const monthNames = [\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',\n 'September', 'October', 'November', 'December'\n]\nconst dayNames = [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\n]\nconst monthNamesShort = monthNames.map(abbr)\nconst dayNamesShort = dayNames.map(abbr)\nconst suffixes = {\n 1: 'st',\n 2: 'nd',\n 3: 'rd',\n 'default': 'th'\n}\n\nfunction abbr (str) {\n return str.slice(0, 3)\n}\n\n// prototype extensions\nconst _date = {\n daysInMonth: function (d) {\n const feb = _date.isLeapYear(d) ? 29 : 28\n return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n },\n\n getDayOfYear: function (d) {\n let num = 0\n for (let i = 0; i < d.getMonth(); ++i) {\n num += _date.daysInMonth(d)[i]\n }\n return num + d.getDate()\n },\n\n // Startday is an integer of which day to start the week measuring from\n // TODO: that comment was retarted. fix it.\n getWeekOfYear: function (d, startDay) {\n // Skip to startDay of this week\n const now = this.getDayOfYear(d) + (startDay - d.getDay())\n // Find the first startDay of the year\n const jan1 = new Date(d.getFullYear(), 0, 1)\n const then = (7 - jan1.getDay() + startDay)\n return _number.pad(Math.floor((now - then) / 7) + 1, 2)\n },\n\n isLeapYear: function (d) {\n const year = d.getFullYear()\n return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)))\n },\n\n getSuffix: function (d) {\n const str = d.getDate().toString()\n const index = parseInt(str.slice(-1))\n return suffixes[index] || suffixes['default']\n },\n\n century: function (d) {\n return parseInt(d.getFullYear().toString().substring(0, 2), 10)\n }\n}\n\nconst _number = {\n pad: function (value, size, ch) {\n if (!ch) ch = '0'\n let result = value.toString()\n let pad = size - result.length\n\n while (pad-- > 0) {\n result = ch + result\n }\n\n return result\n }\n}\n\nconst formatCodes = {\n a: function (d) {\n return dayNamesShort[d.getDay()]\n },\n A: function (d) {\n return dayNames[d.getDay()]\n },\n b: function (d) {\n return monthNamesShort[d.getMonth()]\n },\n B: function (d) {\n return monthNames[d.getMonth()]\n },\n c: function (d) {\n return d.toLocaleString()\n },\n C: function (d) {\n return _date.century(d)\n },\n d: function (d) {\n return _number.pad(d.getDate(), 2)\n },\n e: function (d) {\n return _number.pad(d.getDate(), 2, ' ')\n },\n H: function (d) {\n return _number.pad(d.getHours(), 2)\n },\n I: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2)\n },\n j: function (d) {\n return _number.pad(_date.getDayOfYear(d), 3)\n },\n k: function (d) {\n return _number.pad(d.getHours(), 2, ' ')\n },\n l: function (d) {\n return _number.pad(d.getHours() % 12 || 12, 2, ' ')\n },\n L: function (d) {\n return _number.pad(d.getMilliseconds(), 3)\n },\n m: function (d) {\n return _number.pad(d.getMonth() + 1, 2)\n },\n M: function (d) {\n return _number.pad(d.getMinutes(), 2)\n },\n p: function (d) {\n return (d.getHours() < 12 ? 'AM' : 'PM')\n },\n P: function (d) {\n return (d.getHours() < 12 ? 'am' : 'pm')\n },\n q: function (d) {\n return _date.getSuffix(d)\n },\n s: function (d) {\n return Math.round(d.valueOf() / 1000)\n },\n S: function (d) {\n return _number.pad(d.getSeconds(), 2)\n },\n u: function (d) {\n return d.getDay() || 7\n },\n U: function (d) {\n return _date.getWeekOfYear(d, 0)\n },\n w: function (d) {\n return d.getDay()\n },\n W: function (d) {\n return _date.getWeekOfYear(d, 1)\n },\n x: function (d) {\n return d.toLocaleDateString()\n },\n X: function (d) {\n return d.toLocaleTimeString()\n },\n y: function (d) {\n return d.getFullYear().toString().substring(2, 4)\n },\n Y: function (d) {\n return d.getFullYear()\n },\n z: function (d) {\n const tz = d.getTimezoneOffset() / 60 * 100\n return (tz > 0 ? '-' : '+') + _number.pad(Math.abs(tz), 4)\n },\n '%': function () {\n return '%'\n }\n}\nformatCodes.h = formatCodes.b\nformatCodes.N = formatCodes.L\n\nexport default function (d, format) {\n let output = ''\n let remaining = format\n\n while (true) {\n const r = /%./g\n const results = r.exec(remaining)\n\n // No more format codes. Add the remaining text and return\n if (!results) {\n return output + remaining\n }\n\n // Add the preceding text\n output += remaining.slice(0, r.lastIndex - 2)\n remaining = remaining.slice(r.lastIndex)\n\n // Add the format code\n const ch = results[0].charAt(1)\n const func = formatCodes[ch]\n output += func ? func.call(this, d) : '%' + ch\n }\n}\n","import strftime from './util/strftime.js'\nimport * as _ from './util/underscore.js'\nimport { isTruthy } from './syntax.js'\n\nconst escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}\nconst unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}\n\nconst filters = {\n 'abs': v => Math.abs(v),\n 'append': (v, arg) => v + arg,\n 'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),\n 'ceil': v => Math.ceil(v),\n 'concat': (v, arg) => Array.prototype.concat.call(v, arg),\n 'date': (v, arg) => {\n let date = v\n if (v === 'now') {\n date = new Date()\n } else if (_.isString(v)) {\n date = new Date(v)\n }\n return isValidDate(date) ? strftime(date, arg) : v\n },\n 'default': (v, arg) => isTruthy(v) ? v : arg,\n 'divided_by': (v, arg) => v / arg,\n 'downcase': v => v.toLowerCase(),\n 'escape': escape,\n\n 'escape_once': str => escape(unescape(str)),\n 'first': v => v[0],\n 'floor': v => Math.floor(v),\n 'join': (v, arg) => v.join(arg === undefined ? ' ' : arg),\n 'last': v => _.last(v),\n 'lstrip': v => stringify(v).replace(/^\\s+/, ''),\n 'map': (arr, arg) => arr.map(v => v[arg]),\n 'minus': bindFixed((v, arg) => v - arg),\n 'modulo': bindFixed((v, arg) => v % arg),\n 'newline_to_br': v => v.replace(/\\n/g, '
'),\n 'plus': bindFixed((v, arg) => Number(v) + Number(arg)),\n 'prepend': (v, arg) => arg + v,\n 'remove': (v, arg) => v.split(arg).join(''),\n 'remove_first': (v, l) => v.replace(l, ''),\n 'replace': (v, pattern, replacement) =>\n stringify(v).split(pattern).join(replacement),\n 'replace_first': (v, arg1, arg2) => stringify(v).replace(arg1, arg2),\n 'reverse': v => v.reverse(),\n 'round': (v, arg) => {\n const amp = Math.pow(10, arg || 0)\n return Math.round(v * amp, arg) / amp\n },\n 'rstrip': str => stringify(str).replace(/\\s+$/, ''),\n 'size': v => v.length,\n 'slice': (v, begin, length) => {\n if (length === undefined) length = 1\n return v.slice(begin, begin + length)\n },\n 'sort': (v, arg) => v.sort(arg),\n 'split': (v, arg) => stringify(v).split(arg),\n 'strip': (v) => stringify(v).trim(),\n 'strip_html': v => stringify(v).replace(/|||<.*?>/g, ''),\n 'strip_newlines': v => stringify(v).replace(/\\n/g, ''),\n 'times': (v, arg) => v * arg,\n 'truncate': (v, l, o) => {\n v = stringify(v)\n o = (o === undefined) ? '...' : o\n l = l || 16\n if (v.length <= l) return v\n return v.substr(0, l - o.length) + o\n },\n 'truncatewords': (v, l, o) => {\n if (o === undefined) o = '...'\n const arr = v.split(' ')\n let ret = arr.slice(0, l).join(' ')\n if (arr.length > l) ret += o\n return ret\n },\n 'uniq': function (arr) {\n const u = {}\n return (arr || []).filter(val => {\n if (u.hasOwnProperty(val)) {\n return false\n }\n u[val] = true\n return true\n })\n },\n 'upcase': str => stringify(str).toUpperCase(),\n 'url_decode': x => x.split('+').map(decodeURIComponent).join(' '),\n 'url_encode': x => x.split(' ').map(encodeURIComponent).join('+')\n}\n\nfunction escape (str) {\n return stringify(str).replace(/&|<|>|\"|'/g, m => escapeMap[m])\n}\n\nfunction unescape (str) {\n return stringify(str).replace(/&(amp|lt|gt|#34|#39);/g, m => unescapeMap[m])\n}\n\nfunction getFixed (v) {\n const p = (v + '').split('.')\n return (p.length > 1) ? p[1].length : 0\n}\n\nfunction getMaxFixed (l, r) {\n return Math.max(getFixed(l), getFixed(r))\n}\n\nfunction stringify (obj) {\n return obj + ''\n}\n\nfunction bindFixed (cb) {\n return (l, r) => {\n const f = getMaxFixed(l, r)\n return cb(l, r).toFixed(f)\n }\n}\n\nfunction isValidDate (date) {\n return date instanceof Date && !isNaN(date.getTime())\n}\n\nexport default function registerAll (liquid) {\n return _.forOwn(filters, (func, name) => liquid.registerFilter(name, func))\n}\n\nregisterAll.filters = filters\n","import 'regenerator-runtime/runtime'\nimport * as Scope from './scope'\nimport * as template from './template'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport Render from './render.js'\nimport Tag from './tag.js'\nimport Filter from './filter.js'\nimport Parser from './parser'\nimport { isTruthy, isFalsy, evalExp, evalValue } from './syntax.js'\nimport { ParseError, TokenizationError, RenderBreakError, AssertionError } from './util/error.js'\nimport tags from './tags/index.js'\nimport filters from './filters.js'\n\nconst _engine = {\n init: function (tag, filter, options) {\n if (options.cache) {\n this.cache = {}\n }\n this.options = options\n this.tag = tag\n this.filter = filter\n this.parser = Parser(tag, filter)\n this.renderer = Render()\n\n tags(this, Liquid)\n filters(this, Liquid)\n\n return this\n },\n parse: function (html, filepath) {\n const tokens = tokenizer.parse(html, filepath, this.options)\n return this.parser.parse(tokens)\n },\n render: function (tpl, ctx, opts) {\n opts = _.assign({}, this.options, opts)\n const scope = Scope.factory(ctx, opts)\n return this.renderer.renderTemplates(tpl, scope)\n },\n parseAndRender: async function (html, ctx, opts) {\n const tpl = await this.parse(html)\n return this.render(tpl, ctx, opts)\n },\n getTemplate: async function (file, root) {\n const filepath = await template.resolve(file, root, this.options)\n return this.respectCache(filepath, async () => {\n const str = await template.read(filepath)\n return this.parse(str, filepath)\n })\n },\n renderFile: async function (file, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(file, opts.root)\n return this.render(templates, ctx, opts)\n },\n respectCache: async function (key, getter) {\n const cacheEnabled = this.options.cache\n if (cacheEnabled && this.cache[key]) {\n return this.cache[key]\n }\n const value = await getter()\n if (cacheEnabled) {\n this.cache[key] = value\n }\n return value\n },\n evalValue: function (str, scope) {\n const tpl = this.parser.parseValue(str.trim())\n return this.renderer.evalValue(tpl, scope)\n },\n registerFilter: function (name, filter) {\n return this.filter.register(name, filter)\n },\n registerTag: function (name, tag) {\n return this.tag.register(name, tag)\n },\n plugin: function (plugin) {\n return plugin.call(this, Liquid)\n },\n express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(_.isArray(this.root) || _.isString(this.root),\n 'illegal views root, are you using express.js?')\n opts.root = this.root\n self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb)\n }\n }\n}\n\nfunction normalizeStringArray (value) {\n if (_.isArray(value)) return value\n if (_.isString(value)) return [value]\n throw new TypeError('illegal root: ' + value)\n}\n\nexport default function Liquid (options) {\n options = _.assign({\n root: ['.'],\n cache: false,\n extname: '',\n dynamicPartials: true,\n trim_tag_right: false,\n trim_tag_left: false,\n trim_value_right: false,\n trim_value_left: false,\n greedy: true,\n strict_filters: false,\n strict_variables: false\n }, options)\n options.root = normalizeStringArray(options.root)\n\n const engine = _.create(_engine)\n engine.init(Tag(), Filter(options), options)\n return engine\n}\n\nLiquid.isTruthy = isTruthy\nLiquid.isFalsy = isFalsy\nLiquid.evalExp = evalExp\nLiquid.evalValue = evalValue\nLiquid.Types = {\n ParseError,\n TokenizationError,\n RenderBreakError,\n AssertionError,\n AssignScope: {},\n CaptureScope: {},\n IncrementScope: {},\n DecrementScope: {}\n}\n"],"names":["toStr","exports","undefined","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","self","tryLocsList","context","state","protoGenerator","Generator","generator","create","Context","_invoke","GenStateSuspendedStart","method","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","fn","obj","call","err","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","Promise","resolve","reject","invoke","result","value","__await","then","unwrapped","error","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","constructor","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","iter","toString","keys","object","key","reverse","pop","skipTempReset","prev","charAt","slice","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","module","arrToStr","Array","isString","isFunction","promisify","arguments","stringify","isNil","String","to_liquid","toLiquid","to_s","indexOf","cache","JSON","isObject","proto","isArray","assign","src","last","arr","uniq","u","a","l","quoted","RegExp","source","quoteBalanced","number","bool","identifier","subscript","literal","variable","rangeLimit","range","rangeCapture","hash","hashCapture","tagLine","literalLine","variableLine","numberLine","boolLine","quotedLine","rangeLine","integerLine","valueDeclaration","valueList","filter","filterCapture","filterLine","operators","initError","captureStackTrace","initLiquidError","token","input","line","file","lines","begin","end","split","Math","max","min","start","stop","step","_","map","n","str","join","message","msg","mkMessage","stack","TokenizationError","ParseError","e","originalError","RenderError","tpl","RenderBreakError","AssertionError","predicate","Scope","contexts","reduce","ctx","val","path","paths","propertyAccessSeq","scope","findContextFor","_this","readProperty","v","some","unshift","findIndex","splice","candidate","size","liquid_method_missing","opts","strict_variables","seq","j","delemiter","test","matchRightBracket","get","anySeries","iteratee","ret","item","idx","catch","mapSeries","x","statFileAsync","fs","stat","readFileAsync","readFile","filepath","root","options","extname","concat","_context","code","parse","html","parsedLinesCount","lastMatchBegin","match","raw","pos","rLiquid","currIndent","lineNumber","lastMatchEnd","tokens","exec","lastIndex","index","parseHTMLToken","parseTagToken","trim","greedy","inRaw","trim_left","trim_tag_left","trim_value_left","rLeft","replace","trim_right","trim_tag_right","trim_value_right","rRight","lexical","args","htmlFragment","isTruthy","r","evalExp","exp","operatorREs","operatorRE","expRE","op","low","evalValue","high","res","Number","toLowerCase","isFalsy","render","templates","template","renderTag","partial","renderValue","renderTemplate","_context2","resolvedHTML","filters","initial","markup","k","valueRE","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","construct","substr","init","staticFileRE","engine","Liquid","liquid","re","AssignScope","CaptureScope","groupRE","candidatesRE","DecrementScope","withRE","IncrementScope","Types","registerTag","tagToken","remainTokens","parser","parseStream","on","renderer","renderTemplates","cond","cases","elseTemplates","p","branch","rValue","group","candidates","fingerprint","groups","collection","offset","limit","reversed","_this2","forloop","finished","branches","staticValue","with","dynamicPartials","parseAndRender","getAll","blocks","blockMode","getTemplate","originBlocks","originBlockMode","staticLayout","layout","tpls","block","childDefined","cols","floor","row","col","monthNames","dayNames","monthNamesShort","abbr","dayNamesShort","suffixes","_date","d","isLeapYear","num","getMonth","daysInMonth","getDate","startDay","now","getDayOfYear","getDay","Date","getFullYear","_number","pad","year","parseInt","substring","ch","formatCodes","toLocaleString","century","getHours","getMilliseconds","getMinutes","getSuffix","round","valueOf","getSeconds","getWeekOfYear","toLocaleDateString","toLocaleTimeString","tz","getTimezoneOffset","abs","b","N","L","escapeMap","unescapeMap","toUpperCase","ceil","date","getTime","format","output","remaining","results","func","strftime","escape","m","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","decodeURIComponent","encodeURIComponent","getFixed","f","toFixed","registerAll","registerFilter","_engine","tag","Parser","tokenizer","respectCache","getter","cacheEnabled","register","plugin","filePath","renderFile","normalizeStringArray","tagImpls","_tagInstance","tagImpl","impl","instance","_filterInstance","apply","argList","strict_filters","keyMatch","clear"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c7856068ce..1014e00877 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "liquidjs", - "version": "6.3.0", + "version": "6.4.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fdf0370a05..8992efd428 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "liquidjs", - "version": "6.3.0", + "version": "6.4.1", "description": "Liquid template engine by pure JavaScript: compatible to shopify, easy to extend.", "main": "dist/liquid.common.js", "module": "src/index.js",