From d6876bd9ec01c6182c97dcbe02bf79f9f357d33b Mon Sep 17 00:00:00 2001 From: harttle Date: Mon, 27 Aug 2018 21:37:39 +0800 Subject: [PATCH] refactor: bundle template.js respectively --- dist/liquid.common.js | 563 ++-- dist/liquid.common.js.map | 2 +- dist/liquid.js | 481 ++-- dist/liquid.js.map | 2 +- dist/liquid.min.js | 2 +- dist/liquid.min.js.map | 2 +- package-lock.json | 5067 ++++++++++++++++++++++++--------- package.json | 16 +- rollup.config.js | 4 + src/index.js | 81 +- src/tags/for.js | 6 +- src/template-browser.js | 52 + src/template.js | 30 + src/util/http.js | 17 - src/util/url.js | 41 - test/e2e/express.js | 2 +- test/e2e/xhr.js | 22 +- test/unit/template-browser.js | 85 + test/unit/util/url.js | 63 - 19 files changed, 4386 insertions(+), 2152 deletions(-) create mode 100644 src/template-browser.js create mode 100644 src/template.js delete mode 100644 src/util/http.js delete mode 100644 src/util/url.js create mode 100644 test/unit/template-browser.js delete mode 100644 test/unit/util/url.js diff --git a/dist/liquid.common.js b/dist/liquid.common.js index 9bf719c35..75b7baa3f 100644 --- a/dist/liquid.common.js +++ b/dist/liquid.common.js @@ -1230,24 +1230,145 @@ function factory(ctx, opts) { return scope; } -function get$1(url) { - return new Promise(function (resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 300) { - resolve(xhr.responseText); - } else { - reject(new Error(xhr.statusText)); - } - }; - xhr.onerror = function () { - reject(new Error('An error occurred whilst sending the response.')); - }; - xhr.open('GET', url); - xhr.send(); +/* + * Call functions in serial until someone resolved. + * @param {Array} iterable the array to iterate with. + * @param {Array} iteratee returns a new promise. + * The iteratee is invoked with three arguments: (value, index, iterable). + */ +function anySeries(iterable, iteratee) { + var ret = Promise.reject(new Error('init')); + iterable.forEach(function (item, idx) { + ret = ret.catch(function (e) { + return iteratee(item, idx, iterable); + }); + }); + return ret; +} + +/* + * Call functions in serial until someone rejected. + * @param {Array} iterable the array to iterate with. + * @param {Array} iteratee returns a new promise. + * The iteratee is invoked with three arguments: (value, index, iterable). + */ +function mapSeries(iterable, iteratee) { + var ret = Promise.resolve('init'); + var result = []; + iterable.forEach(function (item, idx) { + ret = ret.then(function () { + return iteratee(item, idx, iterable); + }).then(function (x) { + return result.push(x); + }); + }); + return ret.then(function () { + return result; }); } +function readFileAsync(filepath) { + return new Promise(function (resolve, reject) { + fs.readFile(filepath, 'utf8', function (err, content) { + err ? reject(err) : resolve(content); + }); + }); +} +function statFileAsync(path$$1) { + return new Promise(function (resolve, reject) { + fs.stat(path$$1, function (err, stat) { + return err ? reject(err) : resolve(stat); + }); + }); +} + +function lookup(filepath, root, options) { + var _this = this; + + root = options.root.concat(root || []); + root = uniq(root); + var paths = root.map(function (root) { + return path.resolve(root || location.href, filepath); + }); + return anySeries(paths, function () { + var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(path$$1) { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.prev = 0; + _context.next = 3; + return statFileAsync(path$$1); + + case 3: + return _context.abrupt('return', path$$1); + + case 6: + _context.prev = 6; + _context.t0 = _context['catch'](0); + + _context.t0.message = _context.t0.code + ': Failed to lookup ' + filepath + ' in: ' + root; + throw _context.t0; + + case 10: + case 'end': + return _context.stop(); + } + } + }, _callee, _this, [[0, 6]]); + })); + + return function (_x) { + return _ref.apply(this, arguments); + }; + }()); +} + +var resolve = function () { + var _ref2 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(filepath, root, options) { + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (!path.extname(filepath)) { + filepath += options.extname; + } + return _context2.abrupt('return', lookup(filepath, root, options)); + + case 2: + case 'end': + return _context2.stop(); + } + } + }, _callee2, this); + })); + + return function resolve(_x2, _x3, _x4) { + return _ref2.apply(this, arguments); + }; +}(); + +var read = function () { + var _ref3 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(filepath) { + return regeneratorRuntime.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + return _context3.abrupt('return', readFileAsync(filepath)); + + case 1: + case 'end': + return _context3.stop(); + } + } + }, _callee3, this); + })); + + return function read(_x5) { + return _ref3.apply(this, arguments); + }; +}(); + function whiteSpaceCtrl(tokens, options) { options = assign({ greedy: true }, options); var inRaw = false; @@ -1373,61 +1494,6 @@ function LineNumber(html) { }; } -function readFileAsync(filepath) { - return new Promise(function (resolve, reject) { - fs.readFile(filepath, 'utf8', function (err, content) { - err ? reject(err) : resolve(content); - }); - }); -} -function statFileAsync(path$$1) { - return new Promise(function (resolve, reject) { - fs.stat(path$$1, function (err, stat) { - return err ? reject(err) : resolve(stat); - }); - }); -} - -var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/; -var urlRe = /^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/; - -// https://github.com/jinder/path/blob/master/path.js#L567 -function extname(path$$1) { - return splitPathRe.exec(path$$1).slice(1)[3]; -} - -// https://www.npmjs.com/package/is-url -function valid(path$$1) { - return urlRe.test(path$$1); -} - -function resolve(root, path$$1) { - if (isArray(root)) { - root = root[0]; - } - if (root && last(root) !== '/') { - root += '/'; - } - return resolveUrl(root, path$$1); -} - -function resolveUrl(root, path$$1) { - var base = document.createElement('base'); - base.href = arguments[0]; - - var head = document.getElementsByTagName('head')[0]; - head.insertBefore(base, head.firstChild); - - var a = document.createElement('a'); - a.href = path$$1; - var resolved = a.href; - base.href = resolved; - - head.removeChild(base); - - return resolved; -} - function Operators (isTruthy) { return { '==': function _(l, r) { @@ -1996,43 +2062,6 @@ function Parser (Tag, Filter) { }; } -/* - * Call functions in serial until someone resolved. - * @param {Array} iterable the array to iterate with. - * @param {Array} iteratee returns a new promise. - * The iteratee is invoked with three arguments: (value, index, iterable). - */ -function anySeries(iterable, iteratee) { - var ret = Promise.reject(new Error('init')); - iterable.forEach(function (item, idx) { - ret = ret.catch(function (e) { - return iteratee(item, idx, iterable); - }); - }); - return ret; -} - -/* - * Call functions in serial until someone rejected. - * @param {Array} iterable the array to iterate with. - * @param {Array} iteratee returns a new promise. - * The iteratee is invoked with three arguments: (value, index, iterable). - */ -function mapSeries(iterable, iteratee) { - var ret = Promise.resolve('init'); - var result = []; - iterable.forEach(function (item, idx) { - ret = ret.then(function () { - return iteratee(item, idx, iterable); - }).then(function (x) { - return result.push(x); - }); - }); - return ret.then(function () { - return result; - }); -} - function For (liquid, Liquid) { var render = function () { var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(scope, hash$$1) { @@ -2046,7 +2075,7 @@ function For (liquid, Liquid) { collection = Liquid.evalExp(this.collection, scope); - if (!Array.isArray(collection)) { + if (!isArray(collection)) { if (isString(collection) && collection.length > 0) { collection = [collection]; } else if (isObject(collection)) { @@ -2056,7 +2085,7 @@ function For (liquid, Liquid) { } } - if (!(!Array.isArray(collection) || !collection.length)) { + if (!(!isArray(collection) || !collection.length)) { _context2.next = 4; break; } @@ -3408,35 +3437,126 @@ var _engine = { return parseAndRender; }(), - renderFile: function () { - var _ref2 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(filepath, ctx, opts) { - var templates; - return regeneratorRuntime.wrap(function _callee2$(_context2) { + getTemplate: function () { + var _ref2 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(file, root) { + var _this = this; + + var filepath; + return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { - switch (_context2.prev = _context2.next) { + switch (_context3.prev = _context3.next) { case 0: - opts = assign({}, opts); - _context2.next = 3; - return this.getTemplate(filepath, opts.root); + _context3.next = 2; + return resolve(file, root, this.options); - case 3: - templates = _context2.sent; - return _context2.abrupt('return', this.render(templates, ctx, opts)); + case 2: + filepath = _context3.sent; + return _context3.abrupt('return', this.respectCache(filepath, asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var str; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return read(filepath); - case 5: + case 2: + str = _context2.sent; + return _context2.abrupt('return', _this.parse(str, filepath)); + + case 4: + case 'end': + return _context2.stop(); + } + } + }, _callee2, _this); + })))); + + case 4: case 'end': - return _context2.stop(); + return _context3.stop(); } } - }, _callee2, this); + }, _callee3, this); })); - function renderFile(_x4, _x5, _x6) { + function getTemplate(_x4, _x5) { return _ref2.apply(this, arguments); } + return getTemplate; + }(), + renderFile: function () { + var _ref4 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(file, ctx, opts) { + var templates; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + opts = assign({}, opts); + _context4.next = 3; + return this.getTemplate(file, opts.root); + + case 3: + templates = _context4.sent; + return _context4.abrupt('return', this.render(templates, ctx, opts)); + + case 5: + case 'end': + return _context4.stop(); + } + } + }, _callee4, this); + })); + + function renderFile(_x6, _x7, _x8) { + return _ref4.apply(this, arguments); + } + return renderFile; }(), + respectCache: function () { + var _ref5 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(key, getter) { + var cacheEnabled, value; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + cacheEnabled = this.options.cache; + + if (!(cacheEnabled && this.cache[key])) { + _context5.next = 3; + break; + } + + return _context5.abrupt('return', this.cache[key]); + + case 3: + _context5.next = 5; + return getter(); + + case 5: + value = _context5.sent; + + if (cacheEnabled) { + this.cache[key] = value; + } + return _context5.abrupt('return', value); + + case 8: + case 'end': + return _context5.stop(); + } + } + }, _callee5, this); + })); + + function respectCache(_x9, _x10) { + return _ref5.apply(this, arguments); + } + + return respectCache; + }(), evalValue: function evalValue$$1(str, scope) { var tpl = this.parser.parseValue(str.trim()); return this.renderer.evalValue(tpl, scope); @@ -3447,202 +3567,11 @@ var _engine = { registerTag: function registerTag(name, tag) { return this.tag.register(name, tag); }, - lookup: function lookup(filepath, root) { - var _this = this; - - root = this.options.root.concat(root || []); - root = uniq(root); - var paths = root.map(function (root) { - return path.resolve(root, filepath); - }); - return anySeries(paths, function () { - var _ref3 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(path$$1) { - return regeneratorRuntime.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.prev = 0; - _context3.next = 3; - return statFileAsync(path$$1); - - case 3: - return _context3.abrupt('return', path$$1); - - case 6: - _context3.prev = 6; - _context3.t0 = _context3['catch'](0); - - _context3.t0.message = _context3.t0.code + ': Failed to lookup ' + filepath + ' in: ' + root; - throw _context3.t0; - - case 10: - case 'end': - return _context3.stop(); - } - } - }, _callee3, _this, [[0, 6]]); - })); - - return function (_x7) { - return _ref3.apply(this, arguments); - }; - }()); - }, - getTemplate: function getTemplate(filepath, root) { - return typeof XMLHttpRequest === 'undefined' ? this.getTemplateFromFile(filepath, root) : this.getTemplateFromUrl(filepath, root); - }, - getTemplateFromFile: function () { - var _ref4 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(filepath, root) { - var _this2 = this; - - return regeneratorRuntime.wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - if (!path.extname(filepath)) { - filepath += this.options.extname; - } - _context5.next = 3; - return this.lookup(filepath, root); - - case 3: - filepath = _context5.sent; - return _context5.abrupt('return', this.respectCache(filepath, asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { - var str; - return regeneratorRuntime.wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _context4.next = 2; - return readFileAsync(filepath); - - case 2: - str = _context4.sent; - return _context4.abrupt('return', _this2.parse(str, filepath)); - - case 4: - case 'end': - return _context4.stop(); - } - } - }, _callee4, _this2); - })))); - - case 5: - case 'end': - return _context5.stop(); - } - } - }, _callee5, this); - })); - - function getTemplateFromFile(_x8, _x9) { - return _ref4.apply(this, arguments); - } - - return getTemplateFromFile; - }(), - getTemplateFromUrl: function () { - var _ref6 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(filepath, root) { - var _this3 = this; - - var fullUrl; - return regeneratorRuntime.wrap(function _callee7$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - fullUrl = void 0; - - if (valid(filepath)) { - fullUrl = filepath; - } else { - if (!extname(filepath)) { - filepath += this.options.extname; - } - fullUrl = resolve(root || this.options.root, filepath); - } - return _context7.abrupt('return', this.respectCache(filepath, asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { - return regeneratorRuntime.wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - _context6.t0 = _this3; - _context6.next = 3; - return get$1(fullUrl); - - case 3: - _context6.t1 = _context6.sent; - return _context6.abrupt('return', _context6.t0.parse.call(_context6.t0, _context6.t1)); - - case 5: - case 'end': - return _context6.stop(); - } - } - }, _callee6, _this3); - })))); - - case 3: - case 'end': - return _context7.stop(); - } - } - }, _callee7, this); - })); - - function getTemplateFromUrl(_x10, _x11) { - return _ref6.apply(this, arguments); - } - - return getTemplateFromUrl; - }(), - respectCache: function () { - var _ref8 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(key, getter) { - var cacheEnabled, value; - return regeneratorRuntime.wrap(function _callee8$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - cacheEnabled = this.options.cache; - - if (!(cacheEnabled && this.cache[key])) { - _context8.next = 3; - break; - } - - return _context8.abrupt('return', this.cache[key]); - - case 3: - _context8.next = 5; - return getter(); - - case 5: - value = _context8.sent; - - if (cacheEnabled) { - this.cache[key] = value; - } - return _context8.abrupt('return', value); - - case 8: - case 'end': - return _context8.stop(); - } - } - }, _callee8, this); - })); - - function respectCache(_x12, _x13) { - return _ref8.apply(this, arguments); - } - - return respectCache; - }(), express: function express(opts) { opts = opts || {}; var self = this; return function (filePath, ctx, cb) { - assert(Array.isArray(this.root) || isString(this.root), 'illegal views root, are you using express.js?'); + assert(isArray(this.root) || isString(this.root), 'illegal views root, are you using express.js?'); opts.root = this.root; self.renderFile(filePath, ctx, opts).then(function (html) { return cb(null, html); @@ -3652,7 +3581,7 @@ var _engine = { }; function normalizeStringArray(value) { - if (Array.isArray(value)) return value; + if (isArray(value)) return value; if (isString(value)) return [value]; return []; } diff --git a/dist/liquid.common.js.map b/dist/liquid.common.js.map index 64f5dde84..4b3a4b32f 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/http.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/util/fs.js","../src/util/url.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 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)) {\n return value\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// peoperty 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 = 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","export function get (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 sending 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","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\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 base.href = resolved\n\n head.removeChild(base)\n\n return resolved\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} 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 (!Array.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 (!Array.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),\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 v.substr(begin, length === undefined ? 1 : length),\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_encode': encodeURIComponent\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 {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.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 {anySeries} from './util/promise.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 renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\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 lookup: function (filepath, root) {\n root = this.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 getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\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 express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.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 (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\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","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","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","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","factory","defaultOptions","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","whiteSpaceCtrl","tokens","options","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","readFileAsync","filepath","readFile","content","statFileAsync","stat","splitPathRe","urlRe","extname","valid","root","resolveUrl","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","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","x","re","keyMatch","currentMatchIsKey","Tag","Filter","stream","handlers","cb","event","h","trigger","stopRequested","shift","parseToken","parseTag","parseValue","substr","parseStream","s","init","anySeries","ret","item","idx","catch","mapSeries","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","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","concat","date","isValidDate","strftime","escape","unescape","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","code","getTemplateFromFile","getTemplateFromUrl","lookup","respectCache","isValidUrl","httpGet","fullUrl","getter","cacheEnabled","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/util/fs.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 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)) {\n return value\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// peoperty 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 = 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 fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport {anySeries} from './util/promise.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\n\nfunction lookup (filepath, root, options) {\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root || location.href, 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 resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n return lookup(filepath, root, options)\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath)\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),\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 v.substr(begin, length === undefined ? 1 : length),\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_encode': encodeURIComponent\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 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 return []\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","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","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","opts","strict_variables","seq","j","delemiter","matchRightBracket","lexical","get","factory","defaultOptions","anySeries","ret","item","idx","catch","mapSeries","x","readFileAsync","filepath","readFile","content","statFileAsync","stat","lookup","root","options","concat","location","href","code","extname","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","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","encodeURIComponent","m","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tokenizer","respectCache","getter","cacheEnabled","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 8a60499bb..c7d5dbc77 100644 --- a/dist/liquid.js +++ b/dist/liquid.js @@ -825,19 +825,6 @@ return arr[arr.length - 1]; } - function uniq(arr) { - var u = {}; - var a = []; - for (var i = 0, l = arr.length; i < l; ++i) { - if (u.hasOwnProperty(arr[i])) { - continue; - } - a.push(arr[i]); - u[arr[i]] = 1; - } - return a; - } - /* * Checks if value is the language type of Object. * (e.g. arrays, functions, objects, regexes, new Number(0), and new String('')) @@ -1229,24 +1216,74 @@ return scope; } - function get$1(url) { - return new Promise(function (resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.onload = function () { - if (xhr.status >= 200 && xhr.status < 300) { - resolve(xhr.responseText); - } else { - reject(new Error(xhr.statusText)); - } - }; - xhr.onerror = function () { - reject(new Error('An error occurred whilst sending the response.')); - }; - xhr.open('GET', url); - xhr.send(); + function domResolve(root, path) { + var base = document.createElement('base'); + base.href = root; + + var head = document.getElementsByTagName('head')[0]; + head.insertBefore(base, head.firstChild); + + var a = document.createElement('a'); + a.href = path; + var resolved = a.href; + head.removeChild(base); + + return resolved; + } + + function resolve(filepath, root, options) { + root = root || options.root; + if (isArray(root)) { + root = root[0]; + } + if (root.length && last(root) !== '/') { + root += '/'; + } + var url = domResolve(root, filepath); + return url.replace(/^(\w+:\/\/[^/]+)(\/[^?]+)/, function (str, origin, path) { + var last$$1 = path.split('/').pop(); + if (/\.\w+$/.test(last$$1)) { + return str; + } + return origin + path + options.extname; }); } + var read = function () { + var _ref = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url) { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt('return', new Promise(function (resolve, reject) { + var xhr = new XMLHttpRequest(); + xhr.onload = function () { + if (xhr.status >= 200 && xhr.status < 300) { + resolve(xhr.responseText); + } else { + reject(new Error(xhr.statusText)); + } + }; + xhr.onerror = function () { + reject(new Error('An error occurred whilst receiving the response.')); + }; + xhr.open('GET', url); + xhr.send(); + })); + + case 1: + case 'end': + return _context.stop(); + } + } + }, _callee, this); + })); + + return function read(_x) { + return _ref.apply(this, arguments); + }; + }(); + function whiteSpaceCtrl(tokens, options) { options = assign({ greedy: true }, options); var inRaw = false; @@ -1372,65 +1409,6 @@ }; } - var fs = {}; - - function readFileAsync(filepath) { - return new Promise(function (resolve, reject) { - fs.readFile(filepath, 'utf8', function (err, content) { - err ? reject(err) : resolve(content); - }); - }); - } - function statFileAsync(path) { - return new Promise(function (resolve, reject) { - fs.stat(path, function (err, stat) { - return err ? reject(err) : resolve(stat); - }); - }); - } - - var path = {}; - - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/; - var urlRe = /^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/; - - // https://github.com/jinder/path/blob/master/path.js#L567 - function extname(path) { - return splitPathRe.exec(path).slice(1)[3]; - } - - // https://www.npmjs.com/package/is-url - function valid(path) { - return urlRe.test(path); - } - - function resolve(root, path) { - if (isArray(root)) { - root = root[0]; - } - if (root && last(root) !== '/') { - root += '/'; - } - return resolveUrl(root, path); - } - - function resolveUrl(root, path) { - var base = document.createElement('base'); - base.href = arguments[0]; - - var head = document.getElementsByTagName('head')[0]; - head.insertBefore(base, head.firstChild); - - var a = document.createElement('a'); - a.href = path; - var resolved = a.href; - base.href = resolved; - - head.removeChild(base); - - return resolved; - } - function Operators (isTruthy) { return { '==': function _(l, r) { @@ -2005,15 +1983,6 @@ * @param {Array} iteratee returns a new promise. * The iteratee is invoked with three arguments: (value, index, iterable). */ - function anySeries(iterable, iteratee) { - var ret = Promise.reject(new Error('init')); - iterable.forEach(function (item, idx) { - ret = ret.catch(function (e) { - return iteratee(item, idx, iterable); - }); - }); - return ret; - } /* * Call functions in serial until someone rejected. @@ -2049,7 +2018,7 @@ collection = Liquid.evalExp(this.collection, scope); - if (!Array.isArray(collection)) { + if (!isArray(collection)) { if (isString(collection) && collection.length > 0) { collection = [collection]; } else if (isObject(collection)) { @@ -2059,7 +2028,7 @@ } } - if (!(!Array.isArray(collection) || !collection.length)) { + if (!(!isArray(collection) || !collection.length)) { _context2.next = 4; break; } @@ -3411,35 +3380,126 @@ return parseAndRender; }(), - renderFile: function () { - var _ref2 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(filepath, ctx, opts) { - var templates; - return regeneratorRuntime.wrap(function _callee2$(_context2) { + getTemplate: function () { + var _ref2 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(file, root) { + var _this = this; + + var filepath; + return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { - switch (_context2.prev = _context2.next) { + switch (_context3.prev = _context3.next) { case 0: - opts = assign({}, opts); - _context2.next = 3; - return this.getTemplate(filepath, opts.root); + _context3.next = 2; + return resolve(file, root, this.options); - case 3: - templates = _context2.sent; - return _context2.abrupt('return', this.render(templates, ctx, opts)); + case 2: + filepath = _context3.sent; + return _context3.abrupt('return', this.respectCache(filepath, asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { + var str; + return regeneratorRuntime.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return read(filepath); - case 5: + case 2: + str = _context2.sent; + return _context2.abrupt('return', _this.parse(str, filepath)); + + case 4: + case 'end': + return _context2.stop(); + } + } + }, _callee2, _this); + })))); + + case 4: case 'end': - return _context2.stop(); + return _context3.stop(); } } - }, _callee2, this); + }, _callee3, this); })); - function renderFile(_x4, _x5, _x6) { + function getTemplate(_x4, _x5) { return _ref2.apply(this, arguments); } + return getTemplate; + }(), + renderFile: function () { + var _ref4 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(file, ctx, opts) { + var templates; + return regeneratorRuntime.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + opts = assign({}, opts); + _context4.next = 3; + return this.getTemplate(file, opts.root); + + case 3: + templates = _context4.sent; + return _context4.abrupt('return', this.render(templates, ctx, opts)); + + case 5: + case 'end': + return _context4.stop(); + } + } + }, _callee4, this); + })); + + function renderFile(_x6, _x7, _x8) { + return _ref4.apply(this, arguments); + } + return renderFile; }(), + respectCache: function () { + var _ref5 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(key, getter) { + var cacheEnabled, value; + return regeneratorRuntime.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + cacheEnabled = this.options.cache; + + if (!(cacheEnabled && this.cache[key])) { + _context5.next = 3; + break; + } + + return _context5.abrupt('return', this.cache[key]); + + case 3: + _context5.next = 5; + return getter(); + + case 5: + value = _context5.sent; + + if (cacheEnabled) { + this.cache[key] = value; + } + return _context5.abrupt('return', value); + + case 8: + case 'end': + return _context5.stop(); + } + } + }, _callee5, this); + })); + + function respectCache(_x9, _x10) { + return _ref5.apply(this, arguments); + } + + return respectCache; + }(), evalValue: function evalValue$$1(str, scope) { var tpl = this.parser.parseValue(str.trim()); return this.renderer.evalValue(tpl, scope); @@ -3450,202 +3510,11 @@ registerTag: function registerTag(name, tag) { return this.tag.register(name, tag); }, - lookup: function lookup(filepath, root) { - var _this = this; - - root = this.options.root.concat(root || []); - root = uniq(root); - var paths = root.map(function (root) { - return path.resolve(root, filepath); - }); - return anySeries(paths, function () { - var _ref3 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(path$$1) { - return regeneratorRuntime.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - _context3.prev = 0; - _context3.next = 3; - return statFileAsync(path$$1); - - case 3: - return _context3.abrupt('return', path$$1); - - case 6: - _context3.prev = 6; - _context3.t0 = _context3['catch'](0); - - _context3.t0.message = _context3.t0.code + ': Failed to lookup ' + filepath + ' in: ' + root; - throw _context3.t0; - - case 10: - case 'end': - return _context3.stop(); - } - } - }, _callee3, _this, [[0, 6]]); - })); - - return function (_x7) { - return _ref3.apply(this, arguments); - }; - }()); - }, - getTemplate: function getTemplate(filepath, root) { - return typeof XMLHttpRequest === 'undefined' ? this.getTemplateFromFile(filepath, root) : this.getTemplateFromUrl(filepath, root); - }, - getTemplateFromFile: function () { - var _ref4 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(filepath, root) { - var _this2 = this; - - return regeneratorRuntime.wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - if (!path.extname(filepath)) { - filepath += this.options.extname; - } - _context5.next = 3; - return this.lookup(filepath, root); - - case 3: - filepath = _context5.sent; - return _context5.abrupt('return', this.respectCache(filepath, asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { - var str; - return regeneratorRuntime.wrap(function _callee4$(_context4) { - while (1) { - switch (_context4.prev = _context4.next) { - case 0: - _context4.next = 2; - return readFileAsync(filepath); - - case 2: - str = _context4.sent; - return _context4.abrupt('return', _this2.parse(str, filepath)); - - case 4: - case 'end': - return _context4.stop(); - } - } - }, _callee4, _this2); - })))); - - case 5: - case 'end': - return _context5.stop(); - } - } - }, _callee5, this); - })); - - function getTemplateFromFile(_x8, _x9) { - return _ref4.apply(this, arguments); - } - - return getTemplateFromFile; - }(), - getTemplateFromUrl: function () { - var _ref6 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(filepath, root) { - var _this3 = this; - - var fullUrl; - return regeneratorRuntime.wrap(function _callee7$(_context7) { - while (1) { - switch (_context7.prev = _context7.next) { - case 0: - fullUrl = void 0; - - if (valid(filepath)) { - fullUrl = filepath; - } else { - if (!extname(filepath)) { - filepath += this.options.extname; - } - fullUrl = resolve(root || this.options.root, filepath); - } - return _context7.abrupt('return', this.respectCache(filepath, asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() { - return regeneratorRuntime.wrap(function _callee6$(_context6) { - while (1) { - switch (_context6.prev = _context6.next) { - case 0: - _context6.t0 = _this3; - _context6.next = 3; - return get$1(fullUrl); - - case 3: - _context6.t1 = _context6.sent; - return _context6.abrupt('return', _context6.t0.parse.call(_context6.t0, _context6.t1)); - - case 5: - case 'end': - return _context6.stop(); - } - } - }, _callee6, _this3); - })))); - - case 3: - case 'end': - return _context7.stop(); - } - } - }, _callee7, this); - })); - - function getTemplateFromUrl(_x10, _x11) { - return _ref6.apply(this, arguments); - } - - return getTemplateFromUrl; - }(), - respectCache: function () { - var _ref8 = asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(key, getter) { - var cacheEnabled, value; - return regeneratorRuntime.wrap(function _callee8$(_context8) { - while (1) { - switch (_context8.prev = _context8.next) { - case 0: - cacheEnabled = this.options.cache; - - if (!(cacheEnabled && this.cache[key])) { - _context8.next = 3; - break; - } - - return _context8.abrupt('return', this.cache[key]); - - case 3: - _context8.next = 5; - return getter(); - - case 5: - value = _context8.sent; - - if (cacheEnabled) { - this.cache[key] = value; - } - return _context8.abrupt('return', value); - - case 8: - case 'end': - return _context8.stop(); - } - } - }, _callee8, this); - })); - - function respectCache(_x12, _x13) { - return _ref8.apply(this, arguments); - } - - return respectCache; - }(), express: function express(opts) { opts = opts || {}; var self = this; return function (filePath, ctx, cb) { - assert(Array.isArray(this.root) || isString(this.root), 'illegal views root, are you using express.js?'); + assert(isArray(this.root) || isString(this.root), 'illegal views root, are you using express.js?'); opts.root = this.root; self.renderFile(filePath, ctx, opts).then(function (html) { return cb(null, html); @@ -3655,7 +3524,7 @@ }; function normalizeStringArray(value) { - if (Array.isArray(value)) return value; + if (isArray(value)) return value; if (isString(value)) return [value]; return []; } diff --git a/dist/liquid.js.map b/dist/liquid.js.map index 0e0413335..1fd63fc96 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/util/http.js","../src/whitespace-ctrl.js","../src/tokenizer.js","../src/util/fs.js","../src/util/url.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 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)) {\n return value\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// peoperty 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 = 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","export function get (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 sending 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","import fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\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 base.href = resolved\n\n head.removeChild(base)\n\n return resolved\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} 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 (!Array.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 (!Array.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),\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 v.substr(begin, length === undefined ? 1 : length),\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_encode': encodeURIComponent\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 {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.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 {anySeries} from './util/promise.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 renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\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 lookup: function (filepath, root) {\n root = this.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 getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\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 express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.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 (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\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","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","arguments","src","last","arr","uniq","u","a","l","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","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","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","whiteSpaceCtrl","tokens","options","greedy","inRaw","shouldTrimLeft","trimLeft","shouldTrimRight","trimRight","trim_left","trim_tag_left","trim_value_left","trim_right","trim_tag_right","trim_value_right","rLeft","replace","rRight","parse","rLiquid","currIndent","lineNumber","LineNumber","lastMatchEnd","lastIndex","index","parseHTMLToken","parseTagToken","trim","parseValueToken","raw","pos","indent","args","htmlFragment","html","parsedLinesCount","lastMatchBegin","readFileAsync","filepath","fs","readFile","content","statFileAsync","stat","splitPathRe","urlRe","extname","valid","resolveUrl","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","resolved","removeChild","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","anySeries","ret","item","idx","catch","mapSeries","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","size","ch","formatCodes","A","b","B","c","toLocaleString","C","H","getHours","I","L","getMilliseconds","m","M","getMinutes","P","q","round","valueOf","S","getSeconds","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","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","renderFile","lookup","code","getTemplateFromFile","getTemplateFromUrl","respectCache","fullUrl","isValidUrl","httpGet","getter","cacheEnabled","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\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 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)) {\n return value\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// peoperty 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 = 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),\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 v.substr(begin, length === undefined ? 1 : length),\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_encode': encodeURIComponent\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 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 return []\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","cache","JSON","isObject","indexOf","proto","isArray","forOwn","iteratee","k","assign","srcs","Array","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","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","Date","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","encodeURIComponent","getFixed","getMaxFixed","f","toFixed","getTime","registerAll","registerFilter","_engine","Parser","Render","tags","tokenizer","respectCache","renderFile","getter","cacheEnabled","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 c78b1b0eb..a83d215de 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}},T(R.prototype),R.prototype[n]=function(){return this},u.AsyncIterator=R,u.async=function(e,t,r,n){var i=new R(w(e,t,r,n));return u.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},T(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,M.prototype={constructor:M,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 O(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function j(e,t){O.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){j.call(this,{message:e},t)}function P(e,t){m(this,e),this.originalError=e,j.call(this,e,t)}function D(e,t){if(e instanceof D)return e;m(this,e),this.originalError=e,j.call(this,e,t.token)}function C(e){O.call(this),this.message=e+""}function I(e){O.call(this),this.message=e+""}function ae(e,t){if(!e)throw new I(t=t||"expect "+e+" to be true")}(A.prototype=ee(Error.prototype)).constructor=A,(P.prototype=ee(Error.prototype)).constructor=P,(D.prototype=ee(Error.prototype)).constructor=D,(C.prototype=ee(Error.prototype)).constructor=C,(I.prototype=ee(Error.prototype)).constructor=I;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!te(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&&(o(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 Y={};function H(e){return new Promise(function(r,n){Y.readFile(e,"utf8",function(e,t){e?n(e):r(t)})})}function G(e){return new Promise(function(r,n){Y.stat(e,function(e,t){return e?n(e):r(t)})})}var z={},U=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/,B=/^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/;function W(e,t){return o(e)&&(e=e[0]),e&&"/"!==y(e)&&(e+="/"),function(e,t){var r=document.createElement("base");r.href=e;var n=document.getElementsByTagName("head")[0];n.insertBefore(r,n.firstChild);var i=document.createElement("a");i.href=t;var o=i.href;return r.href=o,n.removeChild(r),o}(e,t)}var J,X=(J=se,{"==":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 W.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 xe=["January","February","March","April","May","June","July","August","September","October","November","December"],be=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ke=xe.map(Re),Ee=be.map(Re),Te={1:"st",2:"nd",3:"rd",default:"th"};function Re(e){return e.slice(0,3)}var Se={daysInMonth:function(e){return[31,Se.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r":">",'"':""","'":"'"},Oe={"&":"&","<":"<",">":">",""":'"',"'":"'"},je={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return Pe(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=Le[a];r+=u?u.call(this,e):"%"+a}}(n,t):e},default:function(e,t){return se(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:Fe,escape_once:function(e){return Fe(Pe(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return Oe[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(t)},last:function(e){return y(e)},lstrip:function(e){return Pe(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:De(function(e,t){return e-t}),modulo:De(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:De(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 Pe(e).split(t).join(r)},replace_first:function(e,t,r){return Pe(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 Pe(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return e.substr(t,void 0===r?1:r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return Pe(e).split(t)},strip:function(e){return Pe(e).trim()},strip_html:function(e){return Pe(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return Pe(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=Pe(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 Pe(e).toUpperCase()},url_encode:encodeURIComponent};function Fe(e){return Pe(e).replace(/&|<|>|"|'/g,function(e){return Me[e]})}function Ae(e){var t=(e+"").split(".");return 1=|<|>|\s+contains\s+/];function O(){this.name=this.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}function j(e,t){O.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 M(e,t){j.call(this,{message:e},t)}function P(e,t){m(this,e),this.originalError=e,j.call(this,e,t)}function A(e,t){if(e instanceof A)return e;m(this,e),this.originalError=e,j.call(this,e,t.token)}function D(e){O.call(this),this.message=e+""}function I(e){O.call(this),this.message=e+""}function ue(e,t){if(!e)throw new I(t=t||"expect "+e+" to be true")}(M.prototype=ee(Error.prototype)).constructor=M,(P.prototype=ee(Error.prototype)).constructor=P,(A.prototype=ee(Error.prototype)).constructor=A,(D.prototype=ee(Error.prototype)).constructor=D,(I.prototype=ee(Error.prototype)).constructor=I;var V={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:l.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:p,line:l.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 M("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 B,X=(B=fe,{"==":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,W.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 U.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 be=["January","February","March","April","May","June","July","August","September","October","November","December"],ke=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Ee=be.map(Se),Re=ke.map(Se),Te={1:"st",2:"nd",3:"rd",default:"th"};function Se(e){return e.slice(0,3)}var _e={daysInMonth:function(e){return[31,_e.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31]},getDayOfYear:function(e){for(var t=0,r=0;r":">",'"':""","'":"'"},Me={"&":"&","<":"<",">":">",""":'"',"'":"'"},Fe={abs:function(e){return Math.abs(e)},append:function(e,t){return e+t},capitalize:function(e){return De(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=Oe[a];r+=u?u.call(this,e):"%"+a}}(n,t):e},default:function(e,t){return fe(e)?e:t},divided_by:function(e,t){return e/t},downcase:function(e){return e.toLowerCase()},escape:Pe,escape_once:function(e){return Pe(De(e).replace(/&(amp|lt|gt|#34|#39);/g,function(e){return Me[e]}))},first:function(e){return e[0]},floor:function(e){return Math.floor(e)},join:function(e,t){return e.join(t)},last:function(e){return y(e)},lstrip:function(e){return De(e).replace(/^\s+/,"")},map:function(e,t){return e.map(function(e){return e[t]})},minus:Ie(function(e,t){return e-t}),modulo:Ie(function(e,t){return e%t}),newline_to_br:function(e){return e.replace(/\n/g,"
")},plus:Ie(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 De(e).split(t).join(r)},replace_first:function(e,t,r){return De(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 De(e).replace(/\s+$/,"")},size:function(e){return e.length},slice:function(e,t,r){return e.substr(t,void 0===r?1:r)},sort:function(e,t){return e.sort(t)},split:function(e,t){return De(e).split(t)},strip:function(e){return De(e).trim()},strip_html:function(e){return De(e).replace(/|||<.*?>/g,"")},strip_newlines:function(e){return De(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=De(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 De(e).toUpperCase()},url_encode:encodeURIComponent};function Pe(e){return De(e).replace(/&|<|>|"|'/g,function(e){return je[e]})}function Ae(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 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)) {\n return value\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// peoperty 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 = 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","export function get (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 sending the response.'))\n }\n xhr.open('GET', url)\n xhr.send()\n })\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 fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import {last, isArray} from './underscore'\n\nconst splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^/]+?|)(\\.[^./]*|))(?:[/]*)$/\nconst urlRe = /^(?:\\w+:)?\\/\\/([^\\s.]+\\.\\S{2}|localhost[:?\\d]*)\\S*$/\n\n// https://github.com/jinder/path/blob/master/path.js#L567\nexport function extname (path) {\n return splitPathRe.exec(path).slice(1)[3]\n}\n\n// https://www.npmjs.com/package/is-url\nexport function valid (path) {\n return urlRe.test(path)\n}\n\nexport function resolve (root, path) {\n if (isArray(root)) {\n root = root[0]\n }\n if (root && last(root) !== '/') {\n root += '/'\n }\n return resolveUrl(root, path)\n}\n\nfunction resolveUrl (root, path) {\n const base = document.createElement('base')\n base.href = arguments[0]\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 base.href = resolved\n\n head.removeChild(base)\n\n return resolved\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","/*\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 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} 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 (!Array.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 (!Array.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),\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 v.substr(begin, length === undefined ? 1 : length),\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_encode': encodeURIComponent\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 {get as httpGet} from './util/http.js'\nimport * as _ from './util/underscore.js'\nimport assert from './util/assert.js'\nimport * as tokenizer from './tokenizer.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\nimport path from 'path'\nimport {valid as isValidUrl, extname, resolve} from './util/url.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 {anySeries} from './util/promise.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 renderFile: async function (filepath, ctx, opts) {\n opts = _.assign({}, opts)\n const templates = await this.getTemplate(filepath, opts.root)\n return this.render(templates, ctx, opts)\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 lookup: function (filepath, root) {\n root = this.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 getTemplate: function (filepath, root) {\n return typeof XMLHttpRequest === 'undefined'\n ? this.getTemplateFromFile(filepath, root)\n : this.getTemplateFromUrl(filepath, root)\n },\n getTemplateFromFile: async function (filepath, root) {\n if (!path.extname(filepath)) {\n filepath += this.options.extname\n }\n filepath = await this.lookup(filepath, root)\n return this.respectCache(filepath, async () => {\n const str = await readFileAsync(filepath)\n return this.parse(str, filepath)\n })\n },\n getTemplateFromUrl: async function (filepath, root) {\n let fullUrl\n if (isValidUrl(filepath)) {\n fullUrl = filepath\n } else {\n if (!extname(filepath)) {\n filepath += this.options.extname\n }\n fullUrl = resolve(root || this.options.root, filepath)\n }\n return this.respectCache(\n filepath,\n async () => this.parse(await httpGet(fullUrl))\n )\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 express: function (opts) {\n opts = opts || {}\n const self = this\n return function (filePath, ctx, cb) {\n assert(Array.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 (Array.isArray(value)) return value\n if (_.isString(value)) return [value]\n return []\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","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","assign","Array","arguments","src","last","arr","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","l","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","url","xhr","XMLHttpRequest","onload","status","responseText","statusText","onerror","open","send","parse","options","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","readFileAsync","filepath","readFile","content","statFileAsync","stat","splitPathRe","urlRe","root","base","document","createElement","href","head","getElementsByTagName","insertBefore","firstChild","a","resolved","removeChild","resolveUrl","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","mapSeries","iteratee","ret","item","idx","x","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","_context","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","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","concat","date","getTime","format","output","remaining","results","func","strftime","escape","m","bindFixed","pattern","replacement","arg1","arg2","amp","pow","sort","o","u","encodeURIComponent","getFixed","f","toFixed","registerAll","registerFilter","_engine","tag","Parser","tokenizer","register","_context3","code","catch","getTemplateFromFile","getTemplateFromUrl","extname","lookup","respectCache","_this3","httpGet","fullUrl","getter","cacheEnabled","filePath","renderFile","tagImpls","_tagInstance","tagImpl","impl","instance","_filterInstance","apply","argList","strict_filters","keyMatch","clear"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"liquid.min.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/util/fs.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":["/**\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 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)) {\n return value\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// peoperty 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 = 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 fs from 'fs'\n\nexport function readFileAsync (filepath) {\n return new Promise(function (resolve, reject) {\n fs.readFile(filepath, 'utf8', function (err, content) {\n err ? reject(err) : resolve(content)\n })\n })\n};\n\nexport function statFileAsync (path) {\n return new Promise(function (resolve, reject) {\n fs.stat(path, (err, stat) => err ? reject(err) : resolve(stat))\n })\n};\n","import * as _ from './util/underscore.js'\nimport path from 'path'\nimport {anySeries} from './util/promise.js'\nimport {statFileAsync, readFileAsync} from './util/fs.js'\n\nfunction lookup (filepath, root, options) {\n root = options.root.concat(root || [])\n root = _.uniq(root)\n const paths = root.map(root => path.resolve(root || location.href, 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 resolve (filepath, root, options) {\n if (!path.extname(filepath)) {\n filepath += options.extname\n }\n return lookup(filepath, root, options)\n}\n\nexport async function read (filepath) {\n return readFileAsync(filepath)\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),\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 v.substr(begin, length === undefined ? 1 : length),\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_encode': encodeURIComponent\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 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 return []\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","stringify","isNil","String","to_liquid","toLiquid","cache","JSON","isObject","indexOf","proto","isArray","assign","Array","arguments","src","last","arr","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","l","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","mapSeries","iteratee","ret","item","idx","x","readFileAsync","filepath","readFile","content","statFileAsync","stat","lookup","root","options","u","a","concat","location","href","_context","code","catch","extname","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","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","encodeURIComponent","getFixed","f","toFixed","registerAll","registerFilter","_engine","tag","Parser","tokenizer","respectCache","getter","cacheEnabled","register","filePath","renderFile","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 d356a1de8..34f9e529d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,179 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", + "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.51" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", + "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51", + "jsesc": "2.5.1", + "lodash": "4.17.10", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", + "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", + "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", + "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.51" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", + "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", + "dev": true, + "requires": { + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.2" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", + "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", + "dev": true + }, + "@babel/template": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", + "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "lodash": "4.17.10" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", + "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "@babel/generator": "7.0.0-beta.51", + "@babel/helper-function-name": "7.0.0-beta.51", + "@babel/helper-split-export-declaration": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "debug": "3.1.0", + "globals": "11.7.0", + "invariant": "2.2.4", + "lodash": "4.17.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.10", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, "@sinonjs/formatio": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/@sinonjs/formatio/download/@sinonjs/formatio-2.0.0.tgz", @@ -19,15 +192,17 @@ "integrity": "sha1-kWN0KsNcEtNgLeznQxdkOzXbaoA=", "dev": true }, - "JSONStream": { - "version": "1.3.3", - "resolved": "http://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.3.tgz", - "integrity": "sha1-J7S4+7/qtOcbz1Uefye+jZUiOb8=", - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - } + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.2.tgz", + "integrity": "sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==", + "dev": true }, "abab": { "version": "1.0.4", @@ -35,12 +210,6 @@ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", "dev": true }, - "abbrev": { - "version": "1.0.9", - "resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, "accepts": { "version": "1.3.5", "resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz", @@ -57,15 +226,6 @@ "integrity": "sha1-8JWCkpdwanyXdpWMCvyJMKm52dg=", "dev": true }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "http://registry.npm.taobao.org/acorn-dynamic-import/download/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha1-kBzu5Mf6rvfgetKkfokGddpQong=", - "dev": true, - "requires": { - "acorn": "5.7.1" - } - }, "acorn-globals": { "version": "4.1.0", "resolved": "http://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.1.0.tgz", @@ -75,17 +235,6 @@ "acorn": "5.7.1" } }, - "acorn-node": { - "version": "1.5.2", - "resolved": "http://registry.npm.taobao.org/acorn-node/download/acorn-node-1.5.2.tgz", - "integrity": "sha1-LKcj3xnZl7BYJLafbH+wkfxCwyI=", - "dev": true, - "requires": { - "acorn": "5.7.1", - "acorn-dynamic-import": "3.0.0", - "xtend": "4.0.1" - } - }, "ajv": { "version": "5.5.2", "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz", @@ -98,23 +247,6 @@ "json-schema-traverse": "0.3.1" } }, - "align-text": { - "version": "0.1.4", - "resolved": "http://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-escapes": { "version": "3.1.0", "resolved": "http://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.1.0.tgz", @@ -142,36 +274,36 @@ "sprintf-js": "1.0.3" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, "array-equal": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/array-equal/download/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "http://registry.npm.taobao.org/array-filter/download/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "http://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "array-map": { - "version": "0.0.0", - "resolved": "http://registry.npm.taobao.org/array-map/download/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "http://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "array-union": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", @@ -187,6 +319,12 @@ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, "arrify": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz", @@ -199,43 +337,6 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, - "asn1.js": { - "version": "4.10.1", - "resolved": "http://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz", - "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "http://registry.npm.taobao.org/assert/download/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "http://registry.npm.taobao.org/util/download/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, "assert-plus": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", @@ -248,9 +349,15 @@ "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async": { "version": "1.5.2", - "resolved": "http://registry.npm.taobao.org/async/download/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, @@ -266,6 +373,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", @@ -332,9 +445,20 @@ "trim-right": "1.0.1" } }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "6.24.1", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-call-delegate": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-helper-call-delegate/download/babel-helper-call-delegate-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { @@ -346,7 +470,7 @@ }, "babel-helper-define-map": { "version": "6.26.0", - "resolved": "http://registry.npm.taobao.org/babel-helper-define-map/download/babel-helper-define-map-6.26.0.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { @@ -356,9 +480,20 @@ "lodash": "4.17.10" } }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-function-name": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-helper-function-name/download/babel-helper-function-name-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { @@ -371,7 +506,7 @@ }, "babel-helper-get-function-arity": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-helper-get-function-arity/download/babel-helper-get-function-arity-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { @@ -381,7 +516,7 @@ }, "babel-helper-hoist-variables": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-helper-hoist-variables/download/babel-helper-hoist-variables-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { @@ -391,7 +526,7 @@ }, "babel-helper-optimise-call-expression": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-helper-optimise-call-expression/download/babel-helper-optimise-call-expression-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { @@ -401,7 +536,7 @@ }, "babel-helper-regex": { "version": "6.26.0", - "resolved": "http://registry.npm.taobao.org/babel-helper-regex/download/babel-helper-regex-6.26.0.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { @@ -410,9 +545,22 @@ "lodash": "4.17.10" } }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "6.24.1", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0" + } + }, "babel-helper-replace-supers": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-helper-replace-supers/download/babel-helper-replace-supers-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { @@ -445,16 +593,83 @@ }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-check-es2015-constants/download/babel-plugin-check-es2015-constants-6.22.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { "babel-runtime": "6.26.0" } }, + "babel-plugin-external-helpers": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz", + "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.10.1", + "test-exclude": "4.2.1" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + } + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "6.24.1", + "babel-plugin-syntax-async-functions": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-arrow-functions/download/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { @@ -463,7 +678,7 @@ }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-block-scoped-functions/download/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { @@ -472,7 +687,7 @@ }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.26.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-block-scoping/download/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { @@ -485,7 +700,7 @@ }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-classes/download/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { @@ -502,7 +717,7 @@ }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-computed-properties/download/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { @@ -512,7 +727,7 @@ }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-destructuring/download/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { @@ -521,7 +736,7 @@ }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-duplicate-keys/download/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { @@ -531,7 +746,7 @@ }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-for-of/download/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { @@ -540,7 +755,7 @@ }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-function-name/download/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { @@ -551,7 +766,7 @@ }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-literals/download/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { @@ -560,7 +775,7 @@ }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-amd/download/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { @@ -571,8 +786,8 @@ }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.26.2", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-commonjs/download/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha1-WKeThjqefKhwvcWogRF/+sJ9tvM=", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", @@ -583,7 +798,7 @@ }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-systemjs/download/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { @@ -594,7 +809,7 @@ }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-umd/download/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { @@ -605,7 +820,7 @@ }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-object-super/download/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { @@ -615,7 +830,7 @@ }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-parameters/download/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { @@ -629,7 +844,7 @@ }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-shorthand-properties/download/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { @@ -639,7 +854,7 @@ }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-spread/download/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { @@ -648,7 +863,7 @@ }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-sticky-regex/download/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { @@ -659,7 +874,7 @@ }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-template-literals/download/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { @@ -668,7 +883,7 @@ }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-typeof-symbol/download/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { @@ -677,7 +892,7 @@ }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-unicode-regex/download/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { @@ -686,18 +901,38 @@ "regexpu-core": "2.0.0" } }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", + "babel-plugin-syntax-exponentiation-operator": "6.13.0", + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-regenerator": { "version": "6.26.0", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-regenerator/download/babel-plugin-transform-regenerator-6.26.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { "regenerator-transform": "0.10.1" } }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-strict-mode/download/babel-plugin-transform-strict-mode-6.24.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { @@ -705,13 +940,15 @@ "babel-types": "6.26.0" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "http://registry.npm.taobao.org/babel-preset-es2015/download/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", + "babel-plugin-syntax-trailing-function-commas": "6.22.0", + "babel-plugin-transform-async-to-generator": "6.24.1", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", "babel-plugin-transform-es2015-block-scoping": "6.26.0", @@ -734,7 +971,11 @@ "babel-plugin-transform-es2015-template-literals": "6.22.0", "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" + "babel-plugin-transform-exponentiation-operator": "6.24.1", + "babel-plugin-transform-regenerator": "6.26.0", + "browserslist": "3.2.8", + "invariant": "2.2.4", + "semver": "5.5.0" } }, "babel-register": { @@ -804,12 +1045,6 @@ "to-fast-properties": "1.0.3" } }, - "babelify": { - "version": "8.0.0", - "resolved": "http://registry.npm.taobao.org/babelify/download/babelify-8.0.0.tgz", - "integrity": "sha1-b2D18GK/52lXVO8kA7hCAUpYDtM=", - "dev": true - }, "babylon": { "version": "6.18.0", "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz", @@ -822,11 +1057,60 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base64-js": { - "version": "1.3.0", - "resolved": "http://registry.npm.taobao.org/base64-js/download/base64-js-1.3.0.tgz", - "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=", - "dev": true + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -838,12 +1122,6 @@ "tweetnacl": "0.14.5" } }, - "bn.js": { - "version": "4.11.8", - "resolved": "http://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", - "dev": true - }, "body-parser": { "version": "1.18.2", "resolved": "http://registry.npm.taobao.org/body-parser/download/body-parser-1.18.2.tgz", @@ -886,24 +1164,33 @@ "concat-map": "0.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "http://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-pack": { - "version": "6.1.0", - "resolved": "http://registry.npm.taobao.org/browser-pack/download/browser-pack-6.1.0.tgz", - "integrity": "sha1-w0uhDQuc4WK1ryJ8cTHJLC7NV3Q=", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "JSONStream": "1.3.3", - "combine-source-map": "0.8.0", - "defined": "1.0.0", - "safe-buffer": "5.1.2", - "through2": "2.0.3", - "umd": "3.0.3" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "browser-process-hrtime": { @@ -912,201 +1199,50 @@ "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", "dev": true }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "http://registry.npm.taobao.org/browser-resolve/download/browser-resolve-1.11.3.tgz", - "integrity": "sha1-m3y7PQ9RDky4a9vXlhJNKLWJCvY=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "browser-stdout": { "version": "1.3.1", "resolved": "http://registry.npm.taobao.org/browser-stdout/download/browser-stdout-1.3.1.tgz", "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", "dev": true }, - "browserify": { - "version": "16.2.2", - "resolved": "http://registry.npm.taobao.org/browserify/download/browserify-16.2.2.tgz", - "integrity": "sha1-Sx9mug5U+jnbxapL6WKRQhQ9kbA=", + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "JSONStream": "1.3.3", - "assert": "1.4.1", - "browser-pack": "6.1.0", - "browser-resolve": "1.11.3", - "browserify-zlib": "0.2.0", - "buffer": "5.1.0", - "cached-path-relative": "1.0.1", - "concat-stream": "1.6.2", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "defined": "1.0.0", - "deps-sort": "2.0.0", - "domain-browser": "1.2.0", - "duplexer2": "0.1.4", - "events": "2.1.0", - "glob": "7.1.2", - "has": "1.0.3", - "htmlescape": "1.1.1", - "https-browserify": "1.0.0", - "inherits": "2.0.3", - "insert-module-globals": "7.2.0", - "labeled-stream-splicer": "2.0.1", - "mkdirp": "0.5.1", - "module-deps": "6.1.0", - "os-browserify": "0.3.0", - "parents": "1.0.1", - "path-browserify": "0.0.1", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "read-only-stream": "2.0.0", - "readable-stream": "2.3.6", - "resolve": "1.8.1", - "shasum": "1.0.2", - "shell-quote": "1.6.1", - "stream-browserify": "2.0.1", - "stream-http": "2.8.3", - "string_decoder": "1.1.1", - "subarg": "1.0.0", - "syntax-error": "1.4.0", - "through2": "2.0.3", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.1", - "url": "0.11.0", - "util": "0.10.4", - "vm-browserify": "1.1.0", - "xtend": "4.0.1" + "caniuse-lite": "1.0.30000878", + "electron-to-chromium": "1.3.61" } }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", - "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz", - "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", - "dev": true, - "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.2", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "http://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz", - "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "http://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.1" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "http://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz", - "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", - "dev": true, - "requires": { - "pako": "1.0.6" - } - }, - "buffer": { - "version": "5.1.0", - "resolved": "http://registry.npm.taobao.org/buffer/download/buffer-5.1.0.tgz", - "integrity": "sha1-yRPkNnjHy3yL0Wr7zdtsVQXo+f4=", - "dev": true, - "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.12" - } - }, - "buffer-from": { - "version": "1.1.0", - "resolved": "http://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.0.tgz", - "integrity": "sha1-h/yqOimDWOCt5uRCz86EB0DRrQQ=", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "http://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, "builtin-modules": { "version": "1.1.1", "resolved": "http://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "http://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, "bytes": { "version": "3.0.0", "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, - "cached-path-relative": { + "cache-base": { "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/cached-path-relative/download/cached-path-relative-1.0.1.tgz", - "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", - "dev": true + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } }, "caller-path": { "version": "0.1.0", @@ -1123,12 +1259,11 @@ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, - "camelcase": { - "version": "1.2.1", - "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true + "caniuse-lite": { + "version": "1.0.30000878", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000878.tgz", + "integrity": "sha512-/dCGTdLCnjVJno1mFRn7Y6eit3AYaeFzSrMQHCoK0LEQaWl5snuLex1Ky4b8/Qu2ig5NgTX4cJx65hH9546puA==", + "dev": true }, "caseless": { "version": "0.12.0", @@ -1136,17 +1271,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "center-align": { - "version": "0.1.3", - "resolved": "http://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, "chai": { "version": "4.1.2", "resolved": "http://registry.npm.taobao.org/chai/download/chai-4.1.2.tgz", @@ -1195,22 +1319,35 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "http://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, "circular-json": { "version": "0.3.3", "resolved": "http://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz", "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=", "dev": true }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "http://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz", @@ -1226,33 +1363,22 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "cliui": { - "version": "2.1.0", - "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - } - } - }, "co": { "version": "4.6.0", "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "color-convert": { "version": "1.9.2", "resolved": "http://registry.npm.taobao.org/color-convert/download/color-convert-1.9.2.tgz", @@ -1268,25 +1394,11 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "http://registry.npm.taobao.org/combine-source-map/download/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", - "dev": true, - "requires": { - "convert-source-map": "1.1.3", - "inline-source-map": "0.6.2", - "lodash.memoize": "3.0.4", - "source-map": "0.5.7" - }, - "dependencies": { - "convert-source-map": { - "version": "1.1.3", - "resolved": "http://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", - "dev": true - } - } + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true }, "combined-stream": { "version": "1.0.6", @@ -1315,33 +1427,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "http://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", - "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", - "dev": true, - "requires": { - "buffer-from": "1.1.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "http://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, "contains-path": { "version": "0.1.0", "resolved": "http://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz", @@ -1384,6 +1469,12 @@ "integrity": "sha1-3YojVTB1L5iPmghE8/xYnjERElw=", "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-js": { "version": "2.5.7", "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-2.5.7.tgz", @@ -1396,6 +1487,12 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", + "dev": true + }, "coveralls": { "version": "3.0.2", "resolved": "http://registry.npm.taobao.org/coveralls/download/coveralls-3.0.2.tgz", @@ -1418,43 +1515,6 @@ } } }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "http://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz", - "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz", - "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "md5.js": "1.3.4", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz", - "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.3", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.2", - "sha.js": "2.4.11" - } - }, "cross-env": { "version": "5.2.0", "resolved": "http://registry.npm.taobao.org/cross-env/download/cross-env-5.2.0.tgz", @@ -1478,25 +1538,6 @@ "which": "1.3.1" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "http://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", - "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", - "dev": true, - "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.3", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", - "inherits": "2.0.3", - "pbkdf2": "3.0.16", - "public-encrypt": "4.0.2", - "randombytes": "2.0.6", - "randomfill": "1.0.4" - } - }, "cssom": { "version": "0.3.4", "resolved": "http://registry.npm.taobao.org/cssom/download/cssom-0.3.4.tgz", @@ -1532,12 +1573,6 @@ "whatwg-url": "6.5.0" } }, - "date-now": { - "version": "0.1.4", - "resolved": "http://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", @@ -1547,12 +1582,11 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "optional": true + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, "deep-eql": { "version": "3.0.1", @@ -1579,11 +1613,46 @@ "object-keys": "1.0.12" } }, - "defined": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/defined/download/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } }, "del": { "version": "2.2.2", @@ -1612,28 +1681,6 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, - "deps-sort": { - "version": "2.0.0", - "resolved": "http://registry.npm.taobao.org/deps-sort/download/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", - "dev": true, - "requires": { - "JSONStream": "1.3.3", - "shasum": "1.0.2", - "subarg": "1.0.0", - "through2": "2.0.3" - } - }, - "des.js": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/des.js/download/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, "destroy": { "version": "1.0.4", "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", @@ -1649,42 +1696,12 @@ "repeating": "2.0.1" } }, - "detective": { - "version": "5.1.0", - "resolved": "http://registry.npm.taobao.org/detective/download/detective-5.1.0.tgz", - "integrity": "sha1-eiDYkjbXszHM6mWDLnEjtVUbt8s=", - "dev": true, - "requires": { - "acorn-node": "1.5.2", - "defined": "1.0.0", - "minimist": "1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "diff": { "version": "3.5.0", "resolved": "http://registry.npm.taobao.org/diff/download/diff-3.5.0.tgz", "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", - "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" - } - }, "doctrine": { "version": "2.1.0", "resolved": "http://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz", @@ -1694,12 +1711,6 @@ "esutils": "2.0.2" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz", - "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", - "dev": true - }, "domexception": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz", @@ -1709,15 +1720,6 @@ "webidl-conversions": "4.0.2" } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.6" - } - }, "ecc-jsbn": { "version": "0.1.1", "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz", @@ -1728,26 +1730,43 @@ "jsbn": "0.1.1" } }, + "ecstatic": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.2.1.tgz", + "integrity": "sha512-BAdHx9LOCG1fwxY8MIydUBskl8UUQrYeC3WE14FA1DPlBzqoG1aOgEkypcSpmiiel8RAj8gW1s40RrclfrpGUg==", + "dev": true, + "requires": { + "he": "1.1.1", + "mime": "1.6.0", + "minimist": "1.2.0", + "url-join": "2.0.5" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "ee-first": { "version": "1.1.1", "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "elliptic": { - "version": "6.4.0", - "resolved": "http://registry.npm.taobao.org/elliptic/download/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.5", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } + "electron-to-chromium": { + "version": "1.3.61", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.61.tgz", + "integrity": "sha512-XjTdsm6x71Y48lF9EEvGciwXD70b20g0t+3YbrE+0fPFutqV08DSNrZXkoXAp3QuzX7TpL/OW+/VsNoR9GkuNg==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -2146,6 +2165,12 @@ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "http://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz", @@ -2158,20 +2183,45 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "events": { - "version": "2.1.0", - "resolved": "http://registry.npm.taobao.org/events/download/events-2.1.0.tgz", - "integrity": "sha1-KpoeGOYQbg6BKqnr1KgZs8KcC6U=", + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", "dev": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "http://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz", - "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.2" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "express": { @@ -2232,6 +2282,27 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "external-editor": { "version": "2.2.0", "resolved": "http://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz", @@ -2243,6 +2314,71 @@ "tmp": "0.0.33" } }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", @@ -2286,6 +2422,29 @@ "object-assign": "4.1.1" } }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "finalhandler": { "version": "1.1.1", "resolved": "http://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.1.tgz", @@ -2323,6 +2482,32 @@ "write": "0.2.1" } }, + "follow-redirects": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", + "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", + "dev": true, + "requires": { + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, "foreach": { "version": "2.0.5", "resolved": "http://registry.npm.taobao.org/foreach/download/foreach-2.0.5.tgz", @@ -2358,6 +2543,15 @@ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", @@ -2382,18 +2576,18 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/get-assigned-identifiers/download/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha1-bb9BHeZIy6+NkWnrsNLVdhkeL/E=", - "dev": true - }, "get-func-name": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/get-func-name/download/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", @@ -2495,24 +2689,36 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "hash-base": { - "version": "3.0.4", - "resolved": "http://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" } }, - "hash.js": { - "version": "1.1.5", - "resolved": "http://registry.npm.taobao.org/hash.js/download/hash.js-1.1.5.tgz", - "integrity": "sha1-44q0uF37HgxA/pJlwOm1SFTCOBI=", + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "he": { @@ -2521,17 +2727,6 @@ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.5", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, "home-or-tmp": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/home-or-tmp/download/home-or-tmp-2.0.0.tgz", @@ -2557,12 +2752,6 @@ "whatwg-encoding": "1.0.3" } }, - "htmlescape": { - "version": "1.1.1", - "resolved": "http://registry.npm.taobao.org/htmlescape/download/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", - "dev": true - }, "http-errors": { "version": "1.6.3", "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", @@ -2575,6 +2764,33 @@ "statuses": "1.4.0" } }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "3.1.0", + "follow-redirects": "1.5.7", + "requires-port": "1.0.0" + } + }, + "http-server": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.11.1.tgz", + "integrity": "sha512-6JeGDGoujJLmhjiRGlt8yK8Z9Kl0vnl/dQoQZlc4oeqaUoAKQg94NILLfrY3oWzSyFaQCVNTcKE5PZ3cH8VP9w==", + "dev": true, + "requires": { + "colors": "1.0.3", + "corser": "2.0.1", + "ecstatic": "3.2.1", + "http-proxy": "1.17.0", + "opener": "1.4.3", + "optimist": "0.6.1", + "portfinder": "1.0.17", + "union": "0.4.6" + } + }, "http-signature": { "version": "1.2.0", "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", @@ -2586,12 +2802,6 @@ "sshpk": "1.14.2" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, "iconv-lite": { "version": "0.4.23", "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.23.tgz", @@ -2601,12 +2811,6 @@ "safer-buffer": "2.1.2" } }, - "ieee754": { - "version": "1.1.12", - "resolved": "http://registry.npm.taobao.org/ieee754/download/ieee754-1.1.12.tgz", - "integrity": "sha1-UL8k5bnIu5ivSWTJQc2wkY2ntgs=", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "http://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", @@ -2629,15 +2833,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "http://registry.npm.taobao.org/inline-source-map/download/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, "inquirer": { "version": "5.2.0", "resolved": "http://registry.npm.taobao.org/inquirer/download/inquirer-5.2.0.tgz", @@ -2705,24 +2900,6 @@ } } }, - "insert-module-globals": { - "version": "7.2.0", - "resolved": "http://registry.npm.taobao.org/insert-module-globals/download/insert-module-globals-7.2.0.tgz", - "integrity": "sha1-7IfltCcoR54ye9XFxxYR3ftHUro=", - "dev": true, - "requires": { - "JSONStream": "1.3.3", - "acorn-node": "1.5.2", - "combine-source-map": "0.8.0", - "concat-stream": "1.6.2", - "is-buffer": "1.1.6", - "path-is-absolute": "1.0.1", - "process": "0.11.10", - "through2": "2.0.3", - "undeclared-identifiers": "1.1.2", - "xtend": "4.0.1" - } - }, "invariant": { "version": "2.2.4", "resolved": "http://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz", @@ -2738,6 +2915,26 @@ "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", "dev": true }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", @@ -2746,8 +2943,8 @@ }, "is-buffer": { "version": "1.1.6", - "resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { @@ -2765,12 +2962,57 @@ "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=", "dev": true }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-date-object": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, "is-finite": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz", @@ -2786,6 +3028,32 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz", @@ -2810,6 +3078,15 @@ "path-is-inside": "1.0.2" } }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, "is-promise": { "version": "2.1.0", "resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz", @@ -2843,6 +3120,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", @@ -2861,160 +3144,37 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul": { - "version": "0.4.5", - "resolved": "http://registry.npm.taobao.org/istanbul/download/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.11", - "js-yaml": "3.12.0", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.3.1", - "wordwrap": "1.0.0" - }, - "dependencies": { - "escodegen": { - "version": "1.8.1", - "resolved": "http://registry.npm.taobao.org/escodegen/download/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "estraverse": { - "version": "1.9.3", - "resolved": "http://registry.npm.taobao.org/estraverse/download/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "http://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "handlebars": { - "version": "4.0.11", - "resolved": "http://registry.npm.taobao.org/handlebars/download/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "http://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - } - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" } }, "js-tokens": { @@ -3120,15 +3280,6 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "http://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -3147,18 +3298,6 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "jsonify": { - "version": "0.0.0", - "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "http://registry.npm.taobao.org/jsonparse/download/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", @@ -3178,39 +3317,10 @@ "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - }, - "labeled-stream-splicer": { - "version": "2.0.1", - "resolved": "http://registry.npm.taobao.org/labeled-stream-splicer/download/labeled-stream-splicer-2.0.1.tgz", - "integrity": "sha1-nP+jL9meFhL9HYao25YkFtUpKSY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "isarray": "2.0.4", - "stream-splicer": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "2.0.4", - "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-2.0.4.tgz", - "integrity": "sha1-OOe8uw87obeTPIa6GJTd/DeBu7c=", - "dev": true - } - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "http://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true }, "lcov-parse": { "version": "0.0.10", @@ -3276,12 +3386,6 @@ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "http://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", - "dev": true - }, "lodash.sortby": { "version": "4.7.0", "resolved": "http://registry.npm.taobao.org/lodash.sortby/download/lodash.sortby-4.7.0.tgz", @@ -3300,12 +3404,6 @@ "integrity": "sha1-5AqMTR8UtTaqA+QqU3x6268MIL4=", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, "loose-envify": { "version": "1.3.1", "resolved": "http://registry.npm.taobao.org/loose-envify/download/loose-envify-1.3.1.tgz", @@ -3315,14 +3413,19 @@ "js-tokens": "3.0.2" } }, - "md5.js": { - "version": "1.3.4", - "resolved": "http://registry.npm.taobao.org/md5.js/download/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "object-visit": "1.0.1" } }, "media-typer": { @@ -3343,14 +3446,25 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "dev": true }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "http://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz", - "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "mime": { @@ -3380,18 +3494,6 @@ "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", "dev": true }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz", - "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, "minimatch": { "version": "3.0.4", "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", @@ -3407,6 +3509,27 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", @@ -3461,29 +3584,6 @@ "integrity": "sha1-dSRblm9+Pe/hl7A0VK+cWzVVlLc=", "dev": true }, - "module-deps": { - "version": "6.1.0", - "resolved": "http://registry.npm.taobao.org/module-deps/download/module-deps-6.1.0.tgz", - "integrity": "sha1-0eHvxIHGiGJp9xEsUsMjYYjhZHk=", - "dev": true, - "requires": { - "JSONStream": "1.3.3", - "browser-resolve": "1.11.3", - "cached-path-relative": "1.0.1", - "concat-stream": "1.6.2", - "defined": "1.0.0", - "detective": "5.1.0", - "duplexer2": "0.1.4", - "inherits": "2.0.3", - "parents": "1.0.1", - "readable-stream": "2.3.6", - "resolve": "1.8.1", - "stream-combiner2": "1.1.1", - "subarg": "1.0.0", - "through2": "2.0.3", - "xtend": "4.0.1" - } - }, "ms": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", @@ -3496,6 +3596,25 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "http://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", @@ -3544,15 +3663,6 @@ } } }, - "nopt": { - "version": "3.0.6", - "resolved": "http://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1.0.9" - } - }, "normalize-package-data": { "version": "2.4.0", "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.4.0.tgz", @@ -3577,6 +3687,2082 @@ "integrity": "sha1-3HkECl93uXcW3HlWX8f8PvfVBXA=", "dev": true }, + "nyc": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-12.0.2.tgz", + "integrity": "sha1-ikpO1pCWbBHsWH/4fuoMEsl0upk=", + "dev": true, + "requires": { + "archy": "1.0.0", + "arrify": "1.0.1", + "caching-transform": "1.0.1", + "convert-source-map": "1.5.1", + "debug-log": "1.0.1", + "default-require-extensions": "1.0.0", + "find-cache-dir": "0.1.1", + "find-up": "2.1.0", + "foreground-child": "1.5.6", + "glob": "7.1.2", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "2.3.2", + "istanbul-lib-report": "1.1.3", + "istanbul-lib-source-maps": "1.2.5", + "istanbul-reports": "1.4.1", + "md5-hex": "1.3.0", + "merge-source-map": "1.1.0", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "resolve-from": "2.0.0", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "spawn-wrap": "1.4.2", + "test-exclude": "4.2.1", + "yargs": "11.1.0", + "yargs-parser": "8.1.0" + }, + "dependencies": { + "align-text": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "async": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "atob": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "base": { + "version": "0.11.2", + "bundled": true, + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "builtin-modules": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "caching-transform": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "md5-hex": "1.3.0", + "mkdirp": "0.5.1", + "write-file-atomic": "1.3.4" + } + }, + "camelcase": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true + }, + "center-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "class-utils": { + "version": "0.3.6", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "which": "1.3.1" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "debug-log": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-property": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "error-ex": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "extend-shallow": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "commondir": "1.0.1", + "mkdirp": "0.5.1", + "pkg-dir": "1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "4.0.2", + "signal-exit": "3.0.2" + } + }, + "fragment-cache": { + "version": "0.2.1", + "bundled": true, + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "get-value": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "bundled": true, + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "has-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hosted-git-info": { + "version": "2.6.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "bundled": true, + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-number": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-odd": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "bundled": true, + "dev": true + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isobject": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz", + "integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==", + "dev": true, + "requires": { + "@babel/generator": "7.0.0-beta.51", + "@babel/parser": "7.0.0-beta.51", + "@babel/template": "7.0.0-beta.51", + "@babel/traverse": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.51", + "istanbul-lib-coverage": "2.0.1", + "semver": "5.5.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "istanbul-reports": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "kind-of": { + "version": "3.2.2", + "bundled": true, + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "longest": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-cache": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "md5-hex": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "md5-o-matic": "0.1.1" + } + }, + "md5-o-matic": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "micromatch": { + "version": "3.1.10", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "bundled": true, + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.pick": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "pascalcase": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + } + } + }, + "regex-not": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "repeat-element": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "bundled": true, + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "ret": { + "version": "0.1.15", + "bundled": true, + "dev": true + }, + "right-align": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-regex": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "set-value": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "source-map": { + "version": "0.5.7", + "bundled": true, + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "bundled": true, + "dev": true, + "requires": { + "atob": "2.1.1", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "1.5.6", + "mkdirp": "0.5.1", + "os-homedir": "1.0.2", + "rimraf": "2.6.2", + "signal-exit": "3.0.2", + "which": "1.3.1" + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "split-string": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "static-extend": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "bundled": true, + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "3.1.10", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "to-object-path": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "union-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "bundled": true, + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "bundled": true, + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "bundled": true, + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "bundled": true, + "dev": true + }, + "use": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "bundled": true, + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "window-size": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.1.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "8.1.0", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + } + } + } + } + }, "oauth-sign": { "version": "0.8.2", "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz", @@ -3589,12 +5775,61 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "object-keys": { "version": "1.0.12", "resolved": "http://registry.npm.taobao.org/object-keys/download/object-keys-1.0.12.tgz", "integrity": "sha1-CcU4VTd1dTEMymL1W7M0q/97PtI=", "dev": true }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, "on-finished": { "version": "2.3.0", "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", @@ -3622,9 +5857,15 @@ "mimic-fn": "1.2.0" } }, + "opener": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz", + "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=", + "dev": true + }, "optimist": { "version": "0.6.1", - "resolved": "http://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { @@ -3634,7 +5875,7 @@ "dependencies": { "wordwrap": { "version": "0.0.3", - "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true } @@ -3654,12 +5895,6 @@ "wordwrap": "1.0.0" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "http://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, "os-homedir": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz", @@ -3696,34 +5931,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "pako": { - "version": "1.0.6", - "resolved": "http://registry.npm.taobao.org/pako/download/pako-1.0.6.tgz", - "integrity": "sha1-AQEhG6pwxLykoPY/Igbpe3368lg=", - "dev": true - }, - "parents": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/parents/download/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", - "dev": true, - "requires": { - "path-platform": "0.11.15" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "http://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.1.tgz", - "integrity": "sha1-9r8pOBgzK9DatU77Fgh3JHRebKg=", - "dev": true, - "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.16" - } - }, "parse-json": { "version": "2.2.0", "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz", @@ -3745,10 +5952,10 @@ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, - "path-browserify": { - "version": "0.0.1", - "resolved": "http://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz", - "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { @@ -3784,12 +5991,6 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "path-platform": { - "version": "0.11.15", - "resolved": "http://registry.npm.taobao.org/path-platform/download/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", - "dev": true - }, "path-to-regexp": { "version": "0.1.7", "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", @@ -3811,19 +6012,6 @@ "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", "dev": true }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "http://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.16.tgz", - "integrity": "sha1-dAQgjsawG2LYW/g4U6gGT42cKlw=", - "dev": true, - "requires": { - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.2", - "sha.js": "2.4.11" - } - }, "performance-now": { "version": "2.1.0", "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", @@ -3872,6 +6060,23 @@ "integrity": "sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs=", "dev": true }, + "portfinder": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", + "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "http://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", @@ -3884,12 +6089,6 @@ "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", "dev": true }, - "process": { - "version": "0.11.10", - "resolved": "http://registry.npm.taobao.org/process/download/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "process-nextick-args": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz", @@ -3912,19 +6111,6 @@ "ipaddr.js": "1.6.0" } }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "http://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.2.tgz", - "integrity": "sha1-RuuRByBr9zSJ+LhbadkTNMZhCZQ=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "parse-asn1": "5.1.1", - "randombytes": "2.0.6" - } - }, "punycode": { "version": "1.4.1", "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", @@ -3937,43 +6123,12 @@ "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "http://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "http://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, "ramda": { "version": "0.25.0", "resolved": "http://registry.npm.taobao.org/ramda/download/ramda-0.25.0.tgz", "integrity": "sha1-j99oIxz/qQvC+UYDkKDLdKKbKak=", "dev": true }, - "randombytes": { - "version": "2.0.6", - "resolved": "http://registry.npm.taobao.org/randombytes/download/randombytes-2.0.6.tgz", - "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "http://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz", - "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", - "dev": true, - "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.2" - } - }, "range-parser": { "version": "1.2.0", "resolved": "http://registry.npm.taobao.org/range-parser/download/range-parser-1.2.0.tgz", @@ -4024,15 +6179,6 @@ } } }, - "read-only-stream": { - "version": "2.0.0", - "resolved": "http://registry.npm.taobao.org/read-only-stream/download/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", - "dev": true, - "requires": { - "readable-stream": "2.3.6" - } - }, "read-pkg": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz", @@ -4093,20 +6239,20 @@ }, "regenerate": { "version": "1.4.0", - "resolved": "http://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz", - "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerator-runtime": { - "version": "0.11.1", - "resolved": "http://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", "dev": true }, "regenerator-transform": { "version": "0.10.1", - "resolved": "http://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.10.1.tgz", - "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { "babel-runtime": "6.26.0", @@ -4114,6 +6260,16 @@ "private": "0.1.8" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, "regexp.prototype.flags": { "version": "1.2.0", "resolved": "http://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.2.0.tgz", @@ -4131,7 +6287,7 @@ }, "regexpu-core": { "version": "2.0.0", - "resolved": "http://registry.npm.taobao.org/regexpu-core/download/regexpu-core-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { @@ -4142,13 +6298,13 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "http://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, "regjsparser": { "version": "0.1.5", - "resolved": "http://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { @@ -4157,15 +6313,21 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } } }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, "repeat-string": { "version": "1.6.1", - "resolved": "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, @@ -4226,6 +6388,12 @@ "tough-cookie": "2.3.4" } }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, "require-uncached": { "version": "1.0.3", "resolved": "http://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz", @@ -4236,6 +6404,12 @@ "resolve-from": "1.0.1" } }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, "resolve": { "version": "1.8.1", "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.8.1.tgz", @@ -4253,8 +6427,9 @@ }, "resolve-url": { "version": "0.2.1", - "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true }, "restore-cursor": { "version": "2.0.0", @@ -4266,15 +6441,11 @@ "signal-exit": "3.0.2" } }, - "right-align": { - "version": "0.1.3", - "resolved": "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - } + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true }, "rimraf": { "version": "2.6.2", @@ -4285,14 +6456,77 @@ "glob": "7.1.2" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "http://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz", - "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "rollup": { + "version": "0.64.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.64.1.tgz", + "integrity": "sha512-+ThdVXrvonJdOTzyybMBipP0uz605Z8AnzWVY3rf+cSGnLO7uNkJBlN+9jXqWOomkvumXfm/esmBpA5d53qm7g==", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "@types/estree": "0.0.39", + "@types/node": "10.9.2" + } + }, + "rollup-plugin-alias": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-alias/-/rollup-plugin-alias-1.4.0.tgz", + "integrity": "sha512-lB094zdi19FS+1bVarVp9kBN0Zk41PdTGoCk0z8xesKO7RGjOo18cp1hUzEqrOQ4bM9+KLD9nbnu/XUxQm9pbg==", + "dev": true, + "requires": { + "slash": "1.0.0" + } + }, + "rollup-plugin-babel": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-3.0.7.tgz", + "integrity": "sha512-bVe2y0z/V5Ax1qU8NX/0idmzIwJPdUGu8Xx3vXH73h0yGjxfv2gkFI82MBVg49SlsFlLTBadBHb67zy4TWM3hA==", + "dev": true, + "requires": { + "rollup-pluginutils": "1.5.2" + } + }, + "rollup-plugin-node-resolve": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz", + "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==", + "dev": true, + "requires": { + "builtin-modules": "2.0.0", + "is-module": "1.0.0", + "resolve": "1.8.1" + }, + "dependencies": { + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "dev": true + } + } + }, + "rollup-plugin-shim": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-shim/-/rollup-plugin-shim-1.0.0.tgz", + "integrity": "sha512-rZqFD43y4U9nSqVq3iyWBiDwmBQJY8Txi04yI9jTKD3xcl7CbFjh1qRpQshUB3sONLubDzm7vJiwB+1MEGv67w==", + "dev": true + }, + "rollup-plugin-uglify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-4.0.0.tgz", + "integrity": "sha512-f6W31EQLzxSEYfN3x6/lyljHqXSoCjXKcTsnwz3evQvHgU1+qTzU2SE0SIG7tbAvaCewp2UaZ5x3k6nYsxOP9A==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.51", + "uglify-js": "3.4.8" + } + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=", + "dev": true, + "requires": { + "estree-walker": "0.2.1", + "minimatch": "3.0.4" } }, "run-async": { @@ -4319,6 +6553,15 @@ "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", "dev": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", @@ -4376,32 +6619,35 @@ "send": "0.16.2" } }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, "setprototypeof": { "version": "1.1.0", "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "http://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz", - "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.2" - } - }, - "shasum": { - "version": "1.0.2", - "resolved": "http://registry.npm.taobao.org/shasum/download/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", - "dev": true, - "requires": { - "json-stable-stringify": "0.0.1", - "sha.js": "2.4.11" - } - }, "shebang-command": { "version": "1.2.0", "resolved": "http://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", @@ -4417,30 +6663,12 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shell-quote": { - "version": "1.6.1", - "resolved": "http://registry.npm.taobao.org/shell-quote/download/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" - } - }, "signal-exit": { "version": "3.0.2", "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "simple-concat": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/simple-concat/download/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", - "dev": true - }, "sinon": { "version": "6.1.4", "resolved": "http://registry.npm.taobao.org/sinon/download/sinon-6.1.4.tgz", @@ -4489,12 +6717,132 @@ "is-fullwidth-code-point": "2.0.0" } }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "source-map": { "version": "0.5.7", "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, "source-map-support": { "version": "0.4.18", "resolved": "http://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz", @@ -4504,6 +6852,12 @@ "source-map": "0.5.7" } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, "spdx-correct": { "version": "3.0.0", "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.0.0.tgz", @@ -4536,6 +6890,15 @@ "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=", "dev": true }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", @@ -4559,6 +6922,27 @@ "tweetnacl": "0.14.5" } }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, "statuses": { "version": "1.4.0", "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.4.0.tgz", @@ -4571,49 +6955,6 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "http://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "http://registry.npm.taobao.org/stream-combiner2/download/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.6" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "http://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz", - "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "stream-splicer": { - "version": "2.0.0", - "resolved": "http://registry.npm.taobao.org/stream-splicer/download/stream-splicer-2.0.0.tgz", - "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6" - } - }, "string-width": { "version": "2.1.1", "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", @@ -4654,15 +6995,6 @@ "regexp.prototype.flags": "1.2.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", @@ -4684,23 +7016,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "subarg": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/subarg/download/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dev": true, - "requires": { - "minimist": "1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "superagent": { "version": "3.8.2", "resolved": "http://registry.npm.taobao.org/superagent/download/superagent-3.8.2.tgz", @@ -4758,13 +7073,73 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, - "syntax-error": { - "version": "1.4.0", - "resolved": "http://registry.npm.taobao.org/syntax-error/download/syntax-error-1.4.0.tgz", - "integrity": "sha1-LZ1P9cBkrLcRWUo+O5UFStUdkHw=", + "test-exclude": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", "dev": true, "requires": { - "acorn-node": "1.5.2" + "arrify": "1.0.1", + "micromatch": "3.1.10", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + }, + "dependencies": { + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } } }, "text-encoding": { @@ -4785,25 +7160,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "through2": { - "version": "2.0.3", - "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.6", - "xtend": "4.0.1" - } - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "http://registry.npm.taobao.org/timers-browserify/download/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "dev": true, - "requires": { - "process": "0.11.10" - } - }, "tmp": { "version": "0.0.33", "resolved": "http://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", @@ -4813,18 +7169,54 @@ "os-tmpdir": "1.0.2" } }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, "to-fast-properties": { "version": "1.0.3", "resolved": "http://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, "tough-cookie": { "version": "2.3.4", "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.4.tgz", @@ -4857,12 +7249,6 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.1.tgz", - "integrity": "sha1-PwUlHuF5BN/QZ3VGZw25ZRaCuBE=", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", @@ -4904,59 +7290,80 @@ "mime-types": "2.1.18" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "uglify-js": { - "version": "3.4.5", - "resolved": "http://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.5.tgz", - "integrity": "sha1-ZQiJwHZs8Pb9U0bOoJzSEvVEvmk=", + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.8.tgz", + "integrity": "sha512-WatYTD84gP/867bELqI2F/2xC9PQBETn/L+7RGq9MQOA/7yFBNvY1UwXqvtILeE6n0ITwBXxp34M0/o70dzj6A==", "dev": true, "requires": { - "commander": "2.16.0", + "commander": "2.17.1", "source-map": "0.6.1" }, "dependencies": { "commander": { - "version": "2.16.0", - "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.16.0.tgz", - "integrity": "sha1-8WOQWTmWzrTz7rAgsx14Uo9/ilA=", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, "source-map": { "version": "0.6.1", - "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "http://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "umd": { - "version": "3.0.3", - "resolved": "http://registry.npm.taobao.org/umd/download/umd-3.0.3.tgz", - "integrity": "sha1-qp/mU8QrkJdnhInAEACstp8LJs8=", - "dev": true - }, - "undeclared-identifiers": { - "version": "1.1.2", - "resolved": "http://registry.npm.taobao.org/undeclared-identifiers/download/undeclared-identifiers-1.1.2.tgz", - "integrity": "sha1-fYUKmIh8/0vQv2SZnAFNCO1tGsw=", + "union": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/union/-/union-0.4.6.tgz", + "integrity": "sha1-GY+9rrolTniLDvy2MLwR8kopWeA=", "dev": true, "requires": { - "acorn-node": "1.5.2", - "get-assigned-identifiers": "1.2.0", - "simple-concat": "1.0.0", - "xtend": "4.0.1" + "qs": "2.3.3" + }, + "dependencies": { + "qs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", + "dev": true + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } } }, "unpipe": { @@ -4965,6 +7372,46 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", @@ -4982,32 +7429,23 @@ } } }, - "url": { - "version": "0.11.0", - "resolved": "http://registry.npm.taobao.org/url/download/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true }, - "util": { - "version": "0.10.4", - "resolved": "http://registry.npm.taobao.org/util/download/util-0.10.4.tgz", - "integrity": "sha1-OqASW/5mikZy3liFfTrOJ+y3aQE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } + "url-join": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", + "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, "util-deprecate": { "version": "1.0.2", @@ -5054,12 +7492,6 @@ "extsprintf": "1.3.0" } }, - "vm-browserify": { - "version": "1.1.0", - "resolved": "http://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.0.tgz", - "integrity": "sha1-vXbWojMj4sqP+hICjcBFWcdfkBk=", - "dev": true - }, "w3c-hr-time": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.1.tgz", @@ -5118,13 +7550,6 @@ "isexe": "2.0.0" } }, - "window-size": { - "version": "0.1.0", - "resolved": "http://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, "wordwrap": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz", @@ -5161,12 +7586,6 @@ "resolved": "http://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz", "integrity": "sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo=", "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true } } } diff --git a/package.json b/package.json index aed44714b..5c614d702 100644 --- a/package.json +++ b/package.json @@ -7,11 +7,10 @@ "browser": "dist/liquid.js", "scripts": { "lint": "eslint src/ test/ *.js", - "test": "npm run test:unit && npm run test:e2e", - "test:unit": "mocha test/unit", - "test:e2e": "mocha test/e2e", + "test": "mocha test/unit", + "e2e": "mocha test/e2e", "coverage": "cross-env NODE_ENV=test nyc report --reporter=html mocha test/unit", - "coveralls": "cross-env NODE_ENV=test nyc report --reporter=text-lcov mocha | coveralls", + "coveralls": "cross-env NODE_ENV=test nyc report --reporter=text-lcov mocha test/unit | coveralls", "dist": "rollup -c && ls -lh dist", "demo:browser": "echo open http://localhost:8080/demo/browser && http-server -c-1", "demo:nodejs": "node ./demo/nodejs/index.js", @@ -66,6 +65,7 @@ "nyc": "^12.0.2", "regenerator-runtime": "^0.12.1", "rollup": "^0.64.1", + "rollup-plugin-alias": "^1.4.0", "rollup-plugin-babel": "^3.0.7", "rollup-plugin-node-resolve": "^3.3.0", "rollup-plugin-shim": "^1.0.0", @@ -82,7 +82,9 @@ "instrument": false }, "babel": { - "presets": ["env"], + "presets": [ + "env" + ], "plugins": [ [ "transform-runtime", @@ -96,7 +98,9 @@ ], "env": { "test": { - "plugins": ["istanbul"] + "plugins": [ + "istanbul" + ] } } } diff --git a/rollup.config.js b/rollup.config.js index 995214cb5..d0a2948f7 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,4 +1,5 @@ import shim from 'rollup-plugin-shim' +import alias from 'rollup-plugin-alias' import babel from 'rollup-plugin-babel' import {uglify} from 'rollup-plugin-uglify' import pkg from './package.json' @@ -48,6 +49,9 @@ export default [{ }], plugins: [ shim(fake), + alias({ + './template': './template-browser' + }), nodeResolve(), babel(babelConf) ], diff --git a/src/index.js b/src/index.js index 4418f625d..21db9fc56 100644 --- a/src/index.js +++ b/src/index.js @@ -1,18 +1,14 @@ import 'regenerator-runtime/runtime' import * as Scope from './scope' -import {get as httpGet} from './util/http.js' +import * as template from './template' import * as _ from './util/underscore.js' import assert from './util/assert.js' import * as tokenizer from './tokenizer.js' -import {statFileAsync, readFileAsync} from './util/fs.js' -import path from 'path' -import {valid as isValidUrl, extname, resolve} from './util/url.js' import Render from './render.js' import Tag from './tag.js' import Filter from './filter.js' import Parser from './parser' import {isTruthy, isFalsy, evalExp, evalValue} from './syntax.js' -import {anySeries} from './util/promise.js' import {ParseError, TokenizationError, RenderBreakError, AssertionError} from './util/error.js' import tags from './tags/index.js' import filters from './filters.js' @@ -46,64 +42,17 @@ const _engine = { const tpl = await this.parse(html) return this.render(tpl, ctx, opts) }, - renderFile: async function (filepath, ctx, opts) { - opts = _.assign({}, opts) - const templates = await this.getTemplate(filepath, opts.root) - return this.render(templates, ctx, opts) - }, - evalValue: function (str, scope) { - const tpl = this.parser.parseValue(str.trim()) - return this.renderer.evalValue(tpl, scope) - }, - registerFilter: function (name, filter) { - return this.filter.register(name, filter) - }, - registerTag: function (name, tag) { - return this.tag.register(name, tag) - }, - lookup: function (filepath, root) { - root = this.options.root.concat(root || []) - root = _.uniq(root) - const paths = root.map(root => path.resolve(root, filepath)) - return anySeries(paths, async path => { - try { - await statFileAsync(path) - return path - } catch (e) { - e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}` - throw e - } - }) - }, - getTemplate: function (filepath, root) { - return typeof XMLHttpRequest === 'undefined' - ? this.getTemplateFromFile(filepath, root) - : this.getTemplateFromUrl(filepath, root) - }, - getTemplateFromFile: async function (filepath, root) { - if (!path.extname(filepath)) { - filepath += this.options.extname - } - filepath = await this.lookup(filepath, root) + getTemplate: async function (file, root) { + const filepath = await template.resolve(file, root, this.options) return this.respectCache(filepath, async () => { - const str = await readFileAsync(filepath) + const str = await template.read(filepath) return this.parse(str, filepath) }) }, - getTemplateFromUrl: async function (filepath, root) { - let fullUrl - if (isValidUrl(filepath)) { - fullUrl = filepath - } else { - if (!extname(filepath)) { - filepath += this.options.extname - } - fullUrl = resolve(root || this.options.root, filepath) - } - return this.respectCache( - filepath, - async () => this.parse(await httpGet(fullUrl)) - ) + renderFile: async function (file, ctx, opts) { + opts = _.assign({}, opts) + const templates = await this.getTemplate(file, opts.root) + return this.render(templates, ctx, opts) }, respectCache: async function (key, getter) { const cacheEnabled = this.options.cache @@ -116,11 +65,21 @@ const _engine = { } return value }, + evalValue: function (str, scope) { + const tpl = this.parser.parseValue(str.trim()) + return this.renderer.evalValue(tpl, scope) + }, + registerFilter: function (name, filter) { + return this.filter.register(name, filter) + }, + registerTag: function (name, tag) { + return this.tag.register(name, tag) + }, express: function (opts) { opts = opts || {} const self = this return function (filePath, ctx, cb) { - assert(Array.isArray(this.root) || _.isString(this.root), + assert(_.isArray(this.root) || _.isString(this.root), 'illegal views root, are you using express.js?') opts.root = this.root self.renderFile(filePath, ctx, opts).then(html => cb(null, html), cb) @@ -129,7 +88,7 @@ const _engine = { } function normalizeStringArray (value) { - if (Array.isArray(value)) return value + if (_.isArray(value)) return value if (_.isString(value)) return [value] return [] } diff --git a/src/tags/for.js b/src/tags/for.js index d8aeda716..e6ce2aaef 100644 --- a/src/tags/for.js +++ b/src/tags/for.js @@ -1,5 +1,5 @@ import {mapSeries} from '../util/promise.js' -import {isString, isObject} from '../util/underscore.js' +import {isString, isObject, isArray} from '../util/underscore.js' import assert from '../util/assert.js' import {identifier, value, hash} from '../lexical.js' @@ -38,14 +38,14 @@ export default function (liquid, Liquid) { async function render (scope, hash) { let collection = Liquid.evalExp(this.collection, scope) - if (!Array.isArray(collection)) { + if (!isArray(collection)) { if (isString(collection) && collection.length > 0) { collection = [collection] } else if (isObject(collection)) { collection = Object.keys(collection).map((key) => [key, collection[key]]) } } - if (!Array.isArray(collection) || !collection.length) { + if (!isArray(collection) || !collection.length) { return liquid.renderer.renderTemplates(this.elseTemplates, scope) } diff --git a/src/template-browser.js b/src/template-browser.js new file mode 100644 index 000000000..7002dba53 --- /dev/null +++ b/src/template-browser.js @@ -0,0 +1,52 @@ +import {last, isArray} from './util/underscore' + +function domResolve (root, path) { + const base = document.createElement('base') + base.href = root + + const head = document.getElementsByTagName('head')[0] + head.insertBefore(base, head.firstChild) + + const a = document.createElement('a') + a.href = path + const resolved = a.href + head.removeChild(base) + + return resolved +} + +export function resolve (filepath, root, options) { + root = root || options.root + if (isArray(root)) { + root = root[0] + } + if (root.length && last(root) !== '/') { + root += '/' + } + const url = domResolve(root, filepath) + return url.replace(/^(\w+:\/\/[^/]+)(\/[^?]+)/, (str, origin, path) => { + const last = path.split('/').pop() + if (/\.\w+$/.test(last)) { + return str + } + return origin + path + options.extname + }) +} + +export async function read (url) { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest() + xhr.onload = () => { + if (xhr.status >= 200 && xhr.status < 300) { + resolve(xhr.responseText) + } else { + reject(new Error(xhr.statusText)) + } + } + xhr.onerror = () => { + reject(new Error('An error occurred whilst receiving the response.')) + } + xhr.open('GET', url) + xhr.send() + }) +} diff --git a/src/template.js b/src/template.js new file mode 100644 index 000000000..ef968c6c0 --- /dev/null +++ b/src/template.js @@ -0,0 +1,30 @@ +import * as _ from './util/underscore.js' +import path from 'path' +import {anySeries} from './util/promise.js' +import {statFileAsync, readFileAsync} from './util/fs.js' + +function lookup (filepath, root, options) { + root = options.root.concat(root || []) + root = _.uniq(root) + const paths = root.map(root => path.resolve(root || location.href, filepath)) + return anySeries(paths, async path => { + try { + await statFileAsync(path) + return path + } catch (e) { + e.message = `${e.code}: Failed to lookup ${filepath} in: ${root}` + throw e + } + }) +} + +export async function resolve (filepath, root, options) { + if (!path.extname(filepath)) { + filepath += options.extname + } + return lookup(filepath, root, options) +} + +export async function read (filepath) { + return readFileAsync(filepath) +} diff --git a/src/util/http.js b/src/util/http.js deleted file mode 100644 index eab76e7c1..000000000 --- a/src/util/http.js +++ /dev/null @@ -1,17 +0,0 @@ -export function get (url) { - return new Promise((resolve, reject) => { - const xhr = new XMLHttpRequest() - xhr.onload = () => { - if (xhr.status >= 200 && xhr.status < 300) { - resolve(xhr.responseText) - } else { - reject(new Error(xhr.statusText)) - } - } - xhr.onerror = () => { - reject(new Error('An error occurred whilst sending the response.')) - } - xhr.open('GET', url) - xhr.send() - }) -} diff --git a/src/util/url.js b/src/util/url.js deleted file mode 100644 index 37ce52ab9..000000000 --- a/src/util/url.js +++ /dev/null @@ -1,41 +0,0 @@ -import {last, isArray} from './underscore' - -const splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/ -const urlRe = /^(?:\w+:)?\/\/([^\s.]+\.\S{2}|localhost[:?\d]*)\S*$/ - -// https://github.com/jinder/path/blob/master/path.js#L567 -export function extname (path) { - return splitPathRe.exec(path).slice(1)[3] -} - -// https://www.npmjs.com/package/is-url -export function valid (path) { - return urlRe.test(path) -} - -export function resolve (root, path) { - if (isArray(root)) { - root = root[0] - } - if (root && last(root) !== '/') { - root += '/' - } - return resolveUrl(root, path) -} - -function resolveUrl (root, path) { - const base = document.createElement('base') - base.href = arguments[0] - - const head = document.getElementsByTagName('head')[0] - head.insertBefore(base, head.firstChild) - - const a = document.createElement('a') - a.href = path - const resolved = a.href - base.href = resolved - - head.removeChild(base) - - return resolved -} diff --git a/test/e2e/express.js b/test/e2e/express.js index 9acecb58d..923c352b2 100644 --- a/test/e2e/express.js +++ b/test/e2e/express.js @@ -2,7 +2,7 @@ const chai = require('chai') const request = require('supertest') const express = require('express') const mock = require('mock-fs') -const Liquid = require('../..') +const Liquid = require('../../dist/liquid.common.js') const chaiAsPromised = require('chai-as-promised') const expect = chai.expect diff --git a/test/e2e/xhr.js b/test/e2e/xhr.js index 3148b64ac..6c5ebd647 100644 --- a/test/e2e/xhr.js +++ b/test/e2e/xhr.js @@ -1,4 +1,4 @@ -var Liquid = require('../..') +var Liquid = require('../../dist/liquid.js') var sinon = require('sinon') var chai = require('chai') var expect = chai.expect @@ -6,16 +6,17 @@ chai.use(require('chai-as-promised')) describe('xhr', () => { if (process.version.match(/^v(\d+)/)[1] < 8) { + console.info('jsdom not supported, skipping xhr...') return } var JSDOM = require('jsdom').JSDOM - var server, engine, dom + var server, engine beforeEach(() => { server = sinon.createFakeServer() server.autoRespond = true server.respondWith('GET', 'https://example.com/views/hello.html', [200, {'Content-Type': 'text/plain'}, 'hello {{name}}']) - dom = new JSDOM('', { + var dom = new JSDOM('', { url: 'https://example.com/foo/bar.html', contentType: 'text/html', includeNodeLocations: true @@ -65,15 +66,18 @@ describe('xhr', () => { }) it('should throw error', function (done) { engine.renderFile('hello.html') + .then(() => done('should not be resolved')) .catch(function (e) { - expect(e.message).to.equal('An error occurred whilst sending the response.') + expect(e.message).to.equal('An error occurred whilst receiving the response.') done() }) - server.requests[0].error() + global.XMLHttpRequest.onCreate = function (request) { + setTimeout(() => request.error()) + } }) }) - describe('root', () => { - it('should support with null', () => { + describe('#renderFile() with root specified', () => { + it('should support undefined root', () => { engine = Liquid({ extname: '.html' }) @@ -82,12 +86,12 @@ describe('xhr', () => { return expect(engine.renderFile('hello.html', {name: 'alice5'})) .to.eventually.equal('hello alice5') }) - it('should support with empty', () => { + it('should support empty root', () => { engine = Liquid({ root: '', extname: '.html' }) - server.respondWith('GET', 'https://example.com/foo/hello.html', + server.respondWith('https://example.com/foo/hello.html', [200, {'Content-Type': 'text/plain'}, 'hello {{name}}']) return expect(engine.renderFile('hello.html', {name: 'alice5'})) .to.eventually.equal('hello alice5') diff --git a/test/unit/template-browser.js b/test/unit/template-browser.js new file mode 100644 index 000000000..08e34a270 --- /dev/null +++ b/test/unit/template-browser.js @@ -0,0 +1,85 @@ +import {resolve} from '../../src/template-browser.js' +import chai from 'chai' + +const expect = chai.expect + +describe('template-browser', function () { + if (process.version.match(/^v(\d+)/)[1] < 8) { + console.info('jsdom not supported, skipping template-browser...') + return + } + const JSDOM = require('jsdom').JSDOM + beforeEach(function () { + const dom = new JSDOM(``, { + url: 'https://example.com/foo/bar/', + contentType: 'text/html', + includeNodeLocations: true + }) + global.document = dom.window.document + }) + afterEach(function () { + delete global.document + }) + describe('resolve', function () { + it('should support relative root', function () { + expect(resolve('foo', './views/', { + extname: '', + root: ['.'] + })).to.equal('https://example.com/foo/bar/views/foo') + }) + it('should treat root as directory', function () { + expect(resolve('foo', './views', { + extname: '', + root: ['.'] + })).to.equal('https://example.com/foo/bar/views/foo') + }) + it('should support absolute root', function () { + expect(resolve('foo', '/views', { + extname: '', + root: ['.'] + })).to.equal('https://example.com/views/foo') + }) + it('should support empty root', function () { + expect(resolve('page.html', '', { + extname: '', + root: ['.'] + })).to.equal('https://example.com/foo/bar/page.html') + }) + it('should support full url as root', function () { + expect(resolve('page.html', 'https://example.com/views/', { + extname: '', + root: ['.'] + })).to.equal('https://example.com/views/page.html') + }) + it('should use options.root when root argument absent', function () { + expect(resolve('page.html', null, { + extname: '', + root: ['https://example.com/views', 'https://google.com/views'] + })).to.equal('https://example.com/views/page.html') + }) + it('should add extname when absent', function () { + expect(resolve('page', 'https://example.com/views/', { + extname: '.html', + root: ['.'] + })).to.equal('https://example.com/views/page.html') + }) + it('should add extname for urls have searchParams', function () { + expect(resolve('page?foo=bar', 'https://example.com/views/', { + extname: '.html', + root: ['.'] + })).to.equal('https://example.com/views/page.html?foo=bar') + }) + it('should not add extname when full url is given', function () { + expect(resolve('https://google.com/page.php', 'https://example.com/views/', { + extname: '.html', + root: ['.'] + })).to.equal('https://google.com/page.php') + }) + it('should not add extname when already have one', function () { + expect(resolve('page.php', 'https://example.com/views/', { + extname: '.html', + root: ['.'] + })).to.equal('https://example.com/views/page.php') + }) + }) +}) diff --git a/test/unit/util/url.js b/test/unit/util/url.js deleted file mode 100644 index 3524de406..000000000 --- a/test/unit/util/url.js +++ /dev/null @@ -1,63 +0,0 @@ -import {extname, resolve} from '../../../src/util/url.js' -import chai from 'chai' - -const expect = chai.expect - -describe('util/url', function () { - if (process.version.match(/^v(\d+)/)[1] < 8) { - return - } - const JSDOM = require('jsdom').JSDOM - let dom - beforeEach(function () { - dom = new JSDOM(``, { - url: 'https://example.com/foo/bar/', - contentType: 'text/html', - includeNodeLocations: true - }) - global.document = dom.window.document - }) - afterEach(function () { - delete global.document - }) - describe('resolve', function () { - describe('root', function () { - it('should support relative root', function () { - expect(resolve('./views', 'foo')) - .to.equal('https://example.com/foo/bar/views/foo') - expect(resolve('./views/', 'foo')) - .to.equal('https://example.com/foo/bar/views/foo') - }) - it('should support absolute root', function () { - expect(resolve('/views', 'foo')) - .to.equal('https://example.com/views/foo') - expect(resolve('/views/', 'foo')) - .to.equal('https://example.com/views/foo') - }) - it('should support empty root', function () { - expect(resolve('', 'page.html')) - .to.equal('https://example.com/foo/bar/page.html') - }) - it('should support full url as root', function () { - expect(resolve('https://example.com/views', 'page.html')) - .to.equal('https://example.com/views/page.html') - expect(resolve('https://example.com/views/', 'page.html')) - .to.equal('https://example.com/views/page.html') - }) - it('should get the first value when argument is array', function () { - expect(resolve(['https://example.com/views', 'https://google.com/views'], 'page.html')) - .to.equal('https://example.com/views/page.html') - expect(resolve(['https://example.com/views/', 'https://google.com/views'], 'page.html')) - .to.equal('https://example.com/views/page.html') - }) - }) - describe('extname', function () { - it('should support relative path', function () { - expect(extname('./views/page.html')).to.equal('.html') - }) - it('should support absolute path', function () { - expect(extname('/views/page.xml')).to.equal('.xml') - }) - }) - }) -})