njk-tool 0.0.23 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"app.min.cjs","sources":["../../node_modules/nunjucks/src/lib.js","../../node_modules/asap/raw.js","../../node_modules/asap/asap.js","../../node_modules/a-sync-waterfall/index.js","../../node_modules/nunjucks/src/lexer.js","../../node_modules/nunjucks/src/object.js","../../node_modules/nunjucks/src/nodes.js","../../node_modules/nunjucks/src/parser.js","../../node_modules/nunjucks/src/transformer.js","../../node_modules/nunjucks/src/runtime.js","../../node_modules/nunjucks/src/compiler.js","../../node_modules/nunjucks/src/filters.js","../../node_modules/nunjucks/src/loader.js","../../node_modules/nunjucks/src/precompiled-loader.js","../../node_modules/picomatch/lib/constants.js","../../node_modules/picomatch/lib/utils.js","../../node_modules/picomatch/lib/scan.js","../../node_modules/picomatch/lib/parse.js","../../node_modules/picomatch/lib/picomatch.js","../../node_modules/picomatch/index.js","../../node_modules/readdirp/index.js","../../node_modules/normalize-path/index.js","../../node_modules/anymatch/index.js","../../node_modules/is-extglob/index.js","../../node_modules/is-glob/index.js","../../node_modules/glob-parent/index.js","../../node_modules/braces/lib/utils.js","../../node_modules/braces/lib/stringify.js","../../node_modules/is-number/index.js","../../node_modules/to-regex-range/index.js","../../node_modules/fill-range/index.js","../../node_modules/braces/lib/compile.js","../../node_modules/braces/lib/expand.js","../../node_modules/braces/lib/constants.js","../../node_modules/braces/lib/parse.js","../../node_modules/braces/index.js","../../node_modules/binary-extensions/index.js","../../node_modules/is-binary-path/index.js","../../node_modules/chokidar/lib/constants.js","../../node_modules/chokidar/lib/nodefs-handler.js","../../node_modules/chokidar/lib/fsevents-handler.js","../../node_modules/chokidar/index.js","../../node_modules/nunjucks/src/node-loaders.js","../../node_modules/nunjucks/src/loaders.js","../../node_modules/nunjucks/src/tests.js","../../node_modules/nunjucks/src/globals.js","../../node_modules/nunjucks/src/express-app.js","../../node_modules/nunjucks/src/environment.js","../../node_modules/nunjucks/src/precompile-global.js","../../node_modules/nunjucks/src/precompile.js","../../node_modules/nunjucks/src/jinja-compat.js","../../node_modules/nunjucks/index.js","../../src/type.ts","../../src/style.dist.ts","../../src/template.dist.ts","../../src/index.ts"],"sourcesContent":["'use strict';\n\nvar ArrayProto = Array.prototype;\nvar ObjProto = Object.prototype;\nvar escapeMap = {\n '&': '&amp;',\n '\"': '&quot;',\n '\\'': '&#39;',\n '<': '&lt;',\n '>': '&gt;',\n '\\\\': '&#92;'\n};\nvar escapeRegex = /[&\"'<>\\\\]/g;\nvar _exports = module.exports = {};\nfunction hasOwnProp(obj, k) {\n return ObjProto.hasOwnProperty.call(obj, k);\n}\n_exports.hasOwnProp = hasOwnProp;\nfunction lookupEscape(ch) {\n return escapeMap[ch];\n}\nfunction _prettifyError(path, withInternals, err) {\n if (!err.Update) {\n // not one of ours, cast it\n err = new _exports.TemplateError(err);\n }\n err.Update(path);\n\n // Unless they marked the dev flag, show them a trace from here\n if (!withInternals) {\n var old = err;\n err = new Error(old.message);\n err.name = old.name;\n }\n return err;\n}\n_exports._prettifyError = _prettifyError;\nfunction TemplateError(message, lineno, colno) {\n var err;\n var cause;\n if (message instanceof Error) {\n cause = message;\n message = cause.name + \": \" + cause.message;\n }\n if (Object.setPrototypeOf) {\n err = new Error(message);\n Object.setPrototypeOf(err, TemplateError.prototype);\n } else {\n err = this;\n Object.defineProperty(err, 'message', {\n enumerable: false,\n writable: true,\n value: message\n });\n }\n Object.defineProperty(err, 'name', {\n value: 'Template render error'\n });\n if (Error.captureStackTrace) {\n Error.captureStackTrace(err, this.constructor);\n }\n var getStack;\n if (cause) {\n var stackDescriptor = Object.getOwnPropertyDescriptor(cause, 'stack');\n getStack = stackDescriptor && (stackDescriptor.get || function () {\n return stackDescriptor.value;\n });\n if (!getStack) {\n getStack = function getStack() {\n return cause.stack;\n };\n }\n } else {\n var stack = new Error(message).stack;\n getStack = function getStack() {\n return stack;\n };\n }\n Object.defineProperty(err, 'stack', {\n get: function get() {\n return getStack.call(err);\n }\n });\n Object.defineProperty(err, 'cause', {\n value: cause\n });\n err.lineno = lineno;\n err.colno = colno;\n err.firstUpdate = true;\n err.Update = function Update(path) {\n var msg = '(' + (path || 'unknown path') + ')';\n\n // only show lineno + colno next to path of template\n // where error occurred\n if (this.firstUpdate) {\n if (this.lineno && this.colno) {\n msg += \" [Line \" + this.lineno + \", Column \" + this.colno + \"]\";\n } else if (this.lineno) {\n msg += \" [Line \" + this.lineno + \"]\";\n }\n }\n msg += '\\n ';\n if (this.firstUpdate) {\n msg += ' ';\n }\n this.message = msg + (this.message || '');\n this.firstUpdate = false;\n return this;\n };\n return err;\n}\nif (Object.setPrototypeOf) {\n Object.setPrototypeOf(TemplateError.prototype, Error.prototype);\n} else {\n TemplateError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: TemplateError\n }\n });\n}\n_exports.TemplateError = TemplateError;\nfunction escape(val) {\n return val.replace(escapeRegex, lookupEscape);\n}\n_exports.escape = escape;\nfunction isFunction(obj) {\n return ObjProto.toString.call(obj) === '[object Function]';\n}\n_exports.isFunction = isFunction;\nfunction isArray(obj) {\n return ObjProto.toString.call(obj) === '[object Array]';\n}\n_exports.isArray = isArray;\nfunction isString(obj) {\n return ObjProto.toString.call(obj) === '[object String]';\n}\n_exports.isString = isString;\nfunction isObject(obj) {\n return ObjProto.toString.call(obj) === '[object Object]';\n}\n_exports.isObject = isObject;\n\n/**\n * @param {string|number} attr\n * @returns {(string|number)[]}\n * @private\n */\nfunction _prepareAttributeParts(attr) {\n if (!attr) {\n return [];\n }\n if (typeof attr === 'string') {\n return attr.split('.');\n }\n return [attr];\n}\n\n/**\n * @param {string} attribute Attribute value. Dots allowed.\n * @returns {function(Object): *}\n */\nfunction getAttrGetter(attribute) {\n var parts = _prepareAttributeParts(attribute);\n return function attrGetter(item) {\n var _item = item;\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n\n // If item is not an object, and we still got parts to handle, it means\n // that something goes wrong. Just roll out to undefined in that case.\n if (hasOwnProp(_item, part)) {\n _item = _item[part];\n } else {\n return undefined;\n }\n }\n return _item;\n };\n}\n_exports.getAttrGetter = getAttrGetter;\nfunction groupBy(obj, val, throwOnUndefined) {\n var result = {};\n var iterator = isFunction(val) ? val : getAttrGetter(val);\n for (var i = 0; i < obj.length; i++) {\n var value = obj[i];\n var key = iterator(value, i);\n if (key === undefined && throwOnUndefined === true) {\n throw new TypeError(\"groupby: attribute \\\"\" + val + \"\\\" resolved to undefined\");\n }\n (result[key] || (result[key] = [])).push(value);\n }\n return result;\n}\n_exports.groupBy = groupBy;\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj);\n}\n_exports.toArray = toArray;\nfunction without(array) {\n var result = [];\n if (!array) {\n return result;\n }\n var length = array.length;\n var contains = toArray(arguments).slice(1);\n var index = -1;\n while (++index < length) {\n if (indexOf(contains, array[index]) === -1) {\n result.push(array[index]);\n }\n }\n return result;\n}\n_exports.without = without;\nfunction repeat(char_, n) {\n var str = '';\n for (var i = 0; i < n; i++) {\n str += char_;\n }\n return str;\n}\n_exports.repeat = repeat;\nfunction each(obj, func, context) {\n if (obj == null) {\n return;\n }\n if (ArrayProto.forEach && obj.forEach === ArrayProto.forEach) {\n obj.forEach(func, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n func.call(context, obj[i], i, obj);\n }\n }\n}\n_exports.each = each;\nfunction map(obj, func) {\n var results = [];\n if (obj == null) {\n return results;\n }\n if (ArrayProto.map && obj.map === ArrayProto.map) {\n return obj.map(func);\n }\n for (var i = 0; i < obj.length; i++) {\n results[results.length] = func(obj[i], i);\n }\n if (obj.length === +obj.length) {\n results.length = obj.length;\n }\n return results;\n}\n_exports.map = map;\nfunction asyncIter(arr, iter, cb) {\n var i = -1;\n function next() {\n i++;\n if (i < arr.length) {\n iter(arr[i], i, next, cb);\n } else {\n cb();\n }\n }\n next();\n}\n_exports.asyncIter = asyncIter;\nfunction asyncFor(obj, iter, cb) {\n var keys = keys_(obj || {});\n var len = keys.length;\n var i = -1;\n function next() {\n i++;\n var k = keys[i];\n if (i < len) {\n iter(k, obj[k], i, len, next);\n } else {\n cb();\n }\n }\n next();\n}\n_exports.asyncFor = asyncFor;\nfunction indexOf(arr, searchElement, fromIndex) {\n return Array.prototype.indexOf.call(arr || [], searchElement, fromIndex);\n}\n_exports.indexOf = indexOf;\nfunction keys_(obj) {\n /* eslint-disable no-restricted-syntax */\n var arr = [];\n for (var k in obj) {\n if (hasOwnProp(obj, k)) {\n arr.push(k);\n }\n }\n return arr;\n}\n_exports.keys = keys_;\nfunction _entries(obj) {\n return keys_(obj).map(function (k) {\n return [k, obj[k]];\n });\n}\n_exports._entries = _entries;\nfunction _values(obj) {\n return keys_(obj).map(function (k) {\n return obj[k];\n });\n}\n_exports._values = _values;\nfunction extend(obj1, obj2) {\n obj1 = obj1 || {};\n keys_(obj2).forEach(function (k) {\n obj1[k] = obj2[k];\n });\n return obj1;\n}\n_exports._assign = _exports.extend = extend;\nfunction inOperator(key, val) {\n if (isArray(val) || isString(val)) {\n return val.indexOf(key) !== -1;\n } else if (isObject(val)) {\n return key in val;\n }\n throw new Error('Cannot use \"in\" operator to search for \"' + key + '\" in unexpected types.');\n}\n_exports.inOperator = inOperator;","\"use strict\";\n\nvar domain; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain = require(\"domain\");\n }\n domain.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain.active = process.domain = parentDomain;\n }\n}\n","\"use strict\";\n\nvar rawAsap = require(\"./raw\");\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n rawAsap(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n rawAsap.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\n","// MIT license (by Elan Shanker).\n(function(globals) {\n 'use strict';\n\n var executeSync = function(){\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'function'){\n args[0].apply(null, args.splice(1));\n }\n };\n\n var executeAsync = function(fn){\n if (typeof setImmediate === 'function') {\n setImmediate(fn);\n } else if (typeof process !== 'undefined' && process.nextTick) {\n process.nextTick(fn);\n } else {\n setTimeout(fn, 0);\n }\n };\n\n var makeIterator = function (tasks) {\n var makeCallback = function (index) {\n var fn = function () {\n if (tasks.length) {\n tasks[index].apply(null, arguments);\n }\n return fn.next();\n };\n fn.next = function () {\n return (index < tasks.length - 1) ? makeCallback(index + 1): null;\n };\n return fn;\n };\n return makeCallback(0);\n };\n \n var _isArray = Array.isArray || function(maybeArray){\n return Object.prototype.toString.call(maybeArray) === '[object Array]';\n };\n\n var waterfall = function (tasks, callback, forceAsync) {\n var nextTick = forceAsync ? executeAsync : executeSync;\n callback = callback || function () {};\n if (!_isArray(tasks)) {\n var err = new Error('First argument to waterfall must be an array of functions');\n return callback(err);\n }\n if (!tasks.length) {\n return callback();\n }\n var wrapIterator = function (iterator) {\n return function (err) {\n if (err) {\n callback.apply(null, arguments);\n callback = function () {};\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var next = iterator.next();\n if (next) {\n args.push(wrapIterator(next));\n } else {\n args.push(callback);\n }\n nextTick(function () {\n iterator.apply(null, args);\n });\n }\n };\n };\n wrapIterator(makeIterator(tasks))();\n };\n\n if (typeof define !== 'undefined' && define.amd) {\n define([], function () {\n return waterfall;\n }); // RequireJS\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = waterfall; // CommonJS\n } else {\n globals.waterfall = waterfall; // <script>\n }\n})(this);\n","'use strict';\n\nvar lib = require('./lib');\nvar whitespaceChars = \" \\n\\t\\r\\xA0\";\nvar delimChars = '()[]{}%*-+~/#,:|.<>=!';\nvar intChars = '0123456789';\nvar BLOCK_START = '{%';\nvar BLOCK_END = '%}';\nvar VARIABLE_START = '{{';\nvar VARIABLE_END = '}}';\nvar COMMENT_START = '{#';\nvar COMMENT_END = '#}';\nvar TOKEN_STRING = 'string';\nvar TOKEN_WHITESPACE = 'whitespace';\nvar TOKEN_DATA = 'data';\nvar TOKEN_BLOCK_START = 'block-start';\nvar TOKEN_BLOCK_END = 'block-end';\nvar TOKEN_VARIABLE_START = 'variable-start';\nvar TOKEN_VARIABLE_END = 'variable-end';\nvar TOKEN_COMMENT = 'comment';\nvar TOKEN_LEFT_PAREN = 'left-paren';\nvar TOKEN_RIGHT_PAREN = 'right-paren';\nvar TOKEN_LEFT_BRACKET = 'left-bracket';\nvar TOKEN_RIGHT_BRACKET = 'right-bracket';\nvar TOKEN_LEFT_CURLY = 'left-curly';\nvar TOKEN_RIGHT_CURLY = 'right-curly';\nvar TOKEN_OPERATOR = 'operator';\nvar TOKEN_COMMA = 'comma';\nvar TOKEN_COLON = 'colon';\nvar TOKEN_TILDE = 'tilde';\nvar TOKEN_PIPE = 'pipe';\nvar TOKEN_INT = 'int';\nvar TOKEN_FLOAT = 'float';\nvar TOKEN_BOOLEAN = 'boolean';\nvar TOKEN_NONE = 'none';\nvar TOKEN_SYMBOL = 'symbol';\nvar TOKEN_SPECIAL = 'special';\nvar TOKEN_REGEX = 'regex';\nfunction token(type, value, lineno, colno) {\n return {\n type: type,\n value: value,\n lineno: lineno,\n colno: colno\n };\n}\nvar Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(str, opts) {\n this.str = str;\n this.index = 0;\n this.len = str.length;\n this.lineno = 0;\n this.colno = 0;\n this.in_code = false;\n opts = opts || {};\n var tags = opts.tags || {};\n this.tags = {\n BLOCK_START: tags.blockStart || BLOCK_START,\n BLOCK_END: tags.blockEnd || BLOCK_END,\n VARIABLE_START: tags.variableStart || VARIABLE_START,\n VARIABLE_END: tags.variableEnd || VARIABLE_END,\n COMMENT_START: tags.commentStart || COMMENT_START,\n COMMENT_END: tags.commentEnd || COMMENT_END\n };\n this.trimBlocks = !!opts.trimBlocks;\n this.lstripBlocks = !!opts.lstripBlocks;\n }\n var _proto = Tokenizer.prototype;\n _proto.nextToken = function nextToken() {\n var lineno = this.lineno;\n var colno = this.colno;\n var tok;\n if (this.in_code) {\n // Otherwise, if we are in a block parse it as code\n var cur = this.current();\n if (this.isFinished()) {\n // We have nothing else to parse\n return null;\n } else if (cur === '\"' || cur === '\\'') {\n // We've hit a string\n return token(TOKEN_STRING, this._parseString(cur), lineno, colno);\n } else if (tok = this._extract(whitespaceChars)) {\n // We hit some whitespace\n return token(TOKEN_WHITESPACE, tok, lineno, colno);\n } else if ((tok = this._extractString(this.tags.BLOCK_END)) || (tok = this._extractString('-' + this.tags.BLOCK_END))) {\n // Special check for the block end tag\n //\n // It is a requirement that start and end tags are composed of\n // delimiter characters (%{}[] etc), and our code always\n // breaks on delimiters so we can assume the token parsing\n // doesn't consume these elsewhere\n this.in_code = false;\n if (this.trimBlocks) {\n cur = this.current();\n if (cur === '\\n') {\n // Skip newline\n this.forward();\n } else if (cur === '\\r') {\n // Skip CRLF newline\n this.forward();\n cur = this.current();\n if (cur === '\\n') {\n this.forward();\n } else {\n // Was not a CRLF, so go back\n this.back();\n }\n }\n }\n return token(TOKEN_BLOCK_END, tok, lineno, colno);\n } else if ((tok = this._extractString(this.tags.VARIABLE_END)) || (tok = this._extractString('-' + this.tags.VARIABLE_END))) {\n // Special check for variable end tag (see above)\n this.in_code = false;\n return token(TOKEN_VARIABLE_END, tok, lineno, colno);\n } else if (cur === 'r' && this.str.charAt(this.index + 1) === '/') {\n // Skip past 'r/'.\n this.forwardN(2);\n\n // Extract until the end of the regex -- / ends it, \\/ does not.\n var regexBody = '';\n while (!this.isFinished()) {\n if (this.current() === '/' && this.previous() !== '\\\\') {\n this.forward();\n break;\n } else {\n regexBody += this.current();\n this.forward();\n }\n }\n\n // Check for flags.\n // The possible flags are according to https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp)\n var POSSIBLE_FLAGS = ['g', 'i', 'm', 'y'];\n var regexFlags = '';\n while (!this.isFinished()) {\n var isCurrentAFlag = POSSIBLE_FLAGS.indexOf(this.current()) !== -1;\n if (isCurrentAFlag) {\n regexFlags += this.current();\n this.forward();\n } else {\n break;\n }\n }\n return token(TOKEN_REGEX, {\n body: regexBody,\n flags: regexFlags\n }, lineno, colno);\n } else if (delimChars.indexOf(cur) !== -1) {\n // We've hit a delimiter (a special char like a bracket)\n this.forward();\n var complexOps = ['==', '===', '!=', '!==', '<=', '>=', '//', '**'];\n var curComplex = cur + this.current();\n var type;\n if (lib.indexOf(complexOps, curComplex) !== -1) {\n this.forward();\n cur = curComplex;\n\n // See if this is a strict equality/inequality comparator\n if (lib.indexOf(complexOps, curComplex + this.current()) !== -1) {\n cur = curComplex + this.current();\n this.forward();\n }\n }\n switch (cur) {\n case '(':\n type = TOKEN_LEFT_PAREN;\n break;\n case ')':\n type = TOKEN_RIGHT_PAREN;\n break;\n case '[':\n type = TOKEN_LEFT_BRACKET;\n break;\n case ']':\n type = TOKEN_RIGHT_BRACKET;\n break;\n case '{':\n type = TOKEN_LEFT_CURLY;\n break;\n case '}':\n type = TOKEN_RIGHT_CURLY;\n break;\n case ',':\n type = TOKEN_COMMA;\n break;\n case ':':\n type = TOKEN_COLON;\n break;\n case '~':\n type = TOKEN_TILDE;\n break;\n case '|':\n type = TOKEN_PIPE;\n break;\n default:\n type = TOKEN_OPERATOR;\n }\n return token(type, cur, lineno, colno);\n } else {\n // We are not at whitespace or a delimiter, so extract the\n // text and parse it\n tok = this._extractUntil(whitespaceChars + delimChars);\n if (tok.match(/^[-+]?[0-9]+$/)) {\n if (this.current() === '.') {\n this.forward();\n var dec = this._extract(intChars);\n return token(TOKEN_FLOAT, tok + '.' + dec, lineno, colno);\n } else {\n return token(TOKEN_INT, tok, lineno, colno);\n }\n } else if (tok.match(/^(true|false)$/)) {\n return token(TOKEN_BOOLEAN, tok, lineno, colno);\n } else if (tok === 'none') {\n return token(TOKEN_NONE, tok, lineno, colno);\n /*\n * Added to make the test `null is null` evaluate truthily.\n * Otherwise, Nunjucks will look up null in the context and\n * return `undefined`, which is not what we want. This *may* have\n * consequences is someone is using null in their templates as a\n * variable.\n */\n } else if (tok === 'null') {\n return token(TOKEN_NONE, tok, lineno, colno);\n } else if (tok) {\n return token(TOKEN_SYMBOL, tok, lineno, colno);\n } else {\n throw new Error('Unexpected value while parsing: ' + tok);\n }\n }\n } else {\n // Parse out the template text, breaking on tag\n // delimiters because we need to look for block/variable start\n // tags (don't use the full delimChars for optimization)\n var beginChars = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0);\n if (this.isFinished()) {\n return null;\n } else if ((tok = this._extractString(this.tags.BLOCK_START + '-')) || (tok = this._extractString(this.tags.BLOCK_START))) {\n this.in_code = true;\n return token(TOKEN_BLOCK_START, tok, lineno, colno);\n } else if ((tok = this._extractString(this.tags.VARIABLE_START + '-')) || (tok = this._extractString(this.tags.VARIABLE_START))) {\n this.in_code = true;\n return token(TOKEN_VARIABLE_START, tok, lineno, colno);\n } else {\n tok = '';\n var data;\n var inComment = false;\n if (this._matches(this.tags.COMMENT_START)) {\n inComment = true;\n tok = this._extractString(this.tags.COMMENT_START);\n }\n\n // Continually consume text, breaking on the tag delimiter\n // characters and checking to see if it's a start tag.\n //\n // We could hit the end of the template in the middle of\n // our looping, so check for the null return value from\n // _extractUntil\n while ((data = this._extractUntil(beginChars)) !== null) {\n tok += data;\n if ((this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !inComment) {\n if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= tok.length) {\n var lastLine = tok.slice(-this.colno);\n if (/^\\s+$/.test(lastLine)) {\n // Remove block leading whitespace from beginning of the string\n tok = tok.slice(0, -this.colno);\n if (!tok.length) {\n // All data removed, collapse to avoid unnecessary nodes\n // by returning next token (block start)\n return this.nextToken();\n }\n }\n }\n // If it is a start tag, stop looping\n break;\n } else if (this._matches(this.tags.COMMENT_END)) {\n if (!inComment) {\n throw new Error('unexpected end of comment');\n }\n tok += this._extractString(this.tags.COMMENT_END);\n break;\n } else {\n // It does not match any tag, so add the character and\n // carry on\n tok += this.current();\n this.forward();\n }\n }\n if (data === null && inComment) {\n throw new Error('expected end of comment, got end of file');\n }\n return token(inComment ? TOKEN_COMMENT : TOKEN_DATA, tok, lineno, colno);\n }\n }\n };\n _proto._parseString = function _parseString(delimiter) {\n this.forward();\n var str = '';\n while (!this.isFinished() && this.current() !== delimiter) {\n var cur = this.current();\n if (cur === '\\\\') {\n this.forward();\n switch (this.current()) {\n case 'n':\n str += '\\n';\n break;\n case 't':\n str += '\\t';\n break;\n case 'r':\n str += '\\r';\n break;\n default:\n str += this.current();\n }\n this.forward();\n } else {\n str += cur;\n this.forward();\n }\n }\n this.forward();\n return str;\n };\n _proto._matches = function _matches(str) {\n if (this.index + str.length > this.len) {\n return null;\n }\n var m = this.str.slice(this.index, this.index + str.length);\n return m === str;\n };\n _proto._extractString = function _extractString(str) {\n if (this._matches(str)) {\n this.forwardN(str.length);\n return str;\n }\n return null;\n };\n _proto._extractUntil = function _extractUntil(charString) {\n // Extract all non-matching chars, with the default matching set\n // to everything\n return this._extractMatching(true, charString || '');\n };\n _proto._extract = function _extract(charString) {\n // Extract all matching chars (no default, so charString must be\n // explicit)\n return this._extractMatching(false, charString);\n };\n _proto._extractMatching = function _extractMatching(breakOnMatch, charString) {\n // Pull out characters until a breaking char is hit.\n // If breakOnMatch is false, a non-matching char stops it.\n // If breakOnMatch is true, a matching char stops it.\n\n if (this.isFinished()) {\n return null;\n }\n var first = charString.indexOf(this.current());\n\n // Only proceed if the first character doesn't meet our condition\n if (breakOnMatch && first === -1 || !breakOnMatch && first !== -1) {\n var t = this.current();\n this.forward();\n\n // And pull out all the chars one at a time until we hit a\n // breaking char\n var idx = charString.indexOf(this.current());\n while ((breakOnMatch && idx === -1 || !breakOnMatch && idx !== -1) && !this.isFinished()) {\n t += this.current();\n this.forward();\n idx = charString.indexOf(this.current());\n }\n return t;\n }\n return '';\n };\n _proto._extractRegex = function _extractRegex(regex) {\n var matches = this.currentStr().match(regex);\n if (!matches) {\n return null;\n }\n\n // Move forward whatever was matched\n this.forwardN(matches[0].length);\n return matches;\n };\n _proto.isFinished = function isFinished() {\n return this.index >= this.len;\n };\n _proto.forwardN = function forwardN(n) {\n for (var i = 0; i < n; i++) {\n this.forward();\n }\n };\n _proto.forward = function forward() {\n this.index++;\n if (this.previous() === '\\n') {\n this.lineno++;\n this.colno = 0;\n } else {\n this.colno++;\n }\n };\n _proto.backN = function backN(n) {\n for (var i = 0; i < n; i++) {\n this.back();\n }\n };\n _proto.back = function back() {\n this.index--;\n if (this.current() === '\\n') {\n this.lineno--;\n var idx = this.src.lastIndexOf('\\n', this.index - 1);\n if (idx === -1) {\n this.colno = this.index;\n } else {\n this.colno = this.index - idx;\n }\n } else {\n this.colno--;\n }\n }\n\n // current returns current character\n ;\n _proto.current = function current() {\n if (!this.isFinished()) {\n return this.str.charAt(this.index);\n }\n return '';\n }\n\n // currentStr returns what's left of the unparsed string\n ;\n _proto.currentStr = function currentStr() {\n if (!this.isFinished()) {\n return this.str.substr(this.index);\n }\n return '';\n };\n _proto.previous = function previous() {\n return this.str.charAt(this.index - 1);\n };\n return Tokenizer;\n}();\nmodule.exports = {\n lex: function lex(src, opts) {\n return new Tokenizer(src, opts);\n },\n TOKEN_STRING: TOKEN_STRING,\n TOKEN_WHITESPACE: TOKEN_WHITESPACE,\n TOKEN_DATA: TOKEN_DATA,\n TOKEN_BLOCK_START: TOKEN_BLOCK_START,\n TOKEN_BLOCK_END: TOKEN_BLOCK_END,\n TOKEN_VARIABLE_START: TOKEN_VARIABLE_START,\n TOKEN_VARIABLE_END: TOKEN_VARIABLE_END,\n TOKEN_COMMENT: TOKEN_COMMENT,\n TOKEN_LEFT_PAREN: TOKEN_LEFT_PAREN,\n TOKEN_RIGHT_PAREN: TOKEN_RIGHT_PAREN,\n TOKEN_LEFT_BRACKET: TOKEN_LEFT_BRACKET,\n TOKEN_RIGHT_BRACKET: TOKEN_RIGHT_BRACKET,\n TOKEN_LEFT_CURLY: TOKEN_LEFT_CURLY,\n TOKEN_RIGHT_CURLY: TOKEN_RIGHT_CURLY,\n TOKEN_OPERATOR: TOKEN_OPERATOR,\n TOKEN_COMMA: TOKEN_COMMA,\n TOKEN_COLON: TOKEN_COLON,\n TOKEN_TILDE: TOKEN_TILDE,\n TOKEN_PIPE: TOKEN_PIPE,\n TOKEN_INT: TOKEN_INT,\n TOKEN_FLOAT: TOKEN_FLOAT,\n TOKEN_BOOLEAN: TOKEN_BOOLEAN,\n TOKEN_NONE: TOKEN_NONE,\n TOKEN_SYMBOL: TOKEN_SYMBOL,\n TOKEN_SPECIAL: TOKEN_SPECIAL,\n TOKEN_REGEX: TOKEN_REGEX\n};","'use strict';\n\n// A simple class system, more documentation to come\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar EventEmitter = require('events');\nvar lib = require('./lib');\nfunction parentWrap(parent, prop) {\n if (typeof parent !== 'function' || typeof prop !== 'function') {\n return prop;\n }\n return function wrap() {\n // Save the current parent method\n var tmp = this.parent;\n\n // Set parent to the previous method, call, and restore\n this.parent = parent;\n var res = prop.apply(this, arguments);\n this.parent = tmp;\n return res;\n };\n}\nfunction extendClass(cls, name, props) {\n props = props || {};\n lib.keys(props).forEach(function (k) {\n props[k] = parentWrap(cls.prototype[k], props[k]);\n });\n var subclass = /*#__PURE__*/function (_cls) {\n _inheritsLoose(subclass, _cls);\n function subclass() {\n return _cls.apply(this, arguments) || this;\n }\n _createClass(subclass, [{\n key: \"typename\",\n get: function get() {\n return name;\n }\n }]);\n return subclass;\n }(cls);\n lib._assign(subclass.prototype, props);\n return subclass;\n}\nvar Obj = /*#__PURE__*/function () {\n function Obj() {\n // Unfortunately necessary for backwards compatibility\n this.init.apply(this, arguments);\n }\n var _proto = Obj.prototype;\n _proto.init = function init() {};\n Obj.extend = function extend(name, props) {\n if (typeof name === 'object') {\n props = name;\n name = 'anonymous';\n }\n return extendClass(this, name, props);\n };\n _createClass(Obj, [{\n key: \"typename\",\n get: function get() {\n return this.constructor.name;\n }\n }]);\n return Obj;\n}();\nvar EmitterObj = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(EmitterObj, _EventEmitter);\n function EmitterObj() {\n var _this2;\n var _this;\n _this = _EventEmitter.call(this) || this;\n // Unfortunately necessary for backwards compatibility\n (_this2 = _this).init.apply(_this2, arguments);\n return _this;\n }\n var _proto2 = EmitterObj.prototype;\n _proto2.init = function init() {};\n EmitterObj.extend = function extend(name, props) {\n if (typeof name === 'object') {\n props = name;\n name = 'anonymous';\n }\n return extendClass(this, name, props);\n };\n _createClass(EmitterObj, [{\n key: \"typename\",\n get: function get() {\n return this.constructor.name;\n }\n }]);\n return EmitterObj;\n}(EventEmitter);\nmodule.exports = {\n Obj: Obj,\n EmitterObj: EmitterObj\n};","'use strict';\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar _require = require('./object'),\n Obj = _require.Obj;\nfunction traverseAndCheck(obj, type, results) {\n if (obj instanceof type) {\n results.push(obj);\n }\n if (obj instanceof Node) {\n obj.findAll(type, results);\n }\n}\nvar Node = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Node, _Obj);\n function Node() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto = Node.prototype;\n _proto.init = function init(lineno, colno) {\n var _arguments = arguments,\n _this = this;\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n this.lineno = lineno;\n this.colno = colno;\n this.fields.forEach(function (field, i) {\n // The first two args are line/col numbers, so offset by 2\n var val = _arguments[i + 2];\n\n // Fields should never be undefined, but null. It makes\n // testing easier to normalize values.\n if (val === undefined) {\n val = null;\n }\n _this[field] = val;\n });\n };\n _proto.findAll = function findAll(type, results) {\n var _this2 = this;\n results = results || [];\n if (this instanceof NodeList) {\n this.children.forEach(function (child) {\n return traverseAndCheck(child, type, results);\n });\n } else {\n this.fields.forEach(function (field) {\n return traverseAndCheck(_this2[field], type, results);\n });\n }\n return results;\n };\n _proto.iterFields = function iterFields(func) {\n var _this3 = this;\n this.fields.forEach(function (field) {\n func(_this3[field], field);\n });\n };\n return Node;\n}(Obj); // Abstract nodes\nvar Value = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Value, _Node);\n function Value() {\n return _Node.apply(this, arguments) || this;\n }\n _createClass(Value, [{\n key: \"typename\",\n get: function get() {\n return 'Value';\n }\n }, {\n key: \"fields\",\n get: function get() {\n return ['value'];\n }\n }]);\n return Value;\n}(Node); // Concrete nodes\nvar NodeList = /*#__PURE__*/function (_Node2) {\n _inheritsLoose(NodeList, _Node2);\n function NodeList() {\n return _Node2.apply(this, arguments) || this;\n }\n var _proto2 = NodeList.prototype;\n _proto2.init = function init(lineno, colno, nodes) {\n _Node2.prototype.init.call(this, lineno, colno, nodes || []);\n };\n _proto2.addChild = function addChild(node) {\n this.children.push(node);\n };\n _createClass(NodeList, [{\n key: \"typename\",\n get: function get() {\n return 'NodeList';\n }\n }, {\n key: \"fields\",\n get: function get() {\n return ['children'];\n }\n }]);\n return NodeList;\n}(Node);\nvar Root = NodeList.extend('Root');\nvar Literal = Value.extend('Literal');\nvar _Symbol = Value.extend('Symbol');\nvar Group = NodeList.extend('Group');\nvar ArrayNode = NodeList.extend('Array');\nvar Pair = Node.extend('Pair', {\n fields: ['key', 'value']\n});\nvar Dict = NodeList.extend('Dict');\nvar LookupVal = Node.extend('LookupVal', {\n fields: ['target', 'val']\n});\nvar If = Node.extend('If', {\n fields: ['cond', 'body', 'else_']\n});\nvar IfAsync = If.extend('IfAsync');\nvar InlineIf = Node.extend('InlineIf', {\n fields: ['cond', 'body', 'else_']\n});\nvar For = Node.extend('For', {\n fields: ['arr', 'name', 'body', 'else_']\n});\nvar AsyncEach = For.extend('AsyncEach');\nvar AsyncAll = For.extend('AsyncAll');\nvar Macro = Node.extend('Macro', {\n fields: ['name', 'args', 'body']\n});\nvar Caller = Macro.extend('Caller');\nvar Import = Node.extend('Import', {\n fields: ['template', 'target', 'withContext']\n});\nvar FromImport = /*#__PURE__*/function (_Node3) {\n _inheritsLoose(FromImport, _Node3);\n function FromImport() {\n return _Node3.apply(this, arguments) || this;\n }\n var _proto3 = FromImport.prototype;\n _proto3.init = function init(lineno, colno, template, names, withContext) {\n _Node3.prototype.init.call(this, lineno, colno, template, names || new NodeList(), withContext);\n };\n _createClass(FromImport, [{\n key: \"typename\",\n get: function get() {\n return 'FromImport';\n }\n }, {\n key: \"fields\",\n get: function get() {\n return ['template', 'names', 'withContext'];\n }\n }]);\n return FromImport;\n}(Node);\nvar FunCall = Node.extend('FunCall', {\n fields: ['name', 'args']\n});\nvar Filter = FunCall.extend('Filter');\nvar FilterAsync = Filter.extend('FilterAsync', {\n fields: ['name', 'args', 'symbol']\n});\nvar KeywordArgs = Dict.extend('KeywordArgs');\nvar Block = Node.extend('Block', {\n fields: ['name', 'body']\n});\nvar Super = Node.extend('Super', {\n fields: ['blockName', 'symbol']\n});\nvar TemplateRef = Node.extend('TemplateRef', {\n fields: ['template']\n});\nvar Extends = TemplateRef.extend('Extends');\nvar Include = Node.extend('Include', {\n fields: ['template', 'ignoreMissing']\n});\nvar Set = Node.extend('Set', {\n fields: ['targets', 'value']\n});\nvar Switch = Node.extend('Switch', {\n fields: ['expr', 'cases', 'default']\n});\nvar Case = Node.extend('Case', {\n fields: ['cond', 'body']\n});\nvar Output = NodeList.extend('Output');\nvar Capture = Node.extend('Capture', {\n fields: ['body']\n});\nvar TemplateData = Literal.extend('TemplateData');\nvar UnaryOp = Node.extend('UnaryOp', {\n fields: ['target']\n});\nvar BinOp = Node.extend('BinOp', {\n fields: ['left', 'right']\n});\nvar In = BinOp.extend('In');\nvar Is = BinOp.extend('Is');\nvar Or = BinOp.extend('Or');\nvar And = BinOp.extend('And');\nvar Not = UnaryOp.extend('Not');\nvar Add = BinOp.extend('Add');\nvar Concat = BinOp.extend('Concat');\nvar Sub = BinOp.extend('Sub');\nvar Mul = BinOp.extend('Mul');\nvar Div = BinOp.extend('Div');\nvar FloorDiv = BinOp.extend('FloorDiv');\nvar Mod = BinOp.extend('Mod');\nvar Pow = BinOp.extend('Pow');\nvar Neg = UnaryOp.extend('Neg');\nvar Pos = UnaryOp.extend('Pos');\nvar Compare = Node.extend('Compare', {\n fields: ['expr', 'ops']\n});\nvar CompareOperand = Node.extend('CompareOperand', {\n fields: ['expr', 'type']\n});\nvar CallExtension = Node.extend('CallExtension', {\n init: function init(ext, prop, args, contentArgs) {\n this.parent();\n this.extName = ext.__name || ext;\n this.prop = prop;\n this.args = args || new NodeList();\n this.contentArgs = contentArgs || [];\n this.autoescape = ext.autoescape;\n },\n fields: ['extName', 'prop', 'args', 'contentArgs']\n});\nvar CallExtensionAsync = CallExtension.extend('CallExtensionAsync');\n\n// This is hacky, but this is just a debugging function anyway\nfunction print(str, indent, inline) {\n var lines = str.split('\\n');\n lines.forEach(function (line, i) {\n if (line && (inline && i > 0 || !inline)) {\n process.stdout.write(' '.repeat(indent));\n }\n var nl = i === lines.length - 1 ? '' : '\\n';\n process.stdout.write(\"\" + line + nl);\n });\n}\n\n// Print the AST in a nicely formatted tree format for debuggin\nfunction printNodes(node, indent) {\n indent = indent || 0;\n print(node.typename + ': ', indent);\n if (node instanceof NodeList) {\n print('\\n');\n node.children.forEach(function (n) {\n printNodes(n, indent + 2);\n });\n } else if (node instanceof CallExtension) {\n print(node.extName + \".\" + node.prop + \"\\n\");\n if (node.args) {\n printNodes(node.args, indent + 2);\n }\n if (node.contentArgs) {\n node.contentArgs.forEach(function (n) {\n printNodes(n, indent + 2);\n });\n }\n } else {\n var nodes = [];\n var props = null;\n node.iterFields(function (val, fieldName) {\n if (val instanceof Node) {\n nodes.push([fieldName, val]);\n } else {\n props = props || {};\n props[fieldName] = val;\n }\n });\n if (props) {\n print(JSON.stringify(props, null, 2) + '\\n', null, true);\n } else {\n print('\\n');\n }\n nodes.forEach(function (_ref) {\n var fieldName = _ref[0],\n n = _ref[1];\n print(\"[\" + fieldName + \"] =>\", indent + 2);\n printNodes(n, indent + 4);\n });\n }\n}\nmodule.exports = {\n Node: Node,\n Root: Root,\n NodeList: NodeList,\n Value: Value,\n Literal: Literal,\n Symbol: _Symbol,\n Group: Group,\n Array: ArrayNode,\n Pair: Pair,\n Dict: Dict,\n Output: Output,\n Capture: Capture,\n TemplateData: TemplateData,\n If: If,\n IfAsync: IfAsync,\n InlineIf: InlineIf,\n For: For,\n AsyncEach: AsyncEach,\n AsyncAll: AsyncAll,\n Macro: Macro,\n Caller: Caller,\n Import: Import,\n FromImport: FromImport,\n FunCall: FunCall,\n Filter: Filter,\n FilterAsync: FilterAsync,\n KeywordArgs: KeywordArgs,\n Block: Block,\n Super: Super,\n Extends: Extends,\n Include: Include,\n Set: Set,\n Switch: Switch,\n Case: Case,\n LookupVal: LookupVal,\n BinOp: BinOp,\n In: In,\n Is: Is,\n Or: Or,\n And: And,\n Not: Not,\n Add: Add,\n Concat: Concat,\n Sub: Sub,\n Mul: Mul,\n Div: Div,\n FloorDiv: FloorDiv,\n Mod: Mod,\n Pow: Pow,\n Neg: Neg,\n Pos: Pos,\n Compare: Compare,\n CompareOperand: CompareOperand,\n CallExtension: CallExtension,\n CallExtensionAsync: CallExtensionAsync,\n printNodes: printNodes\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar lexer = require('./lexer');\nvar nodes = require('./nodes');\nvar Obj = require('./object').Obj;\nvar lib = require('./lib');\nvar Parser = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Parser, _Obj);\n function Parser() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto = Parser.prototype;\n _proto.init = function init(tokens) {\n this.tokens = tokens;\n this.peeked = null;\n this.breakOnBlocks = null;\n this.dropLeadingWhitespace = false;\n this.extensions = [];\n };\n _proto.nextToken = function nextToken(withWhitespace) {\n var tok;\n if (this.peeked) {\n if (!withWhitespace && this.peeked.type === lexer.TOKEN_WHITESPACE) {\n this.peeked = null;\n } else {\n tok = this.peeked;\n this.peeked = null;\n return tok;\n }\n }\n tok = this.tokens.nextToken();\n if (!withWhitespace) {\n while (tok && tok.type === lexer.TOKEN_WHITESPACE) {\n tok = this.tokens.nextToken();\n }\n }\n return tok;\n };\n _proto.peekToken = function peekToken() {\n this.peeked = this.peeked || this.nextToken();\n return this.peeked;\n };\n _proto.pushToken = function pushToken(tok) {\n if (this.peeked) {\n throw new Error('pushToken: can only push one token on between reads');\n }\n this.peeked = tok;\n };\n _proto.error = function error(msg, lineno, colno) {\n if (lineno === undefined || colno === undefined) {\n var tok = this.peekToken() || {};\n lineno = tok.lineno;\n colno = tok.colno;\n }\n if (lineno !== undefined) {\n lineno += 1;\n }\n if (colno !== undefined) {\n colno += 1;\n }\n return new lib.TemplateError(msg, lineno, colno);\n };\n _proto.fail = function fail(msg, lineno, colno) {\n throw this.error(msg, lineno, colno);\n };\n _proto.skip = function skip(type) {\n var tok = this.nextToken();\n if (!tok || tok.type !== type) {\n this.pushToken(tok);\n return false;\n }\n return true;\n };\n _proto.expect = function expect(type) {\n var tok = this.nextToken();\n if (tok.type !== type) {\n this.fail('expected ' + type + ', got ' + tok.type, tok.lineno, tok.colno);\n }\n return tok;\n };\n _proto.skipValue = function skipValue(type, val) {\n var tok = this.nextToken();\n if (!tok || tok.type !== type || tok.value !== val) {\n this.pushToken(tok);\n return false;\n }\n return true;\n };\n _proto.skipSymbol = function skipSymbol(val) {\n return this.skipValue(lexer.TOKEN_SYMBOL, val);\n };\n _proto.advanceAfterBlockEnd = function advanceAfterBlockEnd(name) {\n var tok;\n if (!name) {\n tok = this.peekToken();\n if (!tok) {\n this.fail('unexpected end of file');\n }\n if (tok.type !== lexer.TOKEN_SYMBOL) {\n this.fail('advanceAfterBlockEnd: expected symbol token or ' + 'explicit name to be passed');\n }\n name = this.nextToken().value;\n }\n tok = this.nextToken();\n if (tok && tok.type === lexer.TOKEN_BLOCK_END) {\n if (tok.value.charAt(0) === '-') {\n this.dropLeadingWhitespace = true;\n }\n } else {\n this.fail('expected block end in ' + name + ' statement');\n }\n return tok;\n };\n _proto.advanceAfterVariableEnd = function advanceAfterVariableEnd() {\n var tok = this.nextToken();\n if (tok && tok.type === lexer.TOKEN_VARIABLE_END) {\n this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.VARIABLE_END.length - 1) === '-';\n } else {\n this.pushToken(tok);\n this.fail('expected variable end');\n }\n };\n _proto.parseFor = function parseFor() {\n var forTok = this.peekToken();\n var node;\n var endBlock;\n if (this.skipSymbol('for')) {\n node = new nodes.For(forTok.lineno, forTok.colno);\n endBlock = 'endfor';\n } else if (this.skipSymbol('asyncEach')) {\n node = new nodes.AsyncEach(forTok.lineno, forTok.colno);\n endBlock = 'endeach';\n } else if (this.skipSymbol('asyncAll')) {\n node = new nodes.AsyncAll(forTok.lineno, forTok.colno);\n endBlock = 'endall';\n } else {\n this.fail('parseFor: expected for{Async}', forTok.lineno, forTok.colno);\n }\n node.name = this.parsePrimary();\n if (!(node.name instanceof nodes.Symbol)) {\n this.fail('parseFor: variable name expected for loop');\n }\n var type = this.peekToken().type;\n if (type === lexer.TOKEN_COMMA) {\n // key/value iteration\n var key = node.name;\n node.name = new nodes.Array(key.lineno, key.colno);\n node.name.addChild(key);\n while (this.skip(lexer.TOKEN_COMMA)) {\n var prim = this.parsePrimary();\n node.name.addChild(prim);\n }\n }\n if (!this.skipSymbol('in')) {\n this.fail('parseFor: expected \"in\" keyword for loop', forTok.lineno, forTok.colno);\n }\n node.arr = this.parseExpression();\n this.advanceAfterBlockEnd(forTok.value);\n node.body = this.parseUntilBlocks(endBlock, 'else');\n if (this.skipSymbol('else')) {\n this.advanceAfterBlockEnd('else');\n node.else_ = this.parseUntilBlocks(endBlock);\n }\n this.advanceAfterBlockEnd();\n return node;\n };\n _proto.parseMacro = function parseMacro() {\n var macroTok = this.peekToken();\n if (!this.skipSymbol('macro')) {\n this.fail('expected macro');\n }\n var name = this.parsePrimary(true);\n var args = this.parseSignature();\n var node = new nodes.Macro(macroTok.lineno, macroTok.colno, name, args);\n this.advanceAfterBlockEnd(macroTok.value);\n node.body = this.parseUntilBlocks('endmacro');\n this.advanceAfterBlockEnd();\n return node;\n };\n _proto.parseCall = function parseCall() {\n // a call block is parsed as a normal FunCall, but with an added\n // 'caller' kwarg which is a Caller node.\n var callTok = this.peekToken();\n if (!this.skipSymbol('call')) {\n this.fail('expected call');\n }\n var callerArgs = this.parseSignature(true) || new nodes.NodeList();\n var macroCall = this.parsePrimary();\n this.advanceAfterBlockEnd(callTok.value);\n var body = this.parseUntilBlocks('endcall');\n this.advanceAfterBlockEnd();\n var callerName = new nodes.Symbol(callTok.lineno, callTok.colno, 'caller');\n var callerNode = new nodes.Caller(callTok.lineno, callTok.colno, callerName, callerArgs, body);\n\n // add the additional caller kwarg, adding kwargs if necessary\n var args = macroCall.args.children;\n if (!(args[args.length - 1] instanceof nodes.KeywordArgs)) {\n args.push(new nodes.KeywordArgs());\n }\n var kwargs = args[args.length - 1];\n kwargs.addChild(new nodes.Pair(callTok.lineno, callTok.colno, callerName, callerNode));\n return new nodes.Output(callTok.lineno, callTok.colno, [macroCall]);\n };\n _proto.parseWithContext = function parseWithContext() {\n var tok = this.peekToken();\n var withContext = null;\n if (this.skipSymbol('with')) {\n withContext = true;\n } else if (this.skipSymbol('without')) {\n withContext = false;\n }\n if (withContext !== null) {\n if (!this.skipSymbol('context')) {\n this.fail('parseFrom: expected context after with/without', tok.lineno, tok.colno);\n }\n }\n return withContext;\n };\n _proto.parseImport = function parseImport() {\n var importTok = this.peekToken();\n if (!this.skipSymbol('import')) {\n this.fail('parseImport: expected import', importTok.lineno, importTok.colno);\n }\n var template = this.parseExpression();\n if (!this.skipSymbol('as')) {\n this.fail('parseImport: expected \"as\" keyword', importTok.lineno, importTok.colno);\n }\n var target = this.parseExpression();\n var withContext = this.parseWithContext();\n var node = new nodes.Import(importTok.lineno, importTok.colno, template, target, withContext);\n this.advanceAfterBlockEnd(importTok.value);\n return node;\n };\n _proto.parseFrom = function parseFrom() {\n var fromTok = this.peekToken();\n if (!this.skipSymbol('from')) {\n this.fail('parseFrom: expected from');\n }\n var template = this.parseExpression();\n if (!this.skipSymbol('import')) {\n this.fail('parseFrom: expected import', fromTok.lineno, fromTok.colno);\n }\n var names = new nodes.NodeList();\n var withContext;\n while (1) {\n // eslint-disable-line no-constant-condition\n var nextTok = this.peekToken();\n if (nextTok.type === lexer.TOKEN_BLOCK_END) {\n if (!names.children.length) {\n this.fail('parseFrom: Expected at least one import name', fromTok.lineno, fromTok.colno);\n }\n\n // Since we are manually advancing past the block end,\n // need to keep track of whitespace control (normally\n // this is done in `advanceAfterBlockEnd`\n if (nextTok.value.charAt(0) === '-') {\n this.dropLeadingWhitespace = true;\n }\n this.nextToken();\n break;\n }\n if (names.children.length > 0 && !this.skip(lexer.TOKEN_COMMA)) {\n this.fail('parseFrom: expected comma', fromTok.lineno, fromTok.colno);\n }\n var name = this.parsePrimary();\n if (name.value.charAt(0) === '_') {\n this.fail('parseFrom: names starting with an underscore cannot be imported', name.lineno, name.colno);\n }\n if (this.skipSymbol('as')) {\n var alias = this.parsePrimary();\n names.addChild(new nodes.Pair(name.lineno, name.colno, name, alias));\n } else {\n names.addChild(name);\n }\n withContext = this.parseWithContext();\n }\n return new nodes.FromImport(fromTok.lineno, fromTok.colno, template, names, withContext);\n };\n _proto.parseBlock = function parseBlock() {\n var tag = this.peekToken();\n if (!this.skipSymbol('block')) {\n this.fail('parseBlock: expected block', tag.lineno, tag.colno);\n }\n var node = new nodes.Block(tag.lineno, tag.colno);\n node.name = this.parsePrimary();\n if (!(node.name instanceof nodes.Symbol)) {\n this.fail('parseBlock: variable name expected', tag.lineno, tag.colno);\n }\n this.advanceAfterBlockEnd(tag.value);\n node.body = this.parseUntilBlocks('endblock');\n this.skipSymbol('endblock');\n this.skipSymbol(node.name.value);\n var tok = this.peekToken();\n if (!tok) {\n this.fail('parseBlock: expected endblock, got end of file');\n }\n this.advanceAfterBlockEnd(tok.value);\n return node;\n };\n _proto.parseExtends = function parseExtends() {\n var tagName = 'extends';\n var tag = this.peekToken();\n if (!this.skipSymbol(tagName)) {\n this.fail('parseTemplateRef: expected ' + tagName);\n }\n var node = new nodes.Extends(tag.lineno, tag.colno);\n node.template = this.parseExpression();\n this.advanceAfterBlockEnd(tag.value);\n return node;\n };\n _proto.parseInclude = function parseInclude() {\n var tagName = 'include';\n var tag = this.peekToken();\n if (!this.skipSymbol(tagName)) {\n this.fail('parseInclude: expected ' + tagName);\n }\n var node = new nodes.Include(tag.lineno, tag.colno);\n node.template = this.parseExpression();\n if (this.skipSymbol('ignore') && this.skipSymbol('missing')) {\n node.ignoreMissing = true;\n }\n this.advanceAfterBlockEnd(tag.value);\n return node;\n };\n _proto.parseIf = function parseIf() {\n var tag = this.peekToken();\n var node;\n if (this.skipSymbol('if') || this.skipSymbol('elif') || this.skipSymbol('elseif')) {\n node = new nodes.If(tag.lineno, tag.colno);\n } else if (this.skipSymbol('ifAsync')) {\n node = new nodes.IfAsync(tag.lineno, tag.colno);\n } else {\n this.fail('parseIf: expected if, elif, or elseif', tag.lineno, tag.colno);\n }\n node.cond = this.parseExpression();\n this.advanceAfterBlockEnd(tag.value);\n node.body = this.parseUntilBlocks('elif', 'elseif', 'else', 'endif');\n var tok = this.peekToken();\n switch (tok && tok.value) {\n case 'elseif':\n case 'elif':\n node.else_ = this.parseIf();\n break;\n case 'else':\n this.advanceAfterBlockEnd();\n node.else_ = this.parseUntilBlocks('endif');\n this.advanceAfterBlockEnd();\n break;\n case 'endif':\n node.else_ = null;\n this.advanceAfterBlockEnd();\n break;\n default:\n this.fail('parseIf: expected elif, else, or endif, got end of file');\n }\n return node;\n };\n _proto.parseSet = function parseSet() {\n var tag = this.peekToken();\n if (!this.skipSymbol('set')) {\n this.fail('parseSet: expected set', tag.lineno, tag.colno);\n }\n var node = new nodes.Set(tag.lineno, tag.colno, []);\n var target;\n while (target = this.parsePrimary()) {\n node.targets.push(target);\n if (!this.skip(lexer.TOKEN_COMMA)) {\n break;\n }\n }\n if (!this.skipValue(lexer.TOKEN_OPERATOR, '=')) {\n if (!this.skip(lexer.TOKEN_BLOCK_END)) {\n this.fail('parseSet: expected = or block end in set tag', tag.lineno, tag.colno);\n } else {\n node.body = new nodes.Capture(tag.lineno, tag.colno, this.parseUntilBlocks('endset'));\n node.value = null;\n this.advanceAfterBlockEnd();\n }\n } else {\n node.value = this.parseExpression();\n this.advanceAfterBlockEnd(tag.value);\n }\n return node;\n };\n _proto.parseSwitch = function parseSwitch() {\n /*\n * Store the tag names in variables in case someone ever wants to\n * customize this.\n */\n var switchStart = 'switch';\n var switchEnd = 'endswitch';\n var caseStart = 'case';\n var caseDefault = 'default';\n\n // Get the switch tag.\n var tag = this.peekToken();\n\n // fail early if we get some unexpected tag.\n if (!this.skipSymbol(switchStart) && !this.skipSymbol(caseStart) && !this.skipSymbol(caseDefault)) {\n this.fail('parseSwitch: expected \"switch,\" \"case\" or \"default\"', tag.lineno, tag.colno);\n }\n\n // parse the switch expression\n var expr = this.parseExpression();\n\n // advance until a start of a case, a default case or an endswitch.\n this.advanceAfterBlockEnd(switchStart);\n this.parseUntilBlocks(caseStart, caseDefault, switchEnd);\n\n // this is the first case. it could also be an endswitch, we'll check.\n var tok = this.peekToken();\n\n // create new variables for our cases and default case.\n var cases = [];\n var defaultCase;\n\n // while we're dealing with new cases nodes...\n do {\n // skip the start symbol and get the case expression\n this.skipSymbol(caseStart);\n var cond = this.parseExpression();\n this.advanceAfterBlockEnd(switchStart);\n // get the body of the case node and add it to the array of cases.\n var body = this.parseUntilBlocks(caseStart, caseDefault, switchEnd);\n cases.push(new nodes.Case(tok.line, tok.col, cond, body));\n // get our next case\n tok = this.peekToken();\n } while (tok && tok.value === caseStart);\n\n // we either have a default case or a switch end.\n switch (tok.value) {\n case caseDefault:\n this.advanceAfterBlockEnd();\n defaultCase = this.parseUntilBlocks(switchEnd);\n this.advanceAfterBlockEnd();\n break;\n case switchEnd:\n this.advanceAfterBlockEnd();\n break;\n default:\n // otherwise bail because EOF\n this.fail('parseSwitch: expected \"case,\" \"default\" or \"endswitch,\" got EOF.');\n }\n\n // and return the switch node.\n return new nodes.Switch(tag.lineno, tag.colno, expr, cases, defaultCase);\n };\n _proto.parseStatement = function parseStatement() {\n var tok = this.peekToken();\n var node;\n if (tok.type !== lexer.TOKEN_SYMBOL) {\n this.fail('tag name expected', tok.lineno, tok.colno);\n }\n if (this.breakOnBlocks && lib.indexOf(this.breakOnBlocks, tok.value) !== -1) {\n return null;\n }\n switch (tok.value) {\n case 'raw':\n return this.parseRaw();\n case 'verbatim':\n return this.parseRaw('verbatim');\n case 'if':\n case 'ifAsync':\n return this.parseIf();\n case 'for':\n case 'asyncEach':\n case 'asyncAll':\n return this.parseFor();\n case 'block':\n return this.parseBlock();\n case 'extends':\n return this.parseExtends();\n case 'include':\n return this.parseInclude();\n case 'set':\n return this.parseSet();\n case 'macro':\n return this.parseMacro();\n case 'call':\n return this.parseCall();\n case 'import':\n return this.parseImport();\n case 'from':\n return this.parseFrom();\n case 'filter':\n return this.parseFilterStatement();\n case 'switch':\n return this.parseSwitch();\n default:\n if (this.extensions.length) {\n for (var i = 0; i < this.extensions.length; i++) {\n var ext = this.extensions[i];\n if (lib.indexOf(ext.tags || [], tok.value) !== -1) {\n return ext.parse(this, nodes, lexer);\n }\n }\n }\n this.fail('unknown block tag: ' + tok.value, tok.lineno, tok.colno);\n }\n return node;\n };\n _proto.parseRaw = function parseRaw(tagName) {\n tagName = tagName || 'raw';\n var endTagName = 'end' + tagName;\n // Look for upcoming raw blocks (ignore all other kinds of blocks)\n var rawBlockRegex = new RegExp('([\\\\s\\\\S]*?){%\\\\s*(' + tagName + '|' + endTagName + ')\\\\s*(?=%})%}');\n var rawLevel = 1;\n var str = '';\n var matches = null;\n\n // Skip opening raw token\n // Keep this token to track line and column numbers\n var begun = this.advanceAfterBlockEnd();\n\n // Exit when there's nothing to match\n // or when we've found the matching \"endraw\" block\n while ((matches = this.tokens._extractRegex(rawBlockRegex)) && rawLevel > 0) {\n var all = matches[0];\n var pre = matches[1];\n var blockName = matches[2];\n\n // Adjust rawlevel\n if (blockName === tagName) {\n rawLevel += 1;\n } else if (blockName === endTagName) {\n rawLevel -= 1;\n }\n\n // Add to str\n if (rawLevel === 0) {\n // We want to exclude the last \"endraw\"\n str += pre;\n // Move tokenizer to beginning of endraw block\n this.tokens.backN(all.length - pre.length);\n } else {\n str += all;\n }\n }\n return new nodes.Output(begun.lineno, begun.colno, [new nodes.TemplateData(begun.lineno, begun.colno, str)]);\n };\n _proto.parsePostfix = function parsePostfix(node) {\n var lookup;\n var tok = this.peekToken();\n while (tok) {\n if (tok.type === lexer.TOKEN_LEFT_PAREN) {\n // Function call\n node = new nodes.FunCall(tok.lineno, tok.colno, node, this.parseSignature());\n } else if (tok.type === lexer.TOKEN_LEFT_BRACKET) {\n // Reference\n lookup = this.parseAggregate();\n if (lookup.children.length > 1) {\n this.fail('invalid index');\n }\n node = new nodes.LookupVal(tok.lineno, tok.colno, node, lookup.children[0]);\n } else if (tok.type === lexer.TOKEN_OPERATOR && tok.value === '.') {\n // Reference\n this.nextToken();\n var val = this.nextToken();\n if (val.type !== lexer.TOKEN_SYMBOL) {\n this.fail('expected name as lookup value, got ' + val.value, val.lineno, val.colno);\n }\n\n // Make a literal string because it's not a variable\n // reference\n lookup = new nodes.Literal(val.lineno, val.colno, val.value);\n node = new nodes.LookupVal(tok.lineno, tok.colno, node, lookup);\n } else {\n break;\n }\n tok = this.peekToken();\n }\n return node;\n };\n _proto.parseExpression = function parseExpression() {\n var node = this.parseInlineIf();\n return node;\n };\n _proto.parseInlineIf = function parseInlineIf() {\n var node = this.parseOr();\n if (this.skipSymbol('if')) {\n var condNode = this.parseOr();\n var bodyNode = node;\n node = new nodes.InlineIf(node.lineno, node.colno);\n node.body = bodyNode;\n node.cond = condNode;\n if (this.skipSymbol('else')) {\n node.else_ = this.parseOr();\n } else {\n node.else_ = null;\n }\n }\n return node;\n };\n _proto.parseOr = function parseOr() {\n var node = this.parseAnd();\n while (this.skipSymbol('or')) {\n var node2 = this.parseAnd();\n node = new nodes.Or(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseAnd = function parseAnd() {\n var node = this.parseNot();\n while (this.skipSymbol('and')) {\n var node2 = this.parseNot();\n node = new nodes.And(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseNot = function parseNot() {\n var tok = this.peekToken();\n if (this.skipSymbol('not')) {\n return new nodes.Not(tok.lineno, tok.colno, this.parseNot());\n }\n return this.parseIn();\n };\n _proto.parseIn = function parseIn() {\n var node = this.parseIs();\n while (1) {\n // eslint-disable-line no-constant-condition\n // check if the next token is 'not'\n var tok = this.nextToken();\n if (!tok) {\n break;\n }\n var invert = tok.type === lexer.TOKEN_SYMBOL && tok.value === 'not';\n // if it wasn't 'not', put it back\n if (!invert) {\n this.pushToken(tok);\n }\n if (this.skipSymbol('in')) {\n var node2 = this.parseIs();\n node = new nodes.In(node.lineno, node.colno, node, node2);\n if (invert) {\n node = new nodes.Not(node.lineno, node.colno, node);\n }\n } else {\n // if we'd found a 'not' but this wasn't an 'in', put back the 'not'\n if (invert) {\n this.pushToken(tok);\n }\n break;\n }\n }\n return node;\n }\n\n // I put this right after \"in\" in the operator precedence stack. That can\n // obviously be changed to be closer to Jinja.\n ;\n _proto.parseIs = function parseIs() {\n var node = this.parseCompare();\n // look for an is\n if (this.skipSymbol('is')) {\n // look for a not\n var not = this.skipSymbol('not');\n // get the next node\n var node2 = this.parseCompare();\n // create an Is node using the next node and the info from our Is node.\n node = new nodes.Is(node.lineno, node.colno, node, node2);\n // if we have a Not, create a Not node from our Is node.\n if (not) {\n node = new nodes.Not(node.lineno, node.colno, node);\n }\n }\n // return the node.\n return node;\n };\n _proto.parseCompare = function parseCompare() {\n var compareOps = ['==', '===', '!=', '!==', '<', '>', '<=', '>='];\n var expr = this.parseConcat();\n var ops = [];\n while (1) {\n // eslint-disable-line no-constant-condition\n var tok = this.nextToken();\n if (!tok) {\n break;\n } else if (compareOps.indexOf(tok.value) !== -1) {\n ops.push(new nodes.CompareOperand(tok.lineno, tok.colno, this.parseConcat(), tok.value));\n } else {\n this.pushToken(tok);\n break;\n }\n }\n if (ops.length) {\n return new nodes.Compare(ops[0].lineno, ops[0].colno, expr, ops);\n } else {\n return expr;\n }\n }\n\n // finds the '~' for string concatenation\n ;\n _proto.parseConcat = function parseConcat() {\n var node = this.parseAdd();\n while (this.skipValue(lexer.TOKEN_TILDE, '~')) {\n var node2 = this.parseAdd();\n node = new nodes.Concat(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseAdd = function parseAdd() {\n var node = this.parseSub();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '+')) {\n var node2 = this.parseSub();\n node = new nodes.Add(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseSub = function parseSub() {\n var node = this.parseMul();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '-')) {\n var node2 = this.parseMul();\n node = new nodes.Sub(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseMul = function parseMul() {\n var node = this.parseDiv();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '*')) {\n var node2 = this.parseDiv();\n node = new nodes.Mul(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseDiv = function parseDiv() {\n var node = this.parseFloorDiv();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '/')) {\n var node2 = this.parseFloorDiv();\n node = new nodes.Div(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseFloorDiv = function parseFloorDiv() {\n var node = this.parseMod();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '//')) {\n var node2 = this.parseMod();\n node = new nodes.FloorDiv(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseMod = function parseMod() {\n var node = this.parsePow();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '%')) {\n var node2 = this.parsePow();\n node = new nodes.Mod(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parsePow = function parsePow() {\n var node = this.parseUnary();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '**')) {\n var node2 = this.parseUnary();\n node = new nodes.Pow(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseUnary = function parseUnary(noFilters) {\n var tok = this.peekToken();\n var node;\n if (this.skipValue(lexer.TOKEN_OPERATOR, '-')) {\n node = new nodes.Neg(tok.lineno, tok.colno, this.parseUnary(true));\n } else if (this.skipValue(lexer.TOKEN_OPERATOR, '+')) {\n node = new nodes.Pos(tok.lineno, tok.colno, this.parseUnary(true));\n } else {\n node = this.parsePrimary();\n }\n if (!noFilters) {\n node = this.parseFilter(node);\n }\n return node;\n };\n _proto.parsePrimary = function parsePrimary(noPostfix) {\n var tok = this.nextToken();\n var val;\n var node = null;\n if (!tok) {\n this.fail('expected expression, got end of file');\n } else if (tok.type === lexer.TOKEN_STRING) {\n val = tok.value;\n } else if (tok.type === lexer.TOKEN_INT) {\n val = parseInt(tok.value, 10);\n } else if (tok.type === lexer.TOKEN_FLOAT) {\n val = parseFloat(tok.value);\n } else if (tok.type === lexer.TOKEN_BOOLEAN) {\n if (tok.value === 'true') {\n val = true;\n } else if (tok.value === 'false') {\n val = false;\n } else {\n this.fail('invalid boolean: ' + tok.value, tok.lineno, tok.colno);\n }\n } else if (tok.type === lexer.TOKEN_NONE) {\n val = null;\n } else if (tok.type === lexer.TOKEN_REGEX) {\n val = new RegExp(tok.value.body, tok.value.flags);\n }\n if (val !== undefined) {\n node = new nodes.Literal(tok.lineno, tok.colno, val);\n } else if (tok.type === lexer.TOKEN_SYMBOL) {\n node = new nodes.Symbol(tok.lineno, tok.colno, tok.value);\n } else {\n // See if it's an aggregate type, we need to push the\n // current delimiter token back on\n this.pushToken(tok);\n node = this.parseAggregate();\n }\n if (!noPostfix) {\n node = this.parsePostfix(node);\n }\n if (node) {\n return node;\n } else {\n throw this.error(\"unexpected token: \" + tok.value, tok.lineno, tok.colno);\n }\n };\n _proto.parseFilterName = function parseFilterName() {\n var tok = this.expect(lexer.TOKEN_SYMBOL);\n var name = tok.value;\n while (this.skipValue(lexer.TOKEN_OPERATOR, '.')) {\n name += '.' + this.expect(lexer.TOKEN_SYMBOL).value;\n }\n return new nodes.Symbol(tok.lineno, tok.colno, name);\n };\n _proto.parseFilterArgs = function parseFilterArgs(node) {\n if (this.peekToken().type === lexer.TOKEN_LEFT_PAREN) {\n // Get a FunCall node and add the parameters to the\n // filter\n var call = this.parsePostfix(node);\n return call.args.children;\n }\n return [];\n };\n _proto.parseFilter = function parseFilter(node) {\n while (this.skip(lexer.TOKEN_PIPE)) {\n var name = this.parseFilterName();\n node = new nodes.Filter(name.lineno, name.colno, name, new nodes.NodeList(name.lineno, name.colno, [node].concat(this.parseFilterArgs(node))));\n }\n return node;\n };\n _proto.parseFilterStatement = function parseFilterStatement() {\n var filterTok = this.peekToken();\n if (!this.skipSymbol('filter')) {\n this.fail('parseFilterStatement: expected filter');\n }\n var name = this.parseFilterName();\n var args = this.parseFilterArgs(name);\n this.advanceAfterBlockEnd(filterTok.value);\n var body = new nodes.Capture(name.lineno, name.colno, this.parseUntilBlocks('endfilter'));\n this.advanceAfterBlockEnd();\n var node = new nodes.Filter(name.lineno, name.colno, name, new nodes.NodeList(name.lineno, name.colno, [body].concat(args)));\n return new nodes.Output(name.lineno, name.colno, [node]);\n };\n _proto.parseAggregate = function parseAggregate() {\n var tok = this.nextToken();\n var node;\n switch (tok.type) {\n case lexer.TOKEN_LEFT_PAREN:\n node = new nodes.Group(tok.lineno, tok.colno);\n break;\n case lexer.TOKEN_LEFT_BRACKET:\n node = new nodes.Array(tok.lineno, tok.colno);\n break;\n case lexer.TOKEN_LEFT_CURLY:\n node = new nodes.Dict(tok.lineno, tok.colno);\n break;\n default:\n return null;\n }\n while (1) {\n // eslint-disable-line no-constant-condition\n var type = this.peekToken().type;\n if (type === lexer.TOKEN_RIGHT_PAREN || type === lexer.TOKEN_RIGHT_BRACKET || type === lexer.TOKEN_RIGHT_CURLY) {\n this.nextToken();\n break;\n }\n if (node.children.length > 0) {\n if (!this.skip(lexer.TOKEN_COMMA)) {\n this.fail('parseAggregate: expected comma after expression', tok.lineno, tok.colno);\n }\n }\n if (node instanceof nodes.Dict) {\n // TODO: check for errors\n var key = this.parsePrimary();\n\n // We expect a key/value pair for dicts, separated by a\n // colon\n if (!this.skip(lexer.TOKEN_COLON)) {\n this.fail('parseAggregate: expected colon after dict key', tok.lineno, tok.colno);\n }\n\n // TODO: check for errors\n var value = this.parseExpression();\n node.addChild(new nodes.Pair(key.lineno, key.colno, key, value));\n } else {\n // TODO: check for errors\n var expr = this.parseExpression();\n node.addChild(expr);\n }\n }\n return node;\n };\n _proto.parseSignature = function parseSignature(tolerant, noParens) {\n var tok = this.peekToken();\n if (!noParens && tok.type !== lexer.TOKEN_LEFT_PAREN) {\n if (tolerant) {\n return null;\n } else {\n this.fail('expected arguments', tok.lineno, tok.colno);\n }\n }\n if (tok.type === lexer.TOKEN_LEFT_PAREN) {\n tok = this.nextToken();\n }\n var args = new nodes.NodeList(tok.lineno, tok.colno);\n var kwargs = new nodes.KeywordArgs(tok.lineno, tok.colno);\n var checkComma = false;\n while (1) {\n // eslint-disable-line no-constant-condition\n tok = this.peekToken();\n if (!noParens && tok.type === lexer.TOKEN_RIGHT_PAREN) {\n this.nextToken();\n break;\n } else if (noParens && tok.type === lexer.TOKEN_BLOCK_END) {\n break;\n }\n if (checkComma && !this.skip(lexer.TOKEN_COMMA)) {\n this.fail('parseSignature: expected comma after expression', tok.lineno, tok.colno);\n } else {\n var arg = this.parseExpression();\n if (this.skipValue(lexer.TOKEN_OPERATOR, '=')) {\n kwargs.addChild(new nodes.Pair(arg.lineno, arg.colno, arg, this.parseExpression()));\n } else {\n args.addChild(arg);\n }\n }\n checkComma = true;\n }\n if (kwargs.children.length) {\n args.addChild(kwargs);\n }\n return args;\n };\n _proto.parseUntilBlocks = function parseUntilBlocks() {\n var prev = this.breakOnBlocks;\n for (var _len = arguments.length, blockNames = new Array(_len), _key = 0; _key < _len; _key++) {\n blockNames[_key] = arguments[_key];\n }\n this.breakOnBlocks = blockNames;\n var ret = this.parse();\n this.breakOnBlocks = prev;\n return ret;\n };\n _proto.parseNodes = function parseNodes() {\n var tok;\n var buf = [];\n while (tok = this.nextToken()) {\n if (tok.type === lexer.TOKEN_DATA) {\n var data = tok.value;\n var nextToken = this.peekToken();\n var nextVal = nextToken && nextToken.value;\n\n // If the last token has \"-\" we need to trim the\n // leading whitespace of the data. This is marked with\n // the `dropLeadingWhitespace` variable.\n if (this.dropLeadingWhitespace) {\n // TODO: this could be optimized (don't use regex)\n data = data.replace(/^\\s*/, '');\n this.dropLeadingWhitespace = false;\n }\n\n // Same for the succeeding block start token\n if (nextToken && (nextToken.type === lexer.TOKEN_BLOCK_START && nextVal.charAt(nextVal.length - 1) === '-' || nextToken.type === lexer.TOKEN_VARIABLE_START && nextVal.charAt(this.tokens.tags.VARIABLE_START.length) === '-' || nextToken.type === lexer.TOKEN_COMMENT && nextVal.charAt(this.tokens.tags.COMMENT_START.length) === '-')) {\n // TODO: this could be optimized (don't use regex)\n data = data.replace(/\\s*$/, '');\n }\n buf.push(new nodes.Output(tok.lineno, tok.colno, [new nodes.TemplateData(tok.lineno, tok.colno, data)]));\n } else if (tok.type === lexer.TOKEN_BLOCK_START) {\n this.dropLeadingWhitespace = false;\n var n = this.parseStatement();\n if (!n) {\n break;\n }\n buf.push(n);\n } else if (tok.type === lexer.TOKEN_VARIABLE_START) {\n var e = this.parseExpression();\n this.dropLeadingWhitespace = false;\n this.advanceAfterVariableEnd();\n buf.push(new nodes.Output(tok.lineno, tok.colno, [e]));\n } else if (tok.type === lexer.TOKEN_COMMENT) {\n this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.COMMENT_END.length - 1) === '-';\n } else {\n // Ignore comments, otherwise this should be an error\n this.fail('Unexpected token at top-level: ' + tok.type, tok.lineno, tok.colno);\n }\n }\n return buf;\n };\n _proto.parse = function parse() {\n return new nodes.NodeList(0, 0, this.parseNodes());\n };\n _proto.parseAsRoot = function parseAsRoot() {\n return new nodes.Root(0, 0, this.parseNodes());\n };\n return Parser;\n}(Obj); // var util = require('util');\n// var l = lexer.lex('{%- if x -%}\\n hello {% endif %}');\n// var t;\n// while((t = l.nextToken())) {\n// console.log(util.inspect(t));\n// }\n// var p = new Parser(lexer.lex('hello {% filter title %}' +\n// 'Hello madam how are you' +\n// '{% endfilter %}'));\n// var n = p.parseAsRoot();\n// nodes.printNodes(n);\nmodule.exports = {\n parse: function parse(src, extensions, opts) {\n var p = new Parser(lexer.lex(src, opts));\n if (extensions !== undefined) {\n p.extensions = extensions;\n }\n return p.parseAsRoot();\n },\n Parser: Parser\n};","'use strict';\n\nvar nodes = require('./nodes');\nvar lib = require('./lib');\nvar sym = 0;\nfunction gensym() {\n return 'hole_' + sym++;\n}\n\n// copy-on-write version of map\nfunction mapCOW(arr, func) {\n var res = null;\n for (var i = 0; i < arr.length; i++) {\n var item = func(arr[i]);\n if (item !== arr[i]) {\n if (!res) {\n res = arr.slice();\n }\n res[i] = item;\n }\n }\n return res || arr;\n}\nfunction walk(ast, func, depthFirst) {\n if (!(ast instanceof nodes.Node)) {\n return ast;\n }\n if (!depthFirst) {\n var astT = func(ast);\n if (astT && astT !== ast) {\n return astT;\n }\n }\n if (ast instanceof nodes.NodeList) {\n var children = mapCOW(ast.children, function (node) {\n return walk(node, func, depthFirst);\n });\n if (children !== ast.children) {\n ast = new nodes[ast.typename](ast.lineno, ast.colno, children);\n }\n } else if (ast instanceof nodes.CallExtension) {\n var args = walk(ast.args, func, depthFirst);\n var contentArgs = mapCOW(ast.contentArgs, function (node) {\n return walk(node, func, depthFirst);\n });\n if (args !== ast.args || contentArgs !== ast.contentArgs) {\n ast = new nodes[ast.typename](ast.extName, ast.prop, args, contentArgs);\n }\n } else {\n var props = ast.fields.map(function (field) {\n return ast[field];\n });\n var propsT = mapCOW(props, function (prop) {\n return walk(prop, func, depthFirst);\n });\n if (propsT !== props) {\n ast = new nodes[ast.typename](ast.lineno, ast.colno);\n propsT.forEach(function (prop, i) {\n ast[ast.fields[i]] = prop;\n });\n }\n }\n return depthFirst ? func(ast) || ast : ast;\n}\nfunction depthWalk(ast, func) {\n return walk(ast, func, true);\n}\nfunction _liftFilters(node, asyncFilters, prop) {\n var children = [];\n var walked = depthWalk(prop ? node[prop] : node, function (descNode) {\n var symbol;\n if (descNode instanceof nodes.Block) {\n return descNode;\n } else if (descNode instanceof nodes.Filter && lib.indexOf(asyncFilters, descNode.name.value) !== -1 || descNode instanceof nodes.CallExtensionAsync) {\n symbol = new nodes.Symbol(descNode.lineno, descNode.colno, gensym());\n children.push(new nodes.FilterAsync(descNode.lineno, descNode.colno, descNode.name, descNode.args, symbol));\n }\n return symbol;\n });\n if (prop) {\n node[prop] = walked;\n } else {\n node = walked;\n }\n if (children.length) {\n children.push(node);\n return new nodes.NodeList(node.lineno, node.colno, children);\n } else {\n return node;\n }\n}\nfunction liftFilters(ast, asyncFilters) {\n return depthWalk(ast, function (node) {\n if (node instanceof nodes.Output) {\n return _liftFilters(node, asyncFilters);\n } else if (node instanceof nodes.Set) {\n return _liftFilters(node, asyncFilters, 'value');\n } else if (node instanceof nodes.For) {\n return _liftFilters(node, asyncFilters, 'arr');\n } else if (node instanceof nodes.If) {\n return _liftFilters(node, asyncFilters, 'cond');\n } else if (node instanceof nodes.CallExtension) {\n return _liftFilters(node, asyncFilters, 'args');\n } else {\n return undefined;\n }\n });\n}\nfunction liftSuper(ast) {\n return walk(ast, function (blockNode) {\n if (!(blockNode instanceof nodes.Block)) {\n return;\n }\n var hasSuper = false;\n var symbol = gensym();\n blockNode.body = walk(blockNode.body, function (node) {\n // eslint-disable-line consistent-return\n if (node instanceof nodes.FunCall && node.name.value === 'super') {\n hasSuper = true;\n return new nodes.Symbol(node.lineno, node.colno, symbol);\n }\n });\n if (hasSuper) {\n blockNode.body.children.unshift(new nodes.Super(0, 0, blockNode.name, new nodes.Symbol(0, 0, symbol)));\n }\n });\n}\nfunction convertStatements(ast) {\n return depthWalk(ast, function (node) {\n if (!(node instanceof nodes.If) && !(node instanceof nodes.For)) {\n return undefined;\n }\n var async = false;\n walk(node, function (child) {\n if (child instanceof nodes.FilterAsync || child instanceof nodes.IfAsync || child instanceof nodes.AsyncEach || child instanceof nodes.AsyncAll || child instanceof nodes.CallExtensionAsync) {\n async = true;\n // Stop iterating by returning the node\n return child;\n }\n return undefined;\n });\n if (async) {\n if (node instanceof nodes.If) {\n return new nodes.IfAsync(node.lineno, node.colno, node.cond, node.body, node.else_);\n } else if (node instanceof nodes.For && !(node instanceof nodes.AsyncAll)) {\n return new nodes.AsyncEach(node.lineno, node.colno, node.arr, node.name, node.body, node.else_);\n }\n }\n return undefined;\n });\n}\nfunction cps(ast, asyncFilters) {\n return convertStatements(liftSuper(liftFilters(ast, asyncFilters)));\n}\nfunction transform(ast, asyncFilters) {\n return cps(ast, asyncFilters || []);\n}\n\n// var parser = require('./parser');\n// var src = 'hello {% foo %}{% endfoo %} end';\n// var ast = transform(parser.parse(src, [new FooExtension()]), ['bar']);\n// nodes.printNodes(ast);\n\nmodule.exports = {\n transform: transform\n};","'use strict';\n\nvar lib = require('./lib');\nvar arrayFrom = Array.from;\nvar supportsIterators = typeof Symbol === 'function' && Symbol.iterator && typeof arrayFrom === 'function';\n\n// Frames keep track of scoping both at compile-time and run-time so\n// we know how to access variables. Block tags can introduce special\n// variables, for example.\nvar Frame = /*#__PURE__*/function () {\n function Frame(parent, isolateWrites) {\n this.variables = Object.create(null);\n this.parent = parent;\n this.topLevel = false;\n // if this is true, writes (set) should never propagate upwards past\n // this frame to its parent (though reads may).\n this.isolateWrites = isolateWrites;\n }\n var _proto = Frame.prototype;\n _proto.set = function set(name, val, resolveUp) {\n // Allow variables with dots by automatically creating the\n // nested structure\n var parts = name.split('.');\n var obj = this.variables;\n var frame = this;\n if (resolveUp) {\n if (frame = this.resolve(parts[0], true)) {\n frame.set(name, val);\n return;\n }\n }\n for (var i = 0; i < parts.length - 1; i++) {\n var id = parts[i];\n if (!obj[id]) {\n obj[id] = {};\n }\n obj = obj[id];\n }\n obj[parts[parts.length - 1]] = val;\n };\n _proto.get = function get(name) {\n var val = this.variables[name];\n if (val !== undefined) {\n return val;\n }\n return null;\n };\n _proto.lookup = function lookup(name) {\n var p = this.parent;\n var val = this.variables[name];\n if (val !== undefined) {\n return val;\n }\n return p && p.lookup(name);\n };\n _proto.resolve = function resolve(name, forWrite) {\n var p = forWrite && this.isolateWrites ? undefined : this.parent;\n var val = this.variables[name];\n if (val !== undefined) {\n return this;\n }\n return p && p.resolve(name);\n };\n _proto.push = function push(isolateWrites) {\n return new Frame(this, isolateWrites);\n };\n _proto.pop = function pop() {\n return this.parent;\n };\n return Frame;\n}();\nfunction makeMacro(argNames, kwargNames, func) {\n return function macro() {\n for (var _len = arguments.length, macroArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n macroArgs[_key] = arguments[_key];\n }\n var argCount = numArgs(macroArgs);\n var args;\n var kwargs = getKeywordArgs(macroArgs);\n if (argCount > argNames.length) {\n args = macroArgs.slice(0, argNames.length);\n\n // Positional arguments that should be passed in as\n // keyword arguments (essentially default values)\n macroArgs.slice(args.length, argCount).forEach(function (val, i) {\n if (i < kwargNames.length) {\n kwargs[kwargNames[i]] = val;\n }\n });\n args.push(kwargs);\n } else if (argCount < argNames.length) {\n args = macroArgs.slice(0, argCount);\n for (var i = argCount; i < argNames.length; i++) {\n var arg = argNames[i];\n\n // Keyword arguments that should be passed as\n // positional arguments, i.e. the caller explicitly\n // used the name of a positional arg\n args.push(kwargs[arg]);\n delete kwargs[arg];\n }\n args.push(kwargs);\n } else {\n args = macroArgs;\n }\n return func.apply(this, args);\n };\n}\nfunction makeKeywordArgs(obj) {\n obj.__keywords = true;\n return obj;\n}\nfunction isKeywordArgs(obj) {\n return obj && Object.prototype.hasOwnProperty.call(obj, '__keywords');\n}\nfunction getKeywordArgs(args) {\n var len = args.length;\n if (len) {\n var lastArg = args[len - 1];\n if (isKeywordArgs(lastArg)) {\n return lastArg;\n }\n }\n return {};\n}\nfunction numArgs(args) {\n var len = args.length;\n if (len === 0) {\n return 0;\n }\n var lastArg = args[len - 1];\n if (isKeywordArgs(lastArg)) {\n return len - 1;\n } else {\n return len;\n }\n}\n\n// A SafeString object indicates that the string should not be\n// autoescaped. This happens magically because autoescaping only\n// occurs on primitive string objects.\nfunction SafeString(val) {\n if (typeof val !== 'string') {\n return val;\n }\n this.val = val;\n this.length = val.length;\n}\nSafeString.prototype = Object.create(String.prototype, {\n length: {\n writable: true,\n configurable: true,\n value: 0\n }\n});\nSafeString.prototype.valueOf = function valueOf() {\n return this.val;\n};\nSafeString.prototype.toString = function toString() {\n return this.val;\n};\nfunction copySafeness(dest, target) {\n if (dest instanceof SafeString) {\n return new SafeString(target);\n }\n return target.toString();\n}\nfunction markSafe(val) {\n var type = typeof val;\n if (type === 'string') {\n return new SafeString(val);\n } else if (type !== 'function') {\n return val;\n } else {\n return function wrapSafe(args) {\n var ret = val.apply(this, arguments);\n if (typeof ret === 'string') {\n return new SafeString(ret);\n }\n return ret;\n };\n }\n}\nfunction suppressValue(val, autoescape) {\n val = val !== undefined && val !== null ? val : '';\n if (autoescape && !(val instanceof SafeString)) {\n val = lib.escape(val.toString());\n }\n return val;\n}\nfunction ensureDefined(val, lineno, colno) {\n if (val === null || val === undefined) {\n throw new lib.TemplateError('attempted to output null or undefined value', lineno + 1, colno + 1);\n }\n return val;\n}\nfunction memberLookup(obj, val) {\n if (obj === undefined || obj === null) {\n return undefined;\n }\n if (typeof obj[val] === 'function') {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return obj[val].apply(obj, args);\n };\n }\n return obj[val];\n}\nfunction callWrap(obj, name, context, args) {\n if (!obj) {\n throw new Error('Unable to call `' + name + '`, which is undefined or falsey');\n } else if (typeof obj !== 'function') {\n throw new Error('Unable to call `' + name + '`, which is not a function');\n }\n return obj.apply(context, args);\n}\nfunction contextOrFrameLookup(context, frame, name) {\n var val = frame.lookup(name);\n return val !== undefined ? val : context.lookup(name);\n}\nfunction handleError(error, lineno, colno) {\n if (error.lineno) {\n return error;\n } else {\n return new lib.TemplateError(error, lineno, colno);\n }\n}\nfunction asyncEach(arr, dimen, iter, cb) {\n if (lib.isArray(arr)) {\n var len = arr.length;\n lib.asyncIter(arr, function iterCallback(item, i, next) {\n switch (dimen) {\n case 1:\n iter(item, i, len, next);\n break;\n case 2:\n iter(item[0], item[1], i, len, next);\n break;\n case 3:\n iter(item[0], item[1], item[2], i, len, next);\n break;\n default:\n item.push(i, len, next);\n iter.apply(this, item);\n }\n }, cb);\n } else {\n lib.asyncFor(arr, function iterCallback(key, val, i, len, next) {\n iter(key, val, i, len, next);\n }, cb);\n }\n}\nfunction asyncAll(arr, dimen, func, cb) {\n var finished = 0;\n var len;\n var outputArr;\n function done(i, output) {\n finished++;\n outputArr[i] = output;\n if (finished === len) {\n cb(null, outputArr.join(''));\n }\n }\n if (lib.isArray(arr)) {\n len = arr.length;\n outputArr = new Array(len);\n if (len === 0) {\n cb(null, '');\n } else {\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n switch (dimen) {\n case 1:\n func(item, i, len, done);\n break;\n case 2:\n func(item[0], item[1], i, len, done);\n break;\n case 3:\n func(item[0], item[1], item[2], i, len, done);\n break;\n default:\n item.push(i, len, done);\n func.apply(this, item);\n }\n }\n }\n } else {\n var keys = lib.keys(arr || {});\n len = keys.length;\n outputArr = new Array(len);\n if (len === 0) {\n cb(null, '');\n } else {\n for (var _i = 0; _i < keys.length; _i++) {\n var k = keys[_i];\n func(k, arr[k], _i, len, done);\n }\n }\n }\n}\nfunction fromIterator(arr) {\n if (typeof arr !== 'object' || arr === null || lib.isArray(arr)) {\n return arr;\n } else if (supportsIterators && Symbol.iterator in arr) {\n return arrayFrom(arr);\n } else {\n return arr;\n }\n}\nmodule.exports = {\n Frame: Frame,\n makeMacro: makeMacro,\n makeKeywordArgs: makeKeywordArgs,\n numArgs: numArgs,\n suppressValue: suppressValue,\n ensureDefined: ensureDefined,\n memberLookup: memberLookup,\n contextOrFrameLookup: contextOrFrameLookup,\n callWrap: callWrap,\n handleError: handleError,\n isArray: lib.isArray,\n keys: lib.keys,\n SafeString: SafeString,\n copySafeness: copySafeness,\n markSafe: markSafe,\n asyncEach: asyncEach,\n asyncAll: asyncAll,\n inOperator: lib.inOperator,\n fromIterator: fromIterator\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar parser = require('./parser');\nvar transformer = require('./transformer');\nvar nodes = require('./nodes');\nvar _require = require('./lib'),\n TemplateError = _require.TemplateError;\nvar _require2 = require('./runtime'),\n Frame = _require2.Frame;\nvar _require3 = require('./object'),\n Obj = _require3.Obj;\n\n// These are all the same for now, but shouldn't be passed straight\n// through\nvar compareOps = {\n '==': '==',\n '===': '===',\n '!=': '!=',\n '!==': '!==',\n '<': '<',\n '>': '>',\n '<=': '<=',\n '>=': '>='\n};\nvar Compiler = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Compiler, _Obj);\n function Compiler() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto = Compiler.prototype;\n _proto.init = function init(templateName, throwOnUndefined) {\n this.templateName = templateName;\n this.codebuf = [];\n this.lastId = 0;\n this.buffer = null;\n this.bufferStack = [];\n this._scopeClosers = '';\n this.inBlock = false;\n this.throwOnUndefined = throwOnUndefined;\n };\n _proto.fail = function fail(msg, lineno, colno) {\n if (lineno !== undefined) {\n lineno += 1;\n }\n if (colno !== undefined) {\n colno += 1;\n }\n throw new TemplateError(msg, lineno, colno);\n };\n _proto._pushBuffer = function _pushBuffer() {\n var id = this._tmpid();\n this.bufferStack.push(this.buffer);\n this.buffer = id;\n this._emit(\"var \" + this.buffer + \" = \\\"\\\";\");\n return id;\n };\n _proto._popBuffer = function _popBuffer() {\n this.buffer = this.bufferStack.pop();\n };\n _proto._emit = function _emit(code) {\n this.codebuf.push(code);\n };\n _proto._emitLine = function _emitLine(code) {\n this._emit(code + '\\n');\n };\n _proto._emitLines = function _emitLines() {\n var _this = this;\n for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) {\n lines[_key] = arguments[_key];\n }\n lines.forEach(function (line) {\n return _this._emitLine(line);\n });\n };\n _proto._emitFuncBegin = function _emitFuncBegin(node, name) {\n this.buffer = 'output';\n this._scopeClosers = '';\n this._emitLine(\"function \" + name + \"(env, context, frame, runtime, cb) {\");\n this._emitLine(\"var lineno = \" + node.lineno + \";\");\n this._emitLine(\"var colno = \" + node.colno + \";\");\n this._emitLine(\"var \" + this.buffer + \" = \\\"\\\";\");\n this._emitLine('try {');\n };\n _proto._emitFuncEnd = function _emitFuncEnd(noReturn) {\n if (!noReturn) {\n this._emitLine('cb(null, ' + this.buffer + ');');\n }\n this._closeScopeLevels();\n this._emitLine('} catch (e) {');\n this._emitLine(' cb(runtime.handleError(e, lineno, colno));');\n this._emitLine('}');\n this._emitLine('}');\n this.buffer = null;\n };\n _proto._addScopeLevel = function _addScopeLevel() {\n this._scopeClosers += '})';\n };\n _proto._closeScopeLevels = function _closeScopeLevels() {\n this._emitLine(this._scopeClosers + ';');\n this._scopeClosers = '';\n };\n _proto._withScopedSyntax = function _withScopedSyntax(func) {\n var _scopeClosers = this._scopeClosers;\n this._scopeClosers = '';\n func.call(this);\n this._closeScopeLevels();\n this._scopeClosers = _scopeClosers;\n };\n _proto._makeCallback = function _makeCallback(res) {\n var err = this._tmpid();\n return 'function(' + err + (res ? ',' + res : '') + ') {\\n' + 'if(' + err + ') { cb(' + err + '); return; }';\n };\n _proto._tmpid = function _tmpid() {\n this.lastId++;\n return 't_' + this.lastId;\n };\n _proto._templateName = function _templateName() {\n return this.templateName == null ? 'undefined' : JSON.stringify(this.templateName);\n };\n _proto._compileChildren = function _compileChildren(node, frame) {\n var _this2 = this;\n node.children.forEach(function (child) {\n _this2.compile(child, frame);\n });\n };\n _proto._compileAggregate = function _compileAggregate(node, frame, startChar, endChar) {\n var _this3 = this;\n if (startChar) {\n this._emit(startChar);\n }\n node.children.forEach(function (child, i) {\n if (i > 0) {\n _this3._emit(',');\n }\n _this3.compile(child, frame);\n });\n if (endChar) {\n this._emit(endChar);\n }\n };\n _proto._compileExpression = function _compileExpression(node, frame) {\n // TODO: I'm not really sure if this type check is worth it or\n // not.\n this.assertType(node, nodes.Literal, nodes.Symbol, nodes.Group, nodes.Array, nodes.Dict, nodes.FunCall, nodes.Caller, nodes.Filter, nodes.LookupVal, nodes.Compare, nodes.InlineIf, nodes.In, nodes.Is, nodes.And, nodes.Or, nodes.Not, nodes.Add, nodes.Concat, nodes.Sub, nodes.Mul, nodes.Div, nodes.FloorDiv, nodes.Mod, nodes.Pow, nodes.Neg, nodes.Pos, nodes.Compare, nodes.NodeList);\n this.compile(node, frame);\n };\n _proto.assertType = function assertType(node) {\n for (var _len2 = arguments.length, types = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n types[_key2 - 1] = arguments[_key2];\n }\n if (!types.some(function (t) {\n return node instanceof t;\n })) {\n this.fail(\"assertType: invalid type: \" + node.typename, node.lineno, node.colno);\n }\n };\n _proto.compileCallExtension = function compileCallExtension(node, frame, async) {\n var _this4 = this;\n var args = node.args;\n var contentArgs = node.contentArgs;\n var autoescape = typeof node.autoescape === 'boolean' ? node.autoescape : true;\n if (!async) {\n this._emit(this.buffer + \" += runtime.suppressValue(\");\n }\n this._emit(\"env.getExtension(\\\"\" + node.extName + \"\\\")[\\\"\" + node.prop + \"\\\"](\");\n this._emit('context');\n if (args || contentArgs) {\n this._emit(',');\n }\n if (args) {\n if (!(args instanceof nodes.NodeList)) {\n this.fail('compileCallExtension: arguments must be a NodeList, ' + 'use `parser.parseSignature`');\n }\n args.children.forEach(function (arg, i) {\n // Tag arguments are passed normally to the call. Note\n // that keyword arguments are turned into a single js\n // object as the last argument, if they exist.\n _this4._compileExpression(arg, frame);\n if (i !== args.children.length - 1 || contentArgs.length) {\n _this4._emit(',');\n }\n });\n }\n if (contentArgs.length) {\n contentArgs.forEach(function (arg, i) {\n if (i > 0) {\n _this4._emit(',');\n }\n if (arg) {\n _this4._emitLine('function(cb) {');\n _this4._emitLine('if(!cb) { cb = function(err) { if(err) { throw err; }}}');\n var id = _this4._pushBuffer();\n _this4._withScopedSyntax(function () {\n _this4.compile(arg, frame);\n _this4._emitLine(\"cb(null, \" + id + \");\");\n });\n _this4._popBuffer();\n _this4._emitLine(\"return \" + id + \";\");\n _this4._emitLine('}');\n } else {\n _this4._emit('null');\n }\n });\n }\n if (async) {\n var res = this._tmpid();\n this._emitLine(', ' + this._makeCallback(res));\n this._emitLine(this.buffer + \" += runtime.suppressValue(\" + res + \", \" + autoescape + \" && env.opts.autoescape);\");\n this._addScopeLevel();\n } else {\n this._emit(')');\n this._emit(\", \" + autoescape + \" && env.opts.autoescape);\\n\");\n }\n };\n _proto.compileCallExtensionAsync = function compileCallExtensionAsync(node, frame) {\n this.compileCallExtension(node, frame, true);\n };\n _proto.compileNodeList = function compileNodeList(node, frame) {\n this._compileChildren(node, frame);\n };\n _proto.compileLiteral = function compileLiteral(node) {\n if (typeof node.value === 'string') {\n var val = node.value.replace(/\\\\/g, '\\\\\\\\');\n val = val.replace(/\"/g, '\\\\\"');\n val = val.replace(/\\n/g, '\\\\n');\n val = val.replace(/\\r/g, '\\\\r');\n val = val.replace(/\\t/g, '\\\\t');\n val = val.replace(/\\u2028/g, \"\\\\u2028\");\n this._emit(\"\\\"\" + val + \"\\\"\");\n } else if (node.value === null) {\n this._emit('null');\n } else {\n this._emit(node.value.toString());\n }\n };\n _proto.compileSymbol = function compileSymbol(node, frame) {\n var name = node.value;\n var v = frame.lookup(name);\n if (v) {\n this._emit(v);\n } else {\n this._emit('runtime.contextOrFrameLookup(' + 'context, frame, \"' + name + '\")');\n }\n };\n _proto.compileGroup = function compileGroup(node, frame) {\n this._compileAggregate(node, frame, '(', ')');\n };\n _proto.compileArray = function compileArray(node, frame) {\n this._compileAggregate(node, frame, '[', ']');\n };\n _proto.compileDict = function compileDict(node, frame) {\n this._compileAggregate(node, frame, '{', '}');\n };\n _proto.compilePair = function compilePair(node, frame) {\n var key = node.key;\n var val = node.value;\n if (key instanceof nodes.Symbol) {\n key = new nodes.Literal(key.lineno, key.colno, key.value);\n } else if (!(key instanceof nodes.Literal && typeof key.value === 'string')) {\n this.fail('compilePair: Dict keys must be strings or names', key.lineno, key.colno);\n }\n this.compile(key, frame);\n this._emit(': ');\n this._compileExpression(val, frame);\n };\n _proto.compileInlineIf = function compileInlineIf(node, frame) {\n this._emit('(');\n this.compile(node.cond, frame);\n this._emit('?');\n this.compile(node.body, frame);\n this._emit(':');\n if (node.else_ !== null) {\n this.compile(node.else_, frame);\n } else {\n this._emit('\"\"');\n }\n this._emit(')');\n };\n _proto.compileIn = function compileIn(node, frame) {\n this._emit('runtime.inOperator(');\n this.compile(node.left, frame);\n this._emit(',');\n this.compile(node.right, frame);\n this._emit(')');\n };\n _proto.compileIs = function compileIs(node, frame) {\n // first, we need to try to get the name of the test function, if it's a\n // callable (i.e., has args) and not a symbol.\n var right = node.right.name ? node.right.name.value\n // otherwise go with the symbol value\n : node.right.value;\n this._emit('env.getTest(\"' + right + '\").call(context, ');\n this.compile(node.left, frame);\n // compile the arguments for the callable if they exist\n if (node.right.args) {\n this._emit(',');\n this.compile(node.right.args, frame);\n }\n this._emit(') === true');\n };\n _proto._binOpEmitter = function _binOpEmitter(node, frame, str) {\n this.compile(node.left, frame);\n this._emit(str);\n this.compile(node.right, frame);\n }\n\n // ensure concatenation instead of addition\n // by adding empty string in between\n ;\n _proto.compileOr = function compileOr(node, frame) {\n return this._binOpEmitter(node, frame, ' || ');\n };\n _proto.compileAnd = function compileAnd(node, frame) {\n return this._binOpEmitter(node, frame, ' && ');\n };\n _proto.compileAdd = function compileAdd(node, frame) {\n return this._binOpEmitter(node, frame, ' + ');\n };\n _proto.compileConcat = function compileConcat(node, frame) {\n return this._binOpEmitter(node, frame, ' + \"\" + ');\n };\n _proto.compileSub = function compileSub(node, frame) {\n return this._binOpEmitter(node, frame, ' - ');\n };\n _proto.compileMul = function compileMul(node, frame) {\n return this._binOpEmitter(node, frame, ' * ');\n };\n _proto.compileDiv = function compileDiv(node, frame) {\n return this._binOpEmitter(node, frame, ' / ');\n };\n _proto.compileMod = function compileMod(node, frame) {\n return this._binOpEmitter(node, frame, ' % ');\n };\n _proto.compileNot = function compileNot(node, frame) {\n this._emit('!');\n this.compile(node.target, frame);\n };\n _proto.compileFloorDiv = function compileFloorDiv(node, frame) {\n this._emit('Math.floor(');\n this.compile(node.left, frame);\n this._emit(' / ');\n this.compile(node.right, frame);\n this._emit(')');\n };\n _proto.compilePow = function compilePow(node, frame) {\n this._emit('Math.pow(');\n this.compile(node.left, frame);\n this._emit(', ');\n this.compile(node.right, frame);\n this._emit(')');\n };\n _proto.compileNeg = function compileNeg(node, frame) {\n this._emit('-');\n this.compile(node.target, frame);\n };\n _proto.compilePos = function compilePos(node, frame) {\n this._emit('+');\n this.compile(node.target, frame);\n };\n _proto.compileCompare = function compileCompare(node, frame) {\n var _this5 = this;\n this.compile(node.expr, frame);\n node.ops.forEach(function (op) {\n _this5._emit(\" \" + compareOps[op.type] + \" \");\n _this5.compile(op.expr, frame);\n });\n };\n _proto.compileLookupVal = function compileLookupVal(node, frame) {\n this._emit('runtime.memberLookup((');\n this._compileExpression(node.target, frame);\n this._emit('),');\n this._compileExpression(node.val, frame);\n this._emit(')');\n };\n _proto._getNodeName = function _getNodeName(node) {\n switch (node.typename) {\n case 'Symbol':\n return node.value;\n case 'FunCall':\n return 'the return value of (' + this._getNodeName(node.name) + ')';\n case 'LookupVal':\n return this._getNodeName(node.target) + '[\"' + this._getNodeName(node.val) + '\"]';\n case 'Literal':\n return node.value.toString();\n default:\n return '--expression--';\n }\n };\n _proto.compileFunCall = function compileFunCall(node, frame) {\n // Keep track of line/col info at runtime by settings\n // variables within an expression. An expression in javascript\n // like (x, y, z) returns the last value, and x and y can be\n // anything\n this._emit('(lineno = ' + node.lineno + ', colno = ' + node.colno + ', ');\n this._emit('runtime.callWrap(');\n // Compile it as normal.\n this._compileExpression(node.name, frame);\n\n // Output the name of what we're calling so we can get friendly errors\n // if the lookup fails.\n this._emit(', \"' + this._getNodeName(node.name).replace(/\"/g, '\\\\\"') + '\", context, ');\n this._compileAggregate(node.args, frame, '[', '])');\n this._emit(')');\n };\n _proto.compileFilter = function compileFilter(node, frame) {\n var name = node.name;\n this.assertType(name, nodes.Symbol);\n this._emit('env.getFilter(\"' + name.value + '\").call(context, ');\n this._compileAggregate(node.args, frame);\n this._emit(')');\n };\n _proto.compileFilterAsync = function compileFilterAsync(node, frame) {\n var name = node.name;\n var symbol = node.symbol.value;\n this.assertType(name, nodes.Symbol);\n frame.set(symbol, symbol);\n this._emit('env.getFilter(\"' + name.value + '\").call(context, ');\n this._compileAggregate(node.args, frame);\n this._emitLine(', ' + this._makeCallback(symbol));\n this._addScopeLevel();\n };\n _proto.compileKeywordArgs = function compileKeywordArgs(node, frame) {\n this._emit('runtime.makeKeywordArgs(');\n this.compileDict(node, frame);\n this._emit(')');\n };\n _proto.compileSet = function compileSet(node, frame) {\n var _this6 = this;\n var ids = [];\n\n // Lookup the variable names for each identifier and create\n // new ones if necessary\n node.targets.forEach(function (target) {\n var name = target.value;\n var id = frame.lookup(name);\n if (id === null || id === undefined) {\n id = _this6._tmpid();\n\n // Note: This relies on js allowing scope across\n // blocks, in case this is created inside an `if`\n _this6._emitLine('var ' + id + ';');\n }\n ids.push(id);\n });\n if (node.value) {\n this._emit(ids.join(' = ') + ' = ');\n this._compileExpression(node.value, frame);\n this._emitLine(';');\n } else {\n this._emit(ids.join(' = ') + ' = ');\n this.compile(node.body, frame);\n this._emitLine(';');\n }\n node.targets.forEach(function (target, i) {\n var id = ids[i];\n var name = target.value;\n\n // We are running this for every var, but it's very\n // uncommon to assign to multiple vars anyway\n _this6._emitLine(\"frame.set(\\\"\" + name + \"\\\", \" + id + \", true);\");\n _this6._emitLine('if(frame.topLevel) {');\n _this6._emitLine(\"context.setVariable(\\\"\" + name + \"\\\", \" + id + \");\");\n _this6._emitLine('}');\n if (name.charAt(0) !== '_') {\n _this6._emitLine('if(frame.topLevel) {');\n _this6._emitLine(\"context.addExport(\\\"\" + name + \"\\\", \" + id + \");\");\n _this6._emitLine('}');\n }\n });\n };\n _proto.compileSwitch = function compileSwitch(node, frame) {\n var _this7 = this;\n this._emit('switch (');\n this.compile(node.expr, frame);\n this._emit(') {');\n node.cases.forEach(function (c, i) {\n _this7._emit('case ');\n _this7.compile(c.cond, frame);\n _this7._emit(': ');\n _this7.compile(c.body, frame);\n // preserve fall-throughs\n if (c.body.children.length) {\n _this7._emitLine('break;');\n }\n });\n if (node.default) {\n this._emit('default:');\n this.compile(node.default, frame);\n }\n this._emit('}');\n };\n _proto.compileIf = function compileIf(node, frame, async) {\n var _this8 = this;\n this._emit('if(');\n this._compileExpression(node.cond, frame);\n this._emitLine(') {');\n this._withScopedSyntax(function () {\n _this8.compile(node.body, frame);\n if (async) {\n _this8._emit('cb()');\n }\n });\n if (node.else_) {\n this._emitLine('}\\nelse {');\n this._withScopedSyntax(function () {\n _this8.compile(node.else_, frame);\n if (async) {\n _this8._emit('cb()');\n }\n });\n } else if (async) {\n this._emitLine('}\\nelse {');\n this._emit('cb()');\n }\n this._emitLine('}');\n };\n _proto.compileIfAsync = function compileIfAsync(node, frame) {\n this._emit('(function(cb) {');\n this.compileIf(node, frame, true);\n this._emit('})(' + this._makeCallback());\n this._addScopeLevel();\n };\n _proto._emitLoopBindings = function _emitLoopBindings(node, arr, i, len) {\n var _this9 = this;\n var bindings = [{\n name: 'index',\n val: i + \" + 1\"\n }, {\n name: 'index0',\n val: i\n }, {\n name: 'revindex',\n val: len + \" - \" + i\n }, {\n name: 'revindex0',\n val: len + \" - \" + i + \" - 1\"\n }, {\n name: 'first',\n val: i + \" === 0\"\n }, {\n name: 'last',\n val: i + \" === \" + len + \" - 1\"\n }, {\n name: 'length',\n val: len\n }];\n bindings.forEach(function (b) {\n _this9._emitLine(\"frame.set(\\\"loop.\" + b.name + \"\\\", \" + b.val + \");\");\n });\n };\n _proto.compileFor = function compileFor(node, frame) {\n var _this10 = this;\n // Some of this code is ugly, but it keeps the generated code\n // as fast as possible. ForAsync also shares some of this, but\n // not much.\n\n var i = this._tmpid();\n var len = this._tmpid();\n var arr = this._tmpid();\n frame = frame.push();\n this._emitLine('frame = frame.push();');\n this._emit(\"var \" + arr + \" = \");\n this._compileExpression(node.arr, frame);\n this._emitLine(';');\n this._emit(\"if(\" + arr + \") {\");\n this._emitLine(arr + ' = runtime.fromIterator(' + arr + ');');\n\n // If multiple names are passed, we need to bind them\n // appropriately\n if (node.name instanceof nodes.Array) {\n this._emitLine(\"var \" + i + \";\");\n\n // The object could be an arroy or object. Note that the\n // body of the loop is duplicated for each condition, but\n // we are optimizing for speed over size.\n this._emitLine(\"if(runtime.isArray(\" + arr + \")) {\");\n this._emitLine(\"var \" + len + \" = \" + arr + \".length;\");\n this._emitLine(\"for(\" + i + \"=0; \" + i + \" < \" + arr + \".length; \" + i + \"++) {\");\n\n // Bind each declared var\n node.name.children.forEach(function (child, u) {\n var tid = _this10._tmpid();\n _this10._emitLine(\"var \" + tid + \" = \" + arr + \"[\" + i + \"][\" + u + \"];\");\n _this10._emitLine(\"frame.set(\\\"\" + child + \"\\\", \" + arr + \"[\" + i + \"][\" + u + \"]);\");\n frame.set(node.name.children[u].value, tid);\n });\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n _this10.compile(node.body, frame);\n });\n this._emitLine('}');\n this._emitLine('} else {');\n // Iterate over the key/values of an object\n var _node$name$children = node.name.children,\n key = _node$name$children[0],\n val = _node$name$children[1];\n var k = this._tmpid();\n var v = this._tmpid();\n frame.set(key.value, k);\n frame.set(val.value, v);\n this._emitLine(i + \" = -1;\");\n this._emitLine(\"var \" + len + \" = runtime.keys(\" + arr + \").length;\");\n this._emitLine(\"for(var \" + k + \" in \" + arr + \") {\");\n this._emitLine(i + \"++;\");\n this._emitLine(\"var \" + v + \" = \" + arr + \"[\" + k + \"];\");\n this._emitLine(\"frame.set(\\\"\" + key.value + \"\\\", \" + k + \");\");\n this._emitLine(\"frame.set(\\\"\" + val.value + \"\\\", \" + v + \");\");\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n _this10.compile(node.body, frame);\n });\n this._emitLine('}');\n this._emitLine('}');\n } else {\n // Generate a typical array iteration\n var _v = this._tmpid();\n frame.set(node.name.value, _v);\n this._emitLine(\"var \" + len + \" = \" + arr + \".length;\");\n this._emitLine(\"for(var \" + i + \"=0; \" + i + \" < \" + arr + \".length; \" + i + \"++) {\");\n this._emitLine(\"var \" + _v + \" = \" + arr + \"[\" + i + \"];\");\n this._emitLine(\"frame.set(\\\"\" + node.name.value + \"\\\", \" + _v + \");\");\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n _this10.compile(node.body, frame);\n });\n this._emitLine('}');\n }\n this._emitLine('}');\n if (node.else_) {\n this._emitLine('if (!' + len + ') {');\n this.compile(node.else_, frame);\n this._emitLine('}');\n }\n this._emitLine('frame = frame.pop();');\n };\n _proto._compileAsyncLoop = function _compileAsyncLoop(node, frame, parallel) {\n var _this11 = this;\n // This shares some code with the For tag, but not enough to\n // worry about. This iterates across an object asynchronously,\n // but not in parallel.\n\n var i = this._tmpid();\n var len = this._tmpid();\n var arr = this._tmpid();\n var asyncMethod = parallel ? 'asyncAll' : 'asyncEach';\n frame = frame.push();\n this._emitLine('frame = frame.push();');\n this._emit('var ' + arr + ' = runtime.fromIterator(');\n this._compileExpression(node.arr, frame);\n this._emitLine(');');\n if (node.name instanceof nodes.Array) {\n var arrayLen = node.name.children.length;\n this._emit(\"runtime.\" + asyncMethod + \"(\" + arr + \", \" + arrayLen + \", function(\");\n node.name.children.forEach(function (name) {\n _this11._emit(name.value + \",\");\n });\n this._emit(i + ',' + len + ',next) {');\n node.name.children.forEach(function (name) {\n var id = name.value;\n frame.set(id, id);\n _this11._emitLine(\"frame.set(\\\"\" + id + \"\\\", \" + id + \");\");\n });\n } else {\n var id = node.name.value;\n this._emitLine(\"runtime.\" + asyncMethod + \"(\" + arr + \", 1, function(\" + id + \", \" + i + \", \" + len + \",next) {\");\n this._emitLine('frame.set(\"' + id + '\", ' + id + ');');\n frame.set(id, id);\n }\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n var buf;\n if (parallel) {\n buf = _this11._pushBuffer();\n }\n _this11.compile(node.body, frame);\n _this11._emitLine('next(' + i + (buf ? ',' + buf : '') + ');');\n if (parallel) {\n _this11._popBuffer();\n }\n });\n var output = this._tmpid();\n this._emitLine('}, ' + this._makeCallback(output));\n this._addScopeLevel();\n if (parallel) {\n this._emitLine(this.buffer + ' += ' + output + ';');\n }\n if (node.else_) {\n this._emitLine('if (!' + arr + '.length) {');\n this.compile(node.else_, frame);\n this._emitLine('}');\n }\n this._emitLine('frame = frame.pop();');\n };\n _proto.compileAsyncEach = function compileAsyncEach(node, frame) {\n this._compileAsyncLoop(node, frame);\n };\n _proto.compileAsyncAll = function compileAsyncAll(node, frame) {\n this._compileAsyncLoop(node, frame, true);\n };\n _proto._compileMacro = function _compileMacro(node, frame) {\n var _this12 = this;\n var args = [];\n var kwargs = null;\n var funcId = 'macro_' + this._tmpid();\n var keepFrame = frame !== undefined;\n\n // Type check the definition of the args\n node.args.children.forEach(function (arg, i) {\n if (i === node.args.children.length - 1 && arg instanceof nodes.Dict) {\n kwargs = arg;\n } else {\n _this12.assertType(arg, nodes.Symbol);\n args.push(arg);\n }\n });\n var realNames = [].concat(args.map(function (n) {\n return \"l_\" + n.value;\n }), ['kwargs']);\n\n // Quoted argument names\n var argNames = args.map(function (n) {\n return \"\\\"\" + n.value + \"\\\"\";\n });\n var kwargNames = (kwargs && kwargs.children || []).map(function (n) {\n return \"\\\"\" + n.key.value + \"\\\"\";\n });\n\n // We pass a function to makeMacro which destructures the\n // arguments so support setting positional args with keywords\n // args and passing keyword args as positional args\n // (essentially default values). See runtime.js.\n var currFrame;\n if (keepFrame) {\n currFrame = frame.push(true);\n } else {\n currFrame = new Frame();\n }\n this._emitLines(\"var \" + funcId + \" = runtime.makeMacro(\", \"[\" + argNames.join(', ') + \"], \", \"[\" + kwargNames.join(', ') + \"], \", \"function (\" + realNames.join(', ') + \") {\", 'var callerFrame = frame;', 'frame = ' + (keepFrame ? 'frame.push(true);' : 'new runtime.Frame();'), 'kwargs = kwargs || {};', 'if (Object.prototype.hasOwnProperty.call(kwargs, \"caller\")) {', 'frame.set(\"caller\", kwargs.caller); }');\n\n // Expose the arguments to the template. Don't need to use\n // random names because the function\n // will create a new run-time scope for us\n args.forEach(function (arg) {\n _this12._emitLine(\"frame.set(\\\"\" + arg.value + \"\\\", l_\" + arg.value + \");\");\n currFrame.set(arg.value, \"l_\" + arg.value);\n });\n\n // Expose the keyword arguments\n if (kwargs) {\n kwargs.children.forEach(function (pair) {\n var name = pair.key.value;\n _this12._emit(\"frame.set(\\\"\" + name + \"\\\", \");\n _this12._emit(\"Object.prototype.hasOwnProperty.call(kwargs, \\\"\" + name + \"\\\")\");\n _this12._emit(\" ? kwargs[\\\"\" + name + \"\\\"] : \");\n _this12._compileExpression(pair.value, currFrame);\n _this12._emit(');');\n });\n }\n var bufferId = this._pushBuffer();\n this._withScopedSyntax(function () {\n _this12.compile(node.body, currFrame);\n });\n this._emitLine('frame = ' + (keepFrame ? 'frame.pop();' : 'callerFrame;'));\n this._emitLine(\"return new runtime.SafeString(\" + bufferId + \");\");\n this._emitLine('});');\n this._popBuffer();\n return funcId;\n };\n _proto.compileMacro = function compileMacro(node, frame) {\n var funcId = this._compileMacro(node);\n\n // Expose the macro to the templates\n var name = node.name.value;\n frame.set(name, funcId);\n if (frame.parent) {\n this._emitLine(\"frame.set(\\\"\" + name + \"\\\", \" + funcId + \");\");\n } else {\n if (node.name.value.charAt(0) !== '_') {\n this._emitLine(\"context.addExport(\\\"\" + name + \"\\\");\");\n }\n this._emitLine(\"context.setVariable(\\\"\" + name + \"\\\", \" + funcId + \");\");\n }\n };\n _proto.compileCaller = function compileCaller(node, frame) {\n // basically an anonymous \"macro expression\"\n this._emit('(function (){');\n var funcId = this._compileMacro(node, frame);\n this._emit(\"return \" + funcId + \";})()\");\n };\n _proto._compileGetTemplate = function _compileGetTemplate(node, frame, eagerCompile, ignoreMissing) {\n var parentTemplateId = this._tmpid();\n var parentName = this._templateName();\n var cb = this._makeCallback(parentTemplateId);\n var eagerCompileArg = eagerCompile ? 'true' : 'false';\n var ignoreMissingArg = ignoreMissing ? 'true' : 'false';\n this._emit('env.getTemplate(');\n this._compileExpression(node.template, frame);\n this._emitLine(\", \" + eagerCompileArg + \", \" + parentName + \", \" + ignoreMissingArg + \", \" + cb);\n return parentTemplateId;\n };\n _proto.compileImport = function compileImport(node, frame) {\n var target = node.target.value;\n var id = this._compileGetTemplate(node, frame, false, false);\n this._addScopeLevel();\n this._emitLine(id + '.getExported(' + (node.withContext ? 'context.getVariables(), frame, ' : '') + this._makeCallback(id));\n this._addScopeLevel();\n frame.set(target, id);\n if (frame.parent) {\n this._emitLine(\"frame.set(\\\"\" + target + \"\\\", \" + id + \");\");\n } else {\n this._emitLine(\"context.setVariable(\\\"\" + target + \"\\\", \" + id + \");\");\n }\n };\n _proto.compileFromImport = function compileFromImport(node, frame) {\n var _this13 = this;\n var importedId = this._compileGetTemplate(node, frame, false, false);\n this._addScopeLevel();\n this._emitLine(importedId + '.getExported(' + (node.withContext ? 'context.getVariables(), frame, ' : '') + this._makeCallback(importedId));\n this._addScopeLevel();\n node.names.children.forEach(function (nameNode) {\n var name;\n var alias;\n var id = _this13._tmpid();\n if (nameNode instanceof nodes.Pair) {\n name = nameNode.key.value;\n alias = nameNode.value.value;\n } else {\n name = nameNode.value;\n alias = name;\n }\n _this13._emitLine(\"if(Object.prototype.hasOwnProperty.call(\" + importedId + \", \\\"\" + name + \"\\\")) {\");\n _this13._emitLine(\"var \" + id + \" = \" + importedId + \".\" + name + \";\");\n _this13._emitLine('} else {');\n _this13._emitLine(\"cb(new Error(\\\"cannot import '\" + name + \"'\\\")); return;\");\n _this13._emitLine('}');\n frame.set(alias, id);\n if (frame.parent) {\n _this13._emitLine(\"frame.set(\\\"\" + alias + \"\\\", \" + id + \");\");\n } else {\n _this13._emitLine(\"context.setVariable(\\\"\" + alias + \"\\\", \" + id + \");\");\n }\n });\n };\n _proto.compileBlock = function compileBlock(node) {\n var id = this._tmpid();\n\n // If we are executing outside a block (creating a top-level\n // block), we really don't want to execute its code because it\n // will execute twice: once when the child template runs and\n // again when the parent template runs. Note that blocks\n // within blocks will *always* execute immediately *and*\n // wherever else they are invoked (like used in a parent\n // template). This may have behavioral differences from jinja\n // because blocks can have side effects, but it seems like a\n // waste of performance to always execute huge top-level\n // blocks twice\n if (!this.inBlock) {\n this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(\"\"); } : ');\n }\n this._emit(\"context.getBlock(\\\"\" + node.name.value + \"\\\")\");\n if (!this.inBlock) {\n this._emit(')');\n }\n this._emitLine('(env, context, frame, runtime, ' + this._makeCallback(id));\n this._emitLine(this.buffer + \" += \" + id + \";\");\n this._addScopeLevel();\n };\n _proto.compileSuper = function compileSuper(node, frame) {\n var name = node.blockName.value;\n var id = node.symbol.value;\n var cb = this._makeCallback(id);\n this._emitLine(\"context.getSuper(env, \\\"\" + name + \"\\\", b_\" + name + \", frame, runtime, \" + cb);\n this._emitLine(id + \" = runtime.markSafe(\" + id + \");\");\n this._addScopeLevel();\n frame.set(id, id);\n };\n _proto.compileExtends = function compileExtends(node, frame) {\n var k = this._tmpid();\n var parentTemplateId = this._compileGetTemplate(node, frame, true, false);\n\n // extends is a dynamic tag and can occur within a block like\n // `if`, so if this happens we need to capture the parent\n // template in the top-level scope\n this._emitLine(\"parentTemplate = \" + parentTemplateId);\n this._emitLine(\"for(var \" + k + \" in parentTemplate.blocks) {\");\n this._emitLine(\"context.addBlock(\" + k + \", parentTemplate.blocks[\" + k + \"]);\");\n this._emitLine('}');\n this._addScopeLevel();\n };\n _proto.compileInclude = function compileInclude(node, frame) {\n this._emitLine('var tasks = [];');\n this._emitLine('tasks.push(');\n this._emitLine('function(callback) {');\n var id = this._compileGetTemplate(node, frame, false, node.ignoreMissing);\n this._emitLine(\"callback(null,\" + id + \");});\");\n this._emitLine('});');\n var id2 = this._tmpid();\n this._emitLine('tasks.push(');\n this._emitLine('function(template, callback){');\n this._emitLine('template.render(context.getVariables(), frame, ' + this._makeCallback(id2));\n this._emitLine('callback(null,' + id2 + ');});');\n this._emitLine('});');\n this._emitLine('tasks.push(');\n this._emitLine('function(result, callback){');\n this._emitLine(this.buffer + \" += result;\");\n this._emitLine('callback(null);');\n this._emitLine('});');\n this._emitLine('env.waterfall(tasks, function(){');\n this._addScopeLevel();\n };\n _proto.compileTemplateData = function compileTemplateData(node, frame) {\n this.compileLiteral(node, frame);\n };\n _proto.compileCapture = function compileCapture(node, frame) {\n var _this14 = this;\n // we need to temporarily override the current buffer id as 'output'\n // so the set block writes to the capture output instead of the buffer\n var buffer = this.buffer;\n this.buffer = 'output';\n this._emitLine('(function() {');\n this._emitLine('var output = \"\";');\n this._withScopedSyntax(function () {\n _this14.compile(node.body, frame);\n });\n this._emitLine('return output;');\n this._emitLine('})()');\n // and of course, revert back to the old buffer id\n this.buffer = buffer;\n };\n _proto.compileOutput = function compileOutput(node, frame) {\n var _this15 = this;\n var children = node.children;\n children.forEach(function (child) {\n // TemplateData is a special case because it is never\n // autoescaped, so simply output it for optimization\n if (child instanceof nodes.TemplateData) {\n if (child.value) {\n _this15._emit(_this15.buffer + \" += \");\n _this15.compileLiteral(child, frame);\n _this15._emitLine(';');\n }\n } else {\n _this15._emit(_this15.buffer + \" += runtime.suppressValue(\");\n if (_this15.throwOnUndefined) {\n _this15._emit('runtime.ensureDefined(');\n }\n _this15.compile(child, frame);\n if (_this15.throwOnUndefined) {\n _this15._emit(\",\" + node.lineno + \",\" + node.colno + \")\");\n }\n _this15._emit(', env.opts.autoescape);\\n');\n }\n });\n };\n _proto.compileRoot = function compileRoot(node, frame) {\n var _this16 = this;\n if (frame) {\n this.fail('compileRoot: root node can\\'t have frame');\n }\n frame = new Frame();\n this._emitFuncBegin(node, 'root');\n this._emitLine('var parentTemplate = null;');\n this._compileChildren(node, frame);\n this._emitLine('if(parentTemplate) {');\n this._emitLine('parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);');\n this._emitLine('} else {');\n this._emitLine(\"cb(null, \" + this.buffer + \");\");\n this._emitLine('}');\n this._emitFuncEnd(true);\n this.inBlock = true;\n var blockNames = [];\n var blocks = node.findAll(nodes.Block);\n blocks.forEach(function (block, i) {\n var name = block.name.value;\n if (blockNames.indexOf(name) !== -1) {\n throw new Error(\"Block \\\"\" + name + \"\\\" defined more than once.\");\n }\n blockNames.push(name);\n _this16._emitFuncBegin(block, \"b_\" + name);\n var tmpFrame = new Frame();\n _this16._emitLine('var frame = frame.push(true);');\n _this16.compile(block.body, tmpFrame);\n _this16._emitFuncEnd();\n });\n this._emitLine('return {');\n blocks.forEach(function (block, i) {\n var blockName = \"b_\" + block.name.value;\n _this16._emitLine(blockName + \": \" + blockName + \",\");\n });\n this._emitLine('root: root\\n};');\n };\n _proto.compile = function compile(node, frame) {\n var _compile = this['compile' + node.typename];\n if (_compile) {\n _compile.call(this, node, frame);\n } else {\n this.fail(\"compile: Cannot compile node: \" + node.typename, node.lineno, node.colno);\n }\n };\n _proto.getCode = function getCode() {\n return this.codebuf.join('');\n };\n return Compiler;\n}(Obj);\nmodule.exports = {\n compile: function compile(src, asyncFilters, extensions, name, opts) {\n if (opts === void 0) {\n opts = {};\n }\n var c = new Compiler(name, opts.throwOnUndefined);\n\n // Run the extension preprocessors against the source.\n var preprocessors = (extensions || []).map(function (ext) {\n return ext.preprocess;\n }).filter(function (f) {\n return !!f;\n });\n var processedSrc = preprocessors.reduce(function (s, processor) {\n return processor(s);\n }, src);\n c.compile(transformer.transform(parser.parse(processedSrc, extensions, opts), asyncFilters, name));\n return c.getCode();\n },\n Compiler: Compiler\n};","'use strict';\n\nvar lib = require('./lib');\nvar r = require('./runtime');\nvar _exports = module.exports = {};\nfunction normalize(value, defaultValue) {\n if (value === null || value === undefined || value === false) {\n return defaultValue;\n }\n return value;\n}\n_exports.abs = Math.abs;\nfunction isNaN(num) {\n return num !== num; // eslint-disable-line no-self-compare\n}\n\nfunction batch(arr, linecount, fillWith) {\n var i;\n var res = [];\n var tmp = [];\n for (i = 0; i < arr.length; i++) {\n if (i % linecount === 0 && tmp.length) {\n res.push(tmp);\n tmp = [];\n }\n tmp.push(arr[i]);\n }\n if (tmp.length) {\n if (fillWith) {\n for (i = tmp.length; i < linecount; i++) {\n tmp.push(fillWith);\n }\n }\n res.push(tmp);\n }\n return res;\n}\n_exports.batch = batch;\nfunction capitalize(str) {\n str = normalize(str, '');\n var ret = str.toLowerCase();\n return r.copySafeness(str, ret.charAt(0).toUpperCase() + ret.slice(1));\n}\n_exports.capitalize = capitalize;\nfunction center(str, width) {\n str = normalize(str, '');\n width = width || 80;\n if (str.length >= width) {\n return str;\n }\n var spaces = width - str.length;\n var pre = lib.repeat(' ', spaces / 2 - spaces % 2);\n var post = lib.repeat(' ', spaces / 2);\n return r.copySafeness(str, pre + str + post);\n}\n_exports.center = center;\nfunction default_(val, def, bool) {\n if (bool) {\n return val || def;\n } else {\n return val !== undefined ? val : def;\n }\n}\n\n// TODO: it is confusing to export something called 'default'\n_exports['default'] = default_; // eslint-disable-line dot-notation\n\nfunction dictsort(val, caseSensitive, by) {\n if (!lib.isObject(val)) {\n throw new lib.TemplateError('dictsort filter: val must be an object');\n }\n var array = [];\n // deliberately include properties from the object's prototype\n for (var k in val) {\n // eslint-disable-line guard-for-in, no-restricted-syntax\n array.push([k, val[k]]);\n }\n var si;\n if (by === undefined || by === 'key') {\n si = 0;\n } else if (by === 'value') {\n si = 1;\n } else {\n throw new lib.TemplateError('dictsort filter: You can only sort by either key or value');\n }\n array.sort(function (t1, t2) {\n var a = t1[si];\n var b = t2[si];\n if (!caseSensitive) {\n if (lib.isString(a)) {\n a = a.toUpperCase();\n }\n if (lib.isString(b)) {\n b = b.toUpperCase();\n }\n }\n return a > b ? 1 : a === b ? 0 : -1; // eslint-disable-line no-nested-ternary\n });\n\n return array;\n}\n_exports.dictsort = dictsort;\nfunction dump(obj, spaces) {\n return JSON.stringify(obj, null, spaces);\n}\n_exports.dump = dump;\nfunction escape(str) {\n if (str instanceof r.SafeString) {\n return str;\n }\n str = str === null || str === undefined ? '' : str;\n return r.markSafe(lib.escape(str.toString()));\n}\n_exports.escape = escape;\nfunction safe(str) {\n if (str instanceof r.SafeString) {\n return str;\n }\n str = str === null || str === undefined ? '' : str;\n return r.markSafe(str.toString());\n}\n_exports.safe = safe;\nfunction first(arr) {\n return arr[0];\n}\n_exports.first = first;\nfunction forceescape(str) {\n str = str === null || str === undefined ? '' : str;\n return r.markSafe(lib.escape(str.toString()));\n}\n_exports.forceescape = forceescape;\nfunction groupby(arr, attr) {\n return lib.groupBy(arr, attr, this.env.opts.throwOnUndefined);\n}\n_exports.groupby = groupby;\nfunction indent(str, width, indentfirst) {\n str = normalize(str, '');\n if (str === '') {\n return '';\n }\n width = width || 4;\n // let res = '';\n var lines = str.split('\\n');\n var sp = lib.repeat(' ', width);\n var res = lines.map(function (l, i) {\n return i === 0 && !indentfirst ? l : \"\" + sp + l;\n }).join('\\n');\n return r.copySafeness(str, res);\n}\n_exports.indent = indent;\nfunction join(arr, del, attr) {\n del = del || '';\n if (attr) {\n arr = lib.map(arr, function (v) {\n return v[attr];\n });\n }\n return arr.join(del);\n}\n_exports.join = join;\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n_exports.last = last;\nfunction lengthFilter(val) {\n var value = normalize(val, '');\n if (value !== undefined) {\n if (typeof Map === 'function' && value instanceof Map || typeof Set === 'function' && value instanceof Set) {\n // ECMAScript 2015 Maps and Sets\n return value.size;\n }\n if (lib.isObject(value) && !(value instanceof r.SafeString)) {\n // Objects (besides SafeStrings), non-primative Arrays\n return lib.keys(value).length;\n }\n return value.length;\n }\n return 0;\n}\n_exports.length = lengthFilter;\nfunction list(val) {\n if (lib.isString(val)) {\n return val.split('');\n } else if (lib.isObject(val)) {\n return lib._entries(val || {}).map(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return {\n key: key,\n value: value\n };\n });\n } else if (lib.isArray(val)) {\n return val;\n } else {\n throw new lib.TemplateError('list filter: type not iterable');\n }\n}\n_exports.list = list;\nfunction lower(str) {\n str = normalize(str, '');\n return str.toLowerCase();\n}\n_exports.lower = lower;\nfunction nl2br(str) {\n if (str === null || str === undefined) {\n return '';\n }\n return r.copySafeness(str, str.replace(/\\r\\n|\\n/g, '<br />\\n'));\n}\n_exports.nl2br = nl2br;\nfunction random(arr) {\n return arr[Math.floor(Math.random() * arr.length)];\n}\n_exports.random = random;\n\n/**\n * Construct select or reject filter\n *\n * @param {boolean} expectedTestResult\n * @returns {function(array, string, *): array}\n */\nfunction getSelectOrReject(expectedTestResult) {\n function filter(arr, testName, secondArg) {\n if (testName === void 0) {\n testName = 'truthy';\n }\n var context = this;\n var test = context.env.getTest(testName);\n return lib.toArray(arr).filter(function examineTestResult(item) {\n return test.call(context, item, secondArg) === expectedTestResult;\n });\n }\n return filter;\n}\n_exports.reject = getSelectOrReject(false);\nfunction rejectattr(arr, attr) {\n return arr.filter(function (item) {\n return !item[attr];\n });\n}\n_exports.rejectattr = rejectattr;\n_exports.select = getSelectOrReject(true);\nfunction selectattr(arr, attr) {\n return arr.filter(function (item) {\n return !!item[attr];\n });\n}\n_exports.selectattr = selectattr;\nfunction replace(str, old, new_, maxCount) {\n var originalStr = str;\n if (old instanceof RegExp) {\n return str.replace(old, new_);\n }\n if (typeof maxCount === 'undefined') {\n maxCount = -1;\n }\n var res = ''; // Output\n\n // Cast Numbers in the search term to string\n if (typeof old === 'number') {\n old = '' + old;\n } else if (typeof old !== 'string') {\n // If it is something other than number or string,\n // return the original string\n return str;\n }\n\n // Cast numbers in the replacement to string\n if (typeof str === 'number') {\n str = '' + str;\n }\n\n // If by now, we don't have a string, throw it back\n if (typeof str !== 'string' && !(str instanceof r.SafeString)) {\n return str;\n }\n\n // ShortCircuits\n if (old === '') {\n // Mimic the python behaviour: empty string is replaced\n // by replacement e.g. \"abc\"|replace(\"\", \".\") -> .a.b.c.\n res = new_ + str.split('').join(new_) + new_;\n return r.copySafeness(str, res);\n }\n var nextIndex = str.indexOf(old);\n // if # of replacements to perform is 0, or the string to does\n // not contain the old value, return the string\n if (maxCount === 0 || nextIndex === -1) {\n return str;\n }\n var pos = 0;\n var count = 0; // # of replacements made\n\n while (nextIndex > -1 && (maxCount === -1 || count < maxCount)) {\n // Grab the next chunk of src string and add it with the\n // replacement, to the result\n res += str.substring(pos, nextIndex) + new_;\n // Increment our pointer in the src string\n pos = nextIndex + old.length;\n count++;\n // See if there are any more replacements to be made\n nextIndex = str.indexOf(old, pos);\n }\n\n // We've either reached the end, or done the max # of\n // replacements, tack on any remaining string\n if (pos < str.length) {\n res += str.substring(pos);\n }\n return r.copySafeness(originalStr, res);\n}\n_exports.replace = replace;\nfunction reverse(val) {\n var arr;\n if (lib.isString(val)) {\n arr = list(val);\n } else {\n // Copy it\n arr = lib.map(val, function (v) {\n return v;\n });\n }\n arr.reverse();\n if (lib.isString(val)) {\n return r.copySafeness(val, arr.join(''));\n }\n return arr;\n}\n_exports.reverse = reverse;\nfunction round(val, precision, method) {\n precision = precision || 0;\n var factor = Math.pow(10, precision);\n var rounder;\n if (method === 'ceil') {\n rounder = Math.ceil;\n } else if (method === 'floor') {\n rounder = Math.floor;\n } else {\n rounder = Math.round;\n }\n return rounder(val * factor) / factor;\n}\n_exports.round = round;\nfunction slice(arr, slices, fillWith) {\n var sliceLength = Math.floor(arr.length / slices);\n var extra = arr.length % slices;\n var res = [];\n var offset = 0;\n for (var i = 0; i < slices; i++) {\n var start = offset + i * sliceLength;\n if (i < extra) {\n offset++;\n }\n var end = offset + (i + 1) * sliceLength;\n var currSlice = arr.slice(start, end);\n if (fillWith && i >= extra) {\n currSlice.push(fillWith);\n }\n res.push(currSlice);\n }\n return res;\n}\n_exports.slice = slice;\nfunction sum(arr, attr, start) {\n if (start === void 0) {\n start = 0;\n }\n if (attr) {\n arr = lib.map(arr, function (v) {\n return v[attr];\n });\n }\n return start + arr.reduce(function (a, b) {\n return a + b;\n }, 0);\n}\n_exports.sum = sum;\n_exports.sort = r.makeMacro(['value', 'reverse', 'case_sensitive', 'attribute'], [], function sortFilter(arr, reversed, caseSens, attr) {\n var _this = this;\n // Copy it\n var array = lib.map(arr, function (v) {\n return v;\n });\n var getAttribute = lib.getAttrGetter(attr);\n array.sort(function (a, b) {\n var x = attr ? getAttribute(a) : a;\n var y = attr ? getAttribute(b) : b;\n if (_this.env.opts.throwOnUndefined && attr && (x === undefined || y === undefined)) {\n throw new TypeError(\"sort: attribute \\\"\" + attr + \"\\\" resolved to undefined\");\n }\n if (!caseSens && lib.isString(x) && lib.isString(y)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n if (x < y) {\n return reversed ? 1 : -1;\n } else if (x > y) {\n return reversed ? -1 : 1;\n } else {\n return 0;\n }\n });\n return array;\n});\nfunction string(obj) {\n return r.copySafeness(obj, obj);\n}\n_exports.string = string;\nfunction striptags(input, preserveLinebreaks) {\n input = normalize(input, '');\n var tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>|<!--[\\s\\S]*?-->/gi;\n var trimmedInput = trim(input.replace(tags, ''));\n var res = '';\n if (preserveLinebreaks) {\n res = trimmedInput.replace(/^ +| +$/gm, '') // remove leading and trailing spaces\n .replace(/ +/g, ' ') // squash adjacent spaces\n .replace(/(\\r\\n)/g, '\\n') // normalize linebreaks (CRLF -> LF)\n .replace(/\\n\\n\\n+/g, '\\n\\n'); // squash abnormal adjacent linebreaks\n } else {\n res = trimmedInput.replace(/\\s+/gi, ' ');\n }\n return r.copySafeness(input, res);\n}\n_exports.striptags = striptags;\nfunction title(str) {\n str = normalize(str, '');\n var words = str.split(' ').map(function (word) {\n return capitalize(word);\n });\n return r.copySafeness(str, words.join(' '));\n}\n_exports.title = title;\nfunction trim(str) {\n return r.copySafeness(str, str.replace(/^\\s*|\\s*$/g, ''));\n}\n_exports.trim = trim;\nfunction truncate(input, length, killwords, end) {\n var orig = input;\n input = normalize(input, '');\n length = length || 255;\n if (input.length <= length) {\n return input;\n }\n if (killwords) {\n input = input.substring(0, length);\n } else {\n var idx = input.lastIndexOf(' ', length);\n if (idx === -1) {\n idx = length;\n }\n input = input.substring(0, idx);\n }\n input += end !== undefined && end !== null ? end : '...';\n return r.copySafeness(orig, input);\n}\n_exports.truncate = truncate;\nfunction upper(str) {\n str = normalize(str, '');\n return str.toUpperCase();\n}\n_exports.upper = upper;\nfunction urlencode(obj) {\n var enc = encodeURIComponent;\n if (lib.isString(obj)) {\n return enc(obj);\n } else {\n var keyvals = lib.isArray(obj) ? obj : lib._entries(obj);\n return keyvals.map(function (_ref2) {\n var k = _ref2[0],\n v = _ref2[1];\n return enc(k) + \"=\" + enc(v);\n }).join('&');\n }\n}\n_exports.urlencode = urlencode;\n\n// For the jinja regexp, see\n// https://github.com/mitsuhiko/jinja2/blob/f15b814dcba6aa12bc74d1f7d0c881d55f7126be/jinja2/utils.py#L20-L23\nvar puncRe = /^(?:\\(|<|&lt;)?(.*?)(?:\\.|,|\\)|\\n|&gt;)?$/;\n// from http://blog.gerv.net/2011/05/html5_email_address_regexp/\nvar emailRe = /^[\\w.!#$%&'*+\\-\\/=?\\^`{|}~]+@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)+$/i;\nvar httpHttpsRe = /^https?:\\/\\/.*$/;\nvar wwwRe = /^www\\./;\nvar tldRe = /\\.(?:org|net|com)(?:\\:|\\/|$)/;\nfunction urlize(str, length, nofollow) {\n if (isNaN(length)) {\n length = Infinity;\n }\n var noFollowAttr = nofollow === true ? ' rel=\"nofollow\"' : '';\n var words = str.split(/(\\s+)/).filter(function (word) {\n // If the word has no length, bail. This can happen for str with\n // trailing whitespace.\n return word && word.length;\n }).map(function (word) {\n var matches = word.match(puncRe);\n var possibleUrl = matches ? matches[1] : word;\n var shortUrl = possibleUrl.substr(0, length);\n\n // url that starts with http or https\n if (httpHttpsRe.test(possibleUrl)) {\n return \"<a href=\\\"\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n }\n\n // url that starts with www.\n if (wwwRe.test(possibleUrl)) {\n return \"<a href=\\\"http://\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n }\n\n // an email address of the form username@domain.tld\n if (emailRe.test(possibleUrl)) {\n return \"<a href=\\\"mailto:\" + possibleUrl + \"\\\">\" + possibleUrl + \"</a>\";\n }\n\n // url that ends in .com, .org or .net that is not an email address\n if (tldRe.test(possibleUrl)) {\n return \"<a href=\\\"http://\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n }\n return word;\n });\n return words.join('');\n}\n_exports.urlize = urlize;\nfunction wordcount(str) {\n str = normalize(str, '');\n var words = str ? str.match(/\\w+/g) : null;\n return words ? words.length : null;\n}\n_exports.wordcount = wordcount;\nfunction float(val, def) {\n var res = parseFloat(val);\n return isNaN(res) ? def : res;\n}\n_exports.float = float;\nvar intFilter = r.makeMacro(['value', 'default', 'base'], [], function doInt(value, defaultValue, base) {\n if (base === void 0) {\n base = 10;\n }\n var res = parseInt(value, base);\n return isNaN(res) ? defaultValue : res;\n});\n_exports.int = intFilter;\n\n// Aliases\n_exports.d = _exports.default;\n_exports.e = _exports.escape;","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar path = require('path');\nvar _require = require('./object'),\n EmitterObj = _require.EmitterObj;\nmodule.exports = /*#__PURE__*/function (_EmitterObj) {\n _inheritsLoose(Loader, _EmitterObj);\n function Loader() {\n return _EmitterObj.apply(this, arguments) || this;\n }\n var _proto = Loader.prototype;\n _proto.resolve = function resolve(from, to) {\n return path.resolve(path.dirname(from), to);\n };\n _proto.isRelative = function isRelative(filename) {\n return filename.indexOf('./') === 0 || filename.indexOf('../') === 0;\n };\n return Loader;\n}(EmitterObj);","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar Loader = require('./loader');\nvar PrecompiledLoader = /*#__PURE__*/function (_Loader) {\n _inheritsLoose(PrecompiledLoader, _Loader);\n function PrecompiledLoader(compiledTemplates) {\n var _this;\n _this = _Loader.call(this) || this;\n _this.precompiled = compiledTemplates || {};\n return _this;\n }\n var _proto = PrecompiledLoader.prototype;\n _proto.getSource = function getSource(name) {\n if (this.precompiled[name]) {\n return {\n src: {\n type: 'code',\n obj: this.precompiled[name]\n },\n path: name\n };\n }\n return null;\n };\n return PrecompiledLoader;\n}(Loader);\nmodule.exports = {\n PrecompiledLoader: PrecompiledLoader\n};","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\nconst [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10));\nconst wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5));\n\nconst normalizeFilter = filter => {\n if (filter === undefined) return;\n if (typeof filter === 'function') return filter;\n\n if (typeof filter === 'string') {\n const glob = picomatch(filter.trim());\n return entry => glob(entry.basename);\n }\n\n if (Array.isArray(filter)) {\n const positive = [];\n const negative = [];\n for (const item of filter) {\n const trimmed = item.trim();\n if (trimmed.charAt(0) === BANG) {\n negative.push(picomatch(trimmed.slice(1)));\n } else {\n positive.push(picomatch(trimmed));\n }\n }\n\n if (negative.length > 0) {\n if (positive.length > 0) {\n return entry =>\n positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n }\n return entry => !negative.some(f => f(entry.basename));\n }\n return entry => positive.some(f => f(entry.basename));\n }\n};\n\nclass ReaddirpStream extends Readable {\n static get defaultOptions() {\n return {\n root: '.',\n /* eslint-disable no-unused-vars */\n fileFilter: (path) => true,\n directoryFilter: (path) => true,\n /* eslint-enable no-unused-vars */\n type: FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false\n };\n }\n\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark || 4096\n });\n const opts = { ...ReaddirpStream.defaultOptions, ...options };\n const { root, type } = opts;\n\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (wantBigintFsStats) {\n this._stat = path => statMethod(path, { bigint: true });\n } else {\n this._stat = statMethod;\n }\n\n this._maxDepth = opts.depth;\n this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsEverything = type === EVERYTHING_TYPE;\n this._root = sysPath.resolve(root);\n this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n\n async _read(batch) {\n if (this.reading) return;\n this.reading = true;\n\n try {\n while (!this.destroyed && batch > 0) {\n const { path, depth, files = [] } = this.parent || {};\n\n if (files.length > 0) {\n const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n for (const entry of await Promise.all(slice)) {\n if (this.destroyed) return;\n\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n } else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed) return;\n }\n }\n } catch (error) {\n this.destroy(error);\n } finally {\n this.reading = false;\n }\n }\n\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n } catch (error) {\n this._onError(error);\n }\n return { files, depth, path };\n }\n\n async _formatEntry(dirent, path) {\n let entry;\n try {\n const basename = this._isDirent ? dirent.name : dirent;\n const fullPath = sysPath.resolve(sysPath.join(path, basename));\n entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename };\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n } catch (err) {\n this._onError(err);\n }\n return entry;\n }\n\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n } else {\n this.destroy(err);\n }\n }\n\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n const stats = entry && entry[this._statsProp];\n if (!stats) {\n return;\n }\n if (stats.isFile()) {\n return 'file';\n }\n if (stats.isDirectory()) {\n return 'directory';\n }\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n const recursiveError = new Error(\n `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n );\n recursiveError.code = RECURSIVE_ERROR_CODE;\n return this._onError(recursiveError);\n }\n return 'directory';\n }\n } catch (error) {\n this._onError(error);\n }\n }\n }\n\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n let type = options.entryType || options.type;\n if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n if (type) options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n } else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n } else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n\n options.root = root;\n return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', entry => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', error => reject(error));\n });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n","/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n if (typeof matcher === 'function') {\n return matcher;\n }\n if (typeof matcher === 'string') {\n const glob = picomatch(matcher, options);\n return (string) => matcher === string || glob(string);\n }\n if (matcher instanceof RegExp) {\n return (string) => matcher.test(string);\n }\n return (string) => false;\n};\n\n/**\n * @param {Array<Function>} patterns\n * @param {Array<Function>} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n const isList = Array.isArray(args);\n const _path = isList ? args[0] : args;\n if (!isList && typeof _path !== 'string') {\n throw new TypeError('anymatch: second argument must be a string: got ' +\n Object.prototype.toString.call(_path))\n }\n const path = normalizePath(_path, false);\n\n for (let index = 0; index < negPatterns.length; index++) {\n const nglob = negPatterns[index];\n if (nglob(path)) {\n return returnIndex ? -1 : false;\n }\n }\n\n const applied = isList && [path].concat(args.slice(1));\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (isList ? pattern(...applied) : pattern(path)) {\n return returnIndex ? index : true;\n }\n }\n\n return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n const returnIndex = opts.returnIndex || false;\n\n // Early cache for matchers.\n const mtchers = arrify(matchers);\n const negatedGlobs = mtchers\n .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n .map(item => item.slice(1))\n .map(item => picomatch(item, opts));\n const patterns = mtchers\n .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n .map(matcher => createPattern(matcher, opts));\n\n if (testString == null) {\n return (testString, ri = false) => {\n const returnIndex = typeof ri === 'boolean' ? ri : false;\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n }\n }\n\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n","/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n var pipeIndex = -2;\n var closeSquareIndex = -2;\n var closeCurlyIndex = -2;\n var closeParenIndex = -2;\n var backSlashIndex = -2;\n while (index < str.length) {\n if (str[index] === '*') {\n return true;\n }\n\n if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n return true;\n }\n\n if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n if (closeSquareIndex < index) {\n closeSquareIndex = str.indexOf(']', index);\n }\n if (closeSquareIndex > index) {\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n }\n }\n\n if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n closeCurlyIndex = str.indexOf('}', index);\n if (closeCurlyIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n return true;\n }\n }\n }\n\n if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n closeParenIndex = str.indexOf(')', index);\n if (closeParenIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n\n if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n if (pipeIndex < index) {\n pipeIndex = str.indexOf('|', index);\n }\n if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n closeParenIndex = str.indexOf(')', pipeIndex);\n if (closeParenIndex > pipeIndex) {\n backSlashIndex = str.indexOf('\\\\', pipeIndex);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nvar relaxedCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n while (index < str.length) {\n if (/[*?{}()[\\]]/.test(str[index])) {\n return true;\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var check = strictCheck;\n\n // optionally relax check\n if (options && options.strict === false) {\n check = relaxedCheck;\n }\n\n return check(str);\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n const node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n const ele = arr[i];\n\n if (Array.isArray(ele)) {\n flat(ele);\n continue;\n }\n\n if (ele !== undefined) {\n result.push(ele);\n }\n }\n return result;\n };\n\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n const stringify = (node, parent = {}) => {\n const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options, maxLen)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n const walk = (node, parent = {}) => {\n const invalidBlock = utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n const invalid = invalidBlock === true || invalidNode === true;\n const prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n\n if (node.isClose === true) {\n console.log('node.isClose', prefix, node.value);\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? prefix + node.value : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? prefix + node.value : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += walk(child, node);\n }\n }\n\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n const result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (const item of queue) {\n if (Array.isArray(item)) {\n for (const value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n const walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n const enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n const child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 10000,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n const opts = options || {};\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n const ast = { type: 'root', input, nodes: [] };\n const stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n const length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n const open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n const brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n const type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n const open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n const siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n const before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n const parent = stack[stack.length - 1];\n const index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (const pattern of input) {\n const result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","module.exports = require('./binary-extensions.json');\n","'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n","'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\nconst os = require('os');\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_FLAG_MUST_SCAN_SUBDIRS = 1;\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\nexports.isIBMi = os.type() === 'OS400';\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n isWindows,\n isLinux,\n EMPTY_FN,\n EMPTY_STR,\n KEY_LISTENERS,\n KEY_ERR,\n KEY_RAW,\n HANDLER_KEYS,\n EV_CHANGE,\n EV_ADD,\n EV_ADD_DIR,\n EV_ERROR,\n STR_DATA,\n STR_END,\n BRACE_START,\n STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n } else {\n fn(val);\n }\n};\n\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\n\nconst clearItem = cont => key => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n } else {\n delete cont[key];\n }\n};\n\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n } else if (container === item) {\n delete main[prop];\n }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map<String,FsWatchContainer>}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, {watchedPath: path});\n\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(\n sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n );\n }\n };\n try {\n return fs.watch(path, options, handleEvent);\n } catch (error) {\n errHandler(error);\n }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont) return;\n foreach(cont[type], (listener) => {\n listener(val1, val2, val3);\n });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const {listener, errHandler, rawEmitter} = handlers;\n let cont = FsWatchInstances.get(fullPath);\n\n /** @type {fs.FSWatcher=} */\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(\n path, options, listener, errHandler, rawEmitter\n );\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n watcher = createFsWatchInstance(\n path,\n options,\n fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n );\n if (!watcher) return;\n watcher.on(EV_ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await close(fd);\n broadcastErr(error);\n } catch (err) {}\n } else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const {listener, rawEmitter} = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n\n /* eslint-disable no-unused-vars, prefer-destructuring */\n let listeners = new Set();\n let rawEmitters = new Set();\n\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n listeners = cont.listeners;\n rawEmitters = cont.rawEmitters;\n fs.unwatchFile(fullPath);\n cont = undefined;\n }\n\n /* eslint-enable no-unused-vars, prefer-destructuring */\n\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n })\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n fs.unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {persistent: opts.persistent};\n if (!listener) listener = EMPTY_FN;\n\n let closer;\n if (opts.usePolling) {\n options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw\n });\n } else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw\n });\n }\n return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n\n // if the file is already being watched, do nothing\n if (parent.has(basename)) return;\n\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed) return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n if (isLinux && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path)\n prevStats = newStats;\n this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n } else {\n prevStats = newStats;\n }\n } catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n } else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n }\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n this.fsw._emit(EV_ADD, file, stats);\n }\n\n return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise<Boolean>} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n\n let linkPath;\n try {\n linkPath = await fsrealpath(path);\n } catch (e) {\n this.fsw._emitReady();\n return true;\n }\n\n if (this.fsw.closed) return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_CHANGE, path, entry.stats);\n }\n } else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n\n this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, EMPTY_STR);\n\n if (!wh.hasGlob) {\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler) return;\n }\n\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n\n let stream = this.fsw._readdirp(directory, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n depth: 0\n }).on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n\n if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n return;\n }\n\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || !target && !previous.has(item)) {\n this.fsw._incrReadyCount();\n\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n }).on(EV_ERROR, this._boundHandleError);\n\n return new Promise(resolve =>\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n\n resolve();\n\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous.getChildren().filter((item) => {\n return item !== directory &&\n !current.has(item) &&\n // in case of intersecting globs;\n // a path may have been filtered out of this readdir, but\n // shouldn't be removed because it matches a different glob\n (!wh.hasGlob || wh.filterPath({\n fullPath: sysPath.resolve(directory, item)\n }));\n }).forEach((item) => {\n this.fsw._remove(directory, item);\n });\n\n stream = undefined;\n\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n })\n );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise<Function>} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n }\n\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed) return;\n }\n\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0) return;\n\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n\n const wh = this.fsw._getWatchHelpers(path, depth);\n if (!wh.hasGlob && priorWh) {\n wh.hasGlob = priorWh.hasGlob;\n wh.globFilter = priorWh.globFilter;\n wh.filterPath = entry => priorWh.filterPath(entry);\n wh.filterDir = entry => priorWh.filterDir(entry);\n }\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n\n const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed) return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n } else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV_ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed) return;\n\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n } else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n\n this.fsw._addPathCloser(path, closer);\n return false;\n\n } catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n fsevents = require('fsevents');\n} catch (error) {\n if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n // TODO: real check\n const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n if (mtch && mtch[1] && mtch[2]) {\n const maj = Number.parseInt(mtch[1], 10);\n const min = Number.parseInt(mtch[2], 10);\n if (maj === 8 && min < 16) {\n fsevents = undefined;\n }\n }\n}\n\nconst {\n EV_ADD,\n EV_CHANGE,\n EV_ADD_DIR,\n EV_UNLINK,\n EV_ERROR,\n STR_DATA,\n STR_END,\n FSEVENT_CREATED,\n FSEVENT_MODIFIED,\n FSEVENT_DELETED,\n FSEVENT_MOVED,\n // FSEVENT_CLONED,\n FSEVENT_UNKNOWN,\n FSEVENT_FLAG_MUST_SCAN_SUBDIRS,\n FSEVENT_TYPE_FILE,\n FSEVENT_TYPE_DIRECTORY,\n FSEVENT_TYPE_SYMLINK,\n\n ROOT_GLOBSTAR,\n DIR_SUFFIX,\n DOT_SLASH,\n FUNCTION_TYPE,\n EMPTY_FN,\n IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set<Function>} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map<Path,FsEventsWatchContainer>}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n const stop = fsevents.watch(path, callback);\n return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path - to be watched\n * @param {Path} realPath - real path for symlinks\n * @param {Function} listener - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath;\n\n const parentPath = sysPath.dirname(watchPath);\n let cont = FSEventsWatchers.get(watchPath);\n\n // If we've accumulated a substantial number of paths that\n // could have been consolidated by watching one directory\n // above the current one, create a watcher on the parent\n // path instead, so that we do consolidate going forward.\n if (couldConsolidate(parentPath)) {\n watchPath = parentPath;\n }\n\n const resolvedPath = sysPath.resolve(path);\n const hasSymlink = resolvedPath !== realPath;\n\n const filteredListener = (fullPath, flags, info) => {\n if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n if (\n fullPath === resolvedPath ||\n !fullPath.indexOf(resolvedPath + sysPath.sep)\n ) listener(fullPath, flags, info);\n };\n\n // check if there is already a watcher on a parent path\n // modifies `watchPath` to the parent path when it finds a match\n let watchedParent = false;\n for (const watchedPath of FSEventsWatchers.keys()) {\n if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n watchPath = watchedPath;\n cont = FSEventsWatchers.get(watchPath);\n watchedParent = true;\n break;\n }\n }\n\n if (cont || watchedParent) {\n cont.listeners.add(filteredListener);\n } else {\n cont = {\n listeners: new Set([filteredListener]),\n rawEmitter,\n watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n if (!cont.listeners.size) return;\n if (flags & FSEVENT_FLAG_MUST_SCAN_SUBDIRS) return;\n const info = fsevents.getInfo(fullPath, flags);\n cont.listeners.forEach(list => {\n list(fullPath, flags, info);\n });\n\n cont.rawEmitter(info.event, fullPath, info);\n })\n };\n FSEventsWatchers.set(watchPath, cont);\n }\n\n // removes this instance's listeners and closes the underlying fsevents\n // instance if there are no more listeners left\n return () => {\n const lst = cont.listeners;\n\n lst.delete(filteredListener);\n if (!lst.size) {\n FSEventsWatchers.delete(watchPath);\n if (cont.watcher) return cont.watcher.stop().then(() => {\n cont.rawEmitter = cont.watcher = undefined;\n Object.freeze(cont);\n });\n }\n };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n let count = 0;\n for (const watchPath of FSEventsWatchers.keys()) {\n if (watchPath.indexOf(path) === 0) {\n count++;\n if (count >= consolidateThreshhold) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n let i = 0;\n while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n const ipaths = this.fsw._ignoredPaths;\n if (this.fsw._isIgnored(path, stats)) {\n ipaths.add(path);\n if (stats && stats.isDirectory()) {\n ipaths.add(path + ROOT_GLOBSTAR);\n }\n return true;\n }\n\n ipaths.delete(path);\n ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n try {\n const stats = await stat(path)\n if (this.fsw.closed) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } catch (error) {\n if (error.code === 'EACCES') {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n if (this.fsw.closed || this.checkIgnored(path)) return;\n\n if (event === EV_UNLINK) {\n const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n // suppress unlink events on never before seen files\n if (isDirectory || watchedDir.has(item)) {\n this.fsw._remove(parent, item, isDirectory);\n }\n } else {\n if (event === EV_ADD) {\n // track new directories\n if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n // push symlinks back to the top of the stack to get handled\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(fullPath, realPath) + 1;\n return this._addToFsEvents(path, false, true, curDepth);\n }\n\n // track new paths\n // (other than symlinks being followed, which will be tracked soon)\n this.fsw._getWatchedDir(parent).add(item);\n }\n /**\n * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n */\n const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n this.fsw._emit(eventName, path);\n if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath - file/dir path to be watched with fsevents\n * @param {String} realPath - real path (in case of symlinks)\n * @param {Function} transform - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n const opts = this.fsw.options;\n const watchCallback = async (fullPath, flags, info) => {\n if (this.fsw.closed) return;\n if (\n opts.depth !== undefined &&\n calcDepth(fullPath, realPath) > opts.depth\n ) return;\n const path = transform(sysPath.join(\n watchPath, sysPath.relative(watchPath, fullPath)\n ));\n if (globFilter && !globFilter(path)) return;\n // ensure directories are tracked\n const parent = sysPath.dirname(path);\n const item = sysPath.basename(path);\n const watchedDir = this.fsw._getWatchedDir(\n info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n );\n\n // correct for wrong events emitted\n if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n if (typeof opts.ignored === FUNCTION_TYPE) {\n let stats;\n try {\n stats = await stat(path);\n } catch (error) {}\n if (this.fsw.closed) return;\n if (this.checkIgnored(path, stats)) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n switch (info.event) {\n case FSEVENT_CREATED:\n case FSEVENT_MODIFIED:\n return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n case FSEVENT_DELETED:\n case FSEVENT_MOVED:\n return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n };\n\n const closer = setFSEventsListener(\n watchPath,\n realPath,\n watchCallback,\n this.fsw._emitRaw\n );\n\n this.fsw._emitReady();\n return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise<void>}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n // don't follow the same symlink more than once\n if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n this.fsw._symlinkPaths.set(fullPath, true);\n this.fsw._incrReadyCount();\n\n try {\n const linkTarget = await realpath(linkPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(linkTarget)) {\n return this.fsw._emitReady();\n }\n\n this.fsw._incrReadyCount();\n\n // add the linkTarget for watching with a wrapper for transform\n // that causes emitted paths to incorporate the link's path\n this._addToFsEvents(linkTarget || linkPath, (path) => {\n let aliasedPath = linkPath;\n if (linkTarget && linkTarget !== DOT_SLASH) {\n aliasedPath = path.replace(linkTarget, linkPath);\n } else if (path !== DOT_SLASH) {\n aliasedPath = sysPath.join(linkPath, path);\n }\n return transform(aliasedPath);\n }, false, curDepth);\n } catch(error) {\n if (this.fsw._handleError(error)) {\n return this.fsw._emitReady();\n }\n }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n const pp = processPath(newPath);\n const isDir = stats.isDirectory();\n const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n const base = sysPath.basename(pp);\n\n // ensure empty dirs get tracked\n if (isDir) this.fsw._getWatchedDir(pp);\n if (dirObj.has(base)) return;\n dirObj.add(base);\n\n if (!opts.ignoreInitial || forceAdd === true) {\n this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n if (this.fsw.closed) return;\n const closer = this._watchWithFsEvents(\n wh.watchPath,\n sysPath.resolve(realPath || wh.watchPath),\n processPath,\n wh.globFilter\n );\n this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise<void>}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n if (this.fsw.closed) {\n return;\n }\n const opts = this.fsw.options;\n const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n const wh = this.fsw._getWatchHelpers(path);\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n throw null;\n }\n if (stats.isDirectory()) {\n // emit addDir unless this is a glob parent\n if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n // don't recurse further if it would exceed depth setting\n if (priorDepth && priorDepth > opts.depth) return;\n\n // scan the contents of the dir\n this.fsw._readdirp(wh.watchPath, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n ...Depth(opts.depth - (priorDepth || 0))\n }).on(STR_DATA, (entry) => {\n // need to check filterPath on dirs b/c filterDir is less restrictive\n if (this.fsw.closed) {\n return;\n }\n if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n const joinedPath = sysPath.join(wh.watchPath, entry.path);\n const {fullPath} = entry;\n\n if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n // preserve the current depth here since it can't be derived from\n // real paths past the symlink\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n } else {\n this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n }\n }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n this.fsw._emitReady();\n });\n } else {\n this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n this.fsw._emitReady();\n }\n } catch (error) {\n if (!error || this.fsw._handleError(error)) {\n // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n this.fsw._emitReady();\n this.fsw._emitReady();\n }\n }\n\n if (opts.persistent && forceAdd !== true) {\n if (typeof transform === FUNCTION_TYPE) {\n // realpath has already been resolved\n this.initWatch(undefined, path, wh, processPath);\n } else {\n let realPath;\n try {\n realPath = await realpath(wh.watchPath);\n } catch (e) {}\n this.initWatch(realPath, path, wh, processPath);\n }\n }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n","'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n EV_ALL,\n EV_READY,\n EV_ADD,\n EV_CHANGE,\n EV_UNLINK,\n EV_ADD_DIR,\n EV_UNLINK_DIR,\n EV_RAW,\n EV_ERROR,\n\n STR_CLOSE,\n STR_END,\n\n BACK_SLASH_RE,\n DOUBLE_SLASH_RE,\n SLASH_OR_BACK_SLASH_RE,\n DOT_RE,\n REPLACER_RE,\n\n SLASH,\n SLASH_SLASH,\n BRACE_START,\n BANG,\n ONE_DOT,\n TWO_DOTS,\n GLOBSTAR,\n SLASH_GLOBSTAR,\n ANYMATCH_OPTS,\n STRING_TYPE,\n FUNCTION_TYPE,\n EMPTY_STR,\n EMPTY_FN,\n\n isWindows,\n isMacos,\n isIBMi\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n list.forEach(item => {\n if (Array.isArray(item)) {\n flatten(item, result);\n } else {\n result.push(item);\n }\n });\n return result;\n};\n\nconst unifyPaths = (paths_) => {\n /**\n * @type {Array<String>}\n */\n const paths = flatten(arrify(paths_));\n if (!paths.every(p => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n if (typeof path !== STRING_TYPE) return path;\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n if (path.startsWith(BANG)) {\n return BANG + sysPath.join(cwd, path.slice(1));\n }\n return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set<Path>} items\n */\nclass DirEntry {\n /**\n * @param {Path} dir\n * @param {Function} removeWatcher\n */\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n /** @type {Set<Path>} */\n this.items = new Set();\n }\n\n add(item) {\n const {items} = this;\n if (!items) return;\n if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n }\n\n async remove(item) {\n const {items} = this;\n if (!items) return;\n items.delete(item);\n if (items.size > 0) return;\n\n const dir = this.path;\n try {\n await readdir(dir);\n } catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n\n has(item) {\n const {items} = this;\n if (!items) return;\n return items.has(item);\n }\n\n /**\n * @returns {Array<String>}\n */\n getChildren() {\n const {items} = this;\n if (!items) return;\n return [...items.values()];\n }\n\n dispose() {\n this.items.clear();\n delete this.path;\n delete this._removeWatcher;\n delete this.items;\n Object.freeze(this);\n }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n constructor(path, watchPath, follow, fsw) {\n this.fsw = fsw;\n this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.hasGlob = watchPath !== path;\n /** @type {object|boolean} */\n if (path === EMPTY_STR) this.hasGlob = false;\n this.globSymlink = this.hasGlob && follow ? undefined : false;\n this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n this.dirParts = this.getDirParts(path);\n this.dirParts.forEach((parts) => {\n if (parts.length > 1) parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n\n checkGlobSymlink(entry) {\n // only need to resolve once\n // first entry should always have entry.parentDir === EMPTY_STR\n if (this.globSymlink === undefined) {\n this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n }\n\n if (this.globSymlink) {\n return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n }\n\n return entry.fullPath;\n }\n\n entryPath(entry) {\n return sysPath.join(this.watchPath,\n sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n );\n }\n\n filterPath(entry) {\n const {stats} = entry;\n if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n this.globFilter(resolvedPath) : true;\n return matchesGlob &&\n this.fsw._isntIgnored(resolvedPath, stats) &&\n this.fsw._hasReadPermissions(stats);\n }\n\n getDirParts(path) {\n if (!this.hasGlob) return [];\n const parts = [];\n const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n expandedPath.forEach((path) => {\n parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n });\n return parts;\n }\n\n filterDir(entry) {\n if (this.hasGlob) {\n const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n let globstar = false;\n this.unmatchedGlob = !this.dirParts.some((parts) => {\n return parts.every((part, i) => {\n if (part === GLOBSTAR) globstar = true;\n return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n });\n });\n }\n return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n super();\n\n const opts = {};\n if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n /** @type {Map<String, DirEntry>} */\n this._watched = new Map();\n /** @type {Map<String, Array>} */\n this._closers = new Map();\n /** @type {Set<String>} */\n this._ignoredPaths = new Set();\n\n /** @type {Map<ThrottleType, Map>} */\n this._throttled = new Map();\n\n /** @type {Map<Path, String|Boolean>} */\n this._symlinkPaths = new Map();\n\n this._streams = new Set();\n this.closed = false;\n\n // Set up default options.\n if (undef(opts, 'persistent')) opts.persistent = true;\n if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n if (undef(opts, 'interval')) opts.interval = 100;\n if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n // Enable fsevents on OS X when polling isn't explicitly enabled.\n if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n // If we can't use fsevents, ensure the options reflect it's disabled.\n const canUseFsEvents = FsEventsHandler.canUse();\n if (!canUseFsEvents) opts.useFsEvents = false;\n\n // Use polling on Mac if not using fsevents.\n // Other platforms use non-polling fs_watch.\n if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n opts.usePolling = isMacos;\n }\n\n // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n if(isIBMi) {\n opts.usePolling = true;\n }\n\n // Global override (useful for end-developers that need to force polling for all\n // instances of chokidar, regardless of usage/dependency depth)\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n\n if (envLower === 'false' || envLower === '0') {\n opts.usePolling = false;\n } else if (envLower === 'true' || envLower === '1') {\n opts.usePolling = true;\n } else {\n opts.usePolling = !!envLower;\n }\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval) {\n opts.interval = Number.parseInt(envInterval, 10);\n }\n\n // Editor atomic write normalization enabled by default with fs.watch\n if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n if (opts.atomic) this._pendingUnlinks = new Map();\n\n if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n const awf = opts.awaitWriteFinish;\n if (awf) {\n if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n if (!awf.pollInterval) awf.pollInterval = 100;\n this._pendingWrites = new Map();\n }\n if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV_READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n this._readyEmitted = false;\n this.options = opts;\n\n // Initialize with proper watcher.\n if (opts.useFsEvents) {\n this._fsEventsHandler = new FsEventsHandler(this);\n } else {\n this._nodeFsHandler = new NodeFsHandler(this);\n }\n\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array<Path>} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n const {cwd, disableGlobbing} = this.options;\n this.closed = false;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n if (disableGlobbing || !isGlob(path)) {\n return absPath;\n }\n return normalizePath(absPath);\n });\n }\n\n // set aside negated glob strings\n paths = paths.filter((path) => {\n if (path.startsWith(BANG)) {\n this._ignoredPaths.add(path.slice(1));\n return false;\n }\n\n // if a path is being added that was previously ignored, stop ignoring it\n this._ignoredPaths.delete(path);\n this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n\n return true;\n });\n\n if (this.options.useFsEvents && this._fsEventsHandler) {\n if (!this._readyCount) this._readyCount = paths.length;\n if (this.options.persistent) this._readyCount += paths.length;\n paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n } else {\n if (!this._readyCount) this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(\n paths.map(async path => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n if (res) this._emitReady();\n return res;\n })\n ).then(results => {\n if (this.closed) return;\n results.filter(item => item).forEach(item => {\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n }\n\n return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n if (this.closed) return this;\n const paths = unifyPaths(paths_);\n const {cwd} = this.options;\n\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd) path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n\n this._closePath(path);\n\n this._ignoredPaths.add(path);\n if (this._watched.has(path)) {\n this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n }\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n\n return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise<void>}.\n*/\nclose() {\n if (this.closed) return this._closePromise;\n this.closed = true;\n\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach(closerList => closerList.forEach(closer => {\n const promise = closer();\n if (promise instanceof Promise) closers.push(promise);\n }));\n this._streams.forEach(stream => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach(dirent => dirent.dispose());\n ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n this[`_${key}`].clear();\n });\n\n this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n watchList[key || ONE_DOT] = entry.getChildren().sort();\n });\n return watchList;\n}\n\nemitWithAll(event, args) {\n this.emit(...args);\n if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n if (this.closed) return;\n\n const opts = this.options;\n if (isWindows) path = sysPath.normalize(path);\n if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n /** @type Array<any> */\n const args = [event, path];\n if (val3 !== undefined) args.push(val1, val2, val3);\n else if (val2 !== undefined) args.push(val1, val2);\n else if (val1 !== undefined) args.push(val1);\n\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n\n if (opts.atomic) {\n if (event === EV_UNLINK) {\n this._pendingUnlinks.set(path, args);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV_ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n event = args[0] = EV_CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n\n if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = args[0] = EV_ERROR;\n args[1] = err;\n this.emitWithAll(event, args);\n } else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 2) {\n args[2] = stats;\n } else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n\n if (event === EV_CHANGE) {\n const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n if (isThrottled) return this;\n }\n\n if (opts.alwaysStat && val1 === undefined &&\n (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n ) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n } catch (err) {}\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed) return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n\n return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n const code = error && error.code;\n if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n ) {\n this.emit(EV_ERROR, error);\n }\n return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n\n /** @type {Map<Path, Object>} */\n const action = this._throttled.get(actionType);\n /** @type {Object} */\n const actionPath = action.get(path);\n\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item) clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = {timeoutObject, clear, count: 0};\n action.set(path, thr);\n return thr;\n}\n\n_incrReadyCount() {\n return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n let timeoutHandler;\n\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n\n const now = new Date();\n\n const awaitWriteFinish = (prevStat) => {\n fs.stat(fullPath, (err, curStat) => {\n if (err || !this._pendingWrites.has(path)) {\n if (err && err.code !== 'ENOENT') awfEmit(err);\n return;\n }\n\n const now = Number(new Date());\n\n if (prevStat && curStat.size !== prevStat.size) {\n this._pendingWrites.get(path).lastChange = now;\n }\n const pw = this._pendingWrites.get(path);\n const df = now - pw.lastChange;\n\n if (df >= threshold) {\n this._pendingWrites.delete(path);\n awfEmit(undefined, curStat);\n } else {\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval,\n curStat\n );\n }\n });\n };\n\n if (!this._pendingWrites.has(path)) {\n this._pendingWrites.set(path, {\n lastChange: now,\n cancelWait: () => {\n this._pendingWrites.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n }\n });\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval\n );\n }\n}\n\n_getGlobIgnored() {\n return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path)) return true;\n if (!this._userIgnored) {\n const {cwd} = this.options;\n const ign = this.options.ignored;\n\n const ignored = ign && ign.map(normalizeIgnored(cwd));\n const paths = arrify(ignored)\n .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n .map((path) => path + SLASH_GLOBSTAR);\n const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n }\n\n return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n const follow = this.options.followSymlinks;\n\n return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors) return true;\n\n // stats.mode may be bigint\n const md = stats && Number.parseInt(stats.mode, 10);\n const st = md & 0o777;\n const it = Number.parseInt(st.toString(8)[0], 10);\n return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory = isDirectory != null\n ? isDirectory\n : this._watched.has(path) || this._watched.has(fullPath);\n\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100)) return;\n\n // if the only watched file is removed, watch for its return\n if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV_ADD) return;\n }\n\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n // Avoid conflicts if we later create another file with the same name\n if (!this.options.useFsEvents) {\n this._closePath(path);\n }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n this._closeFile(path)\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers) return;\n closers.forEach(closer => closer());\n this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n if (!closer) return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n}\n\n_readdirp(root, opts) {\n if (this.closed) return;\n const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array<String>} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n};\n\nexports.watch = watch;\n","/* eslint-disable no-console */\n\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar fs = require('fs');\nvar path = require('path');\nvar Loader = require('./loader');\nvar _require = require('./precompiled-loader.js'),\n PrecompiledLoader = _require.PrecompiledLoader;\nvar chokidar;\nvar FileSystemLoader = /*#__PURE__*/function (_Loader) {\n _inheritsLoose(FileSystemLoader, _Loader);\n function FileSystemLoader(searchPaths, opts) {\n var _this;\n _this = _Loader.call(this) || this;\n if (typeof opts === 'boolean') {\n console.log('[nunjucks] Warning: you passed a boolean as the second ' + 'argument to FileSystemLoader, but it now takes an options ' + 'object. See http://mozilla.github.io/nunjucks/api.html#filesystemloader');\n }\n opts = opts || {};\n _this.pathsToNames = {};\n _this.noCache = !!opts.noCache;\n if (searchPaths) {\n searchPaths = Array.isArray(searchPaths) ? searchPaths : [searchPaths];\n // For windows, convert to forward slashes\n _this.searchPaths = searchPaths.map(path.normalize);\n } else {\n _this.searchPaths = ['.'];\n }\n if (opts.watch) {\n // Watch all the templates in the paths and fire an event when\n // they change\n try {\n chokidar = require('chokidar'); // eslint-disable-line global-require\n } catch (e) {\n throw new Error('watch requires chokidar to be installed');\n }\n var paths = _this.searchPaths.filter(fs.existsSync);\n var watcher = chokidar.watch(paths);\n watcher.on('all', function (event, fullname) {\n fullname = path.resolve(fullname);\n if (event === 'change' && fullname in _this.pathsToNames) {\n _this.emit('update', _this.pathsToNames[fullname], fullname);\n }\n });\n watcher.on('error', function (error) {\n console.log('Watcher error: ' + error);\n });\n }\n return _this;\n }\n var _proto = FileSystemLoader.prototype;\n _proto.getSource = function getSource(name) {\n var fullpath = null;\n var paths = this.searchPaths;\n for (var i = 0; i < paths.length; i++) {\n var basePath = path.resolve(paths[i]);\n var p = path.resolve(paths[i], name);\n\n // Only allow the current directory and anything\n // underneath it to be searched\n if (p.indexOf(basePath) === 0 && fs.existsSync(p)) {\n fullpath = p;\n break;\n }\n }\n if (!fullpath) {\n return null;\n }\n this.pathsToNames[fullpath] = name;\n var source = {\n src: fs.readFileSync(fullpath, 'utf-8'),\n path: fullpath,\n noCache: this.noCache\n };\n this.emit('load', name, source);\n return source;\n };\n return FileSystemLoader;\n}(Loader);\nvar NodeResolveLoader = /*#__PURE__*/function (_Loader2) {\n _inheritsLoose(NodeResolveLoader, _Loader2);\n function NodeResolveLoader(opts) {\n var _this2;\n _this2 = _Loader2.call(this) || this;\n opts = opts || {};\n _this2.pathsToNames = {};\n _this2.noCache = !!opts.noCache;\n if (opts.watch) {\n try {\n chokidar = require('chokidar'); // eslint-disable-line global-require\n } catch (e) {\n throw new Error('watch requires chokidar to be installed');\n }\n _this2.watcher = chokidar.watch();\n _this2.watcher.on('change', function (fullname) {\n _this2.emit('update', _this2.pathsToNames[fullname], fullname);\n });\n _this2.watcher.on('error', function (error) {\n console.log('Watcher error: ' + error);\n });\n _this2.on('load', function (name, source) {\n _this2.watcher.add(source.path);\n });\n }\n return _this2;\n }\n var _proto2 = NodeResolveLoader.prototype;\n _proto2.getSource = function getSource(name) {\n // Don't allow file-system traversal\n if (/^\\.?\\.?(\\/|\\\\)/.test(name)) {\n return null;\n }\n if (/^[A-Z]:/.test(name)) {\n return null;\n }\n var fullpath;\n try {\n fullpath = require.resolve(name);\n } catch (e) {\n return null;\n }\n this.pathsToNames[fullpath] = name;\n var source = {\n src: fs.readFileSync(fullpath, 'utf-8'),\n path: fullpath,\n noCache: this.noCache\n };\n this.emit('load', name, source);\n return source;\n };\n return NodeResolveLoader;\n}(Loader);\nmodule.exports = {\n FileSystemLoader: FileSystemLoader,\n PrecompiledLoader: PrecompiledLoader,\n NodeResolveLoader: NodeResolveLoader\n};","\"use strict\";\n\n// This file will automatically be rewired to web-loader.js when\n// building for the browser\nmodule.exports = require('./node-loaders');","'use strict';\n\nvar SafeString = require('./runtime').SafeString;\n\n/**\n * Returns `true` if the object is a function, otherwise `false`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction callable(value) {\n return typeof value === 'function';\n}\nexports.callable = callable;\n\n/**\n * Returns `true` if the object is strictly not `undefined`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction defined(value) {\n return value !== undefined;\n}\nexports.defined = defined;\n\n/**\n * Returns `true` if the operand (one) is divisble by the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction divisibleby(one, two) {\n return one % two === 0;\n}\nexports.divisibleby = divisibleby;\n\n/**\n * Returns true if the string has been escaped (i.e., is a SafeString).\n * @param { any } value\n * @returns { boolean }\n */\nfunction escaped(value) {\n return value instanceof SafeString;\n}\nexports.escaped = escaped;\n\n/**\n * Returns `true` if the arguments are strictly equal.\n * @param { any } one\n * @param { any } two\n */\nfunction equalto(one, two) {\n return one === two;\n}\nexports.equalto = equalto;\n\n// Aliases\nexports.eq = exports.equalto;\nexports.sameas = exports.equalto;\n\n/**\n * Returns `true` if the value is evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction even(value) {\n return value % 2 === 0;\n}\nexports.even = even;\n\n/**\n * Returns `true` if the value is falsy - if I recall correctly, '', 0, false,\n * undefined, NaN or null. I don't know if we should stick to the default JS\n * behavior or attempt to replicate what Python believes should be falsy (i.e.,\n * empty arrays, empty dicts, not 0...).\n * @param { any } value\n * @returns { boolean }\n */\nfunction falsy(value) {\n return !value;\n}\nexports.falsy = falsy;\n\n/**\n * Returns `true` if the operand (one) is greater or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ge(one, two) {\n return one >= two;\n}\nexports.ge = ge;\n\n/**\n * Returns `true` if the operand (one) is greater than the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction greaterthan(one, two) {\n return one > two;\n}\nexports.greaterthan = greaterthan;\n\n// alias\nexports.gt = exports.greaterthan;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction le(one, two) {\n return one <= two;\n}\nexports.le = le;\n\n/**\n * Returns `true` if the operand (one) is less than the test's passed argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction lessthan(one, two) {\n return one < two;\n}\nexports.lessthan = lessthan;\n\n// alias\nexports.lt = exports.lessthan;\n\n/**\n * Returns `true` if the string is lowercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction lower(value) {\n return value.toLowerCase() === value;\n}\nexports.lower = lower;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ne(one, two) {\n return one !== two;\n}\nexports.ne = ne;\n\n/**\n * Returns true if the value is strictly equal to `null`.\n * @param { any }\n * @returns { boolean }\n */\nfunction nullTest(value) {\n return value === null;\n}\nexports.null = nullTest;\n\n/**\n * Returns true if value is a number.\n * @param { any }\n * @returns { boolean }\n */\nfunction number(value) {\n return typeof value === 'number';\n}\nexports.number = number;\n\n/**\n * Returns `true` if the value is *not* evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction odd(value) {\n return value % 2 === 1;\n}\nexports.odd = odd;\n\n/**\n * Returns `true` if the value is a string, `false` if not.\n * @param { any } value\n * @returns { boolean }\n */\nfunction string(value) {\n return typeof value === 'string';\n}\nexports.string = string;\n\n/**\n * Returns `true` if the value is not in the list of things considered falsy:\n * '', null, undefined, 0, NaN and false.\n * @param { any } value\n * @returns { boolean }\n */\nfunction truthy(value) {\n return !!value;\n}\nexports.truthy = truthy;\n\n/**\n * Returns `true` if the value is undefined.\n * @param { any } value\n * @returns { boolean }\n */\nfunction undefinedTest(value) {\n return value === undefined;\n}\nexports.undefined = undefinedTest;\n\n/**\n * Returns `true` if the string is uppercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction upper(value) {\n return value.toUpperCase() === value;\n}\nexports.upper = upper;\n\n/**\n * If ES6 features are available, returns `true` if the value implements the\n * `Symbol.iterator` method. If not, it's a string or Array.\n *\n * Could potentially cause issues if a browser exists that has Set and Map but\n * not Symbol.\n *\n * @param { any } value\n * @returns { boolean }\n */\nfunction iterable(value) {\n if (typeof Symbol !== 'undefined') {\n return !!value[Symbol.iterator];\n } else {\n return Array.isArray(value) || typeof value === 'string';\n }\n}\nexports.iterable = iterable;\n\n/**\n * If ES6 features are available, returns `true` if the value is an object hash\n * or an ES6 Map. Otherwise just return if it's an object hash.\n * @param { any } value\n * @returns { boolean }\n */\nfunction mapping(value) {\n // only maps and object hashes\n var bool = value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value);\n if (Set) {\n return bool && !(value instanceof Set);\n } else {\n return bool;\n }\n}\nexports.mapping = mapping;","'use strict';\n\nfunction _cycler(items) {\n var index = -1;\n return {\n current: null,\n reset: function reset() {\n index = -1;\n this.current = null;\n },\n next: function next() {\n index++;\n if (index >= items.length) {\n index = 0;\n }\n this.current = items[index];\n return this.current;\n }\n };\n}\nfunction _joiner(sep) {\n sep = sep || ',';\n var first = true;\n return function () {\n var val = first ? '' : sep;\n first = false;\n return val;\n };\n}\n\n// Making this a function instead so it returns a new object\n// each time it's called. That way, if something like an environment\n// uses it, they will each have their own copy.\nfunction globals() {\n return {\n range: function range(start, stop, step) {\n if (typeof stop === 'undefined') {\n stop = start;\n start = 0;\n step = 1;\n } else if (!step) {\n step = 1;\n }\n var arr = [];\n if (step > 0) {\n for (var i = start; i < stop; i += step) {\n arr.push(i);\n }\n } else {\n for (var _i = start; _i > stop; _i += step) {\n // eslint-disable-line for-direction\n arr.push(_i);\n }\n }\n return arr;\n },\n cycler: function cycler() {\n return _cycler(Array.prototype.slice.call(arguments));\n },\n joiner: function joiner(sep) {\n return _joiner(sep);\n }\n };\n}\nmodule.exports = globals;","\"use strict\";\n\nvar path = require('path');\nmodule.exports = function express(env, app) {\n function NunjucksView(name, opts) {\n this.name = name;\n this.path = name;\n this.defaultEngine = opts.defaultEngine;\n this.ext = path.extname(name);\n if (!this.ext && !this.defaultEngine) {\n throw new Error('No default engine was specified and no extension was provided.');\n }\n if (!this.ext) {\n this.name += this.ext = (this.defaultEngine[0] !== '.' ? '.' : '') + this.defaultEngine;\n }\n }\n NunjucksView.prototype.render = function render(opts, cb) {\n env.render(this.name, opts, cb);\n };\n app.set('view', NunjucksView);\n app.set('nunjucksEnv', env);\n return env;\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar asap = require('asap');\nvar _waterfall = require('a-sync-waterfall');\nvar lib = require('./lib');\nvar compiler = require('./compiler');\nvar filters = require('./filters');\nvar _require = require('./loaders'),\n FileSystemLoader = _require.FileSystemLoader,\n WebLoader = _require.WebLoader,\n PrecompiledLoader = _require.PrecompiledLoader;\nvar tests = require('./tests');\nvar globals = require('./globals');\nvar _require2 = require('./object'),\n Obj = _require2.Obj,\n EmitterObj = _require2.EmitterObj;\nvar globalRuntime = require('./runtime');\nvar handleError = globalRuntime.handleError,\n Frame = globalRuntime.Frame;\nvar expressApp = require('./express-app');\n\n// If the user is using the async API, *always* call it\n// asynchronously even if the template was synchronous.\nfunction callbackAsap(cb, err, res) {\n asap(function () {\n cb(err, res);\n });\n}\n\n/**\n * A no-op template, for use with {% include ignore missing %}\n */\nvar noopTmplSrc = {\n type: 'code',\n obj: {\n root: function root(env, context, frame, runtime, cb) {\n try {\n cb(null, '');\n } catch (e) {\n cb(handleError(e, null, null));\n }\n }\n }\n};\nvar Environment = /*#__PURE__*/function (_EmitterObj) {\n _inheritsLoose(Environment, _EmitterObj);\n function Environment() {\n return _EmitterObj.apply(this, arguments) || this;\n }\n var _proto = Environment.prototype;\n _proto.init = function init(loaders, opts) {\n var _this = this;\n // The dev flag determines the trace that'll be shown on errors.\n // If set to true, returns the full trace from the error point,\n // otherwise will return trace starting from Template.render\n // (the full trace from within nunjucks may confuse developers using\n // the library)\n // defaults to false\n opts = this.opts = opts || {};\n this.opts.dev = !!opts.dev;\n\n // The autoescape flag sets global autoescaping. If true,\n // every string variable will be escaped by default.\n // If false, strings can be manually escaped using the `escape` filter.\n // defaults to true\n this.opts.autoescape = opts.autoescape != null ? opts.autoescape : true;\n\n // If true, this will make the system throw errors if trying\n // to output a null or undefined value\n this.opts.throwOnUndefined = !!opts.throwOnUndefined;\n this.opts.trimBlocks = !!opts.trimBlocks;\n this.opts.lstripBlocks = !!opts.lstripBlocks;\n this.loaders = [];\n if (!loaders) {\n // The filesystem loader is only available server-side\n if (FileSystemLoader) {\n this.loaders = [new FileSystemLoader('views')];\n } else if (WebLoader) {\n this.loaders = [new WebLoader('/views')];\n }\n } else {\n this.loaders = lib.isArray(loaders) ? loaders : [loaders];\n }\n\n // It's easy to use precompiled templates: just include them\n // before you configure nunjucks and this will automatically\n // pick it up and use it\n if (typeof window !== 'undefined' && window.nunjucksPrecompiled) {\n this.loaders.unshift(new PrecompiledLoader(window.nunjucksPrecompiled));\n }\n this._initLoaders();\n this.globals = globals();\n this.filters = {};\n this.tests = {};\n this.asyncFilters = [];\n this.extensions = {};\n this.extensionsList = [];\n lib._entries(filters).forEach(function (_ref) {\n var name = _ref[0],\n filter = _ref[1];\n return _this.addFilter(name, filter);\n });\n lib._entries(tests).forEach(function (_ref2) {\n var name = _ref2[0],\n test = _ref2[1];\n return _this.addTest(name, test);\n });\n };\n _proto._initLoaders = function _initLoaders() {\n var _this2 = this;\n this.loaders.forEach(function (loader) {\n // Caching and cache busting\n loader.cache = {};\n if (typeof loader.on === 'function') {\n loader.on('update', function (name, fullname) {\n loader.cache[name] = null;\n _this2.emit('update', name, fullname, loader);\n });\n loader.on('load', function (name, source) {\n _this2.emit('load', name, source, loader);\n });\n }\n });\n };\n _proto.invalidateCache = function invalidateCache() {\n this.loaders.forEach(function (loader) {\n loader.cache = {};\n });\n };\n _proto.addExtension = function addExtension(name, extension) {\n extension.__name = name;\n this.extensions[name] = extension;\n this.extensionsList.push(extension);\n return this;\n };\n _proto.removeExtension = function removeExtension(name) {\n var extension = this.getExtension(name);\n if (!extension) {\n return;\n }\n this.extensionsList = lib.without(this.extensionsList, extension);\n delete this.extensions[name];\n };\n _proto.getExtension = function getExtension(name) {\n return this.extensions[name];\n };\n _proto.hasExtension = function hasExtension(name) {\n return !!this.extensions[name];\n };\n _proto.addGlobal = function addGlobal(name, value) {\n this.globals[name] = value;\n return this;\n };\n _proto.getGlobal = function getGlobal(name) {\n if (typeof this.globals[name] === 'undefined') {\n throw new Error('global not found: ' + name);\n }\n return this.globals[name];\n };\n _proto.addFilter = function addFilter(name, func, async) {\n var wrapped = func;\n if (async) {\n this.asyncFilters.push(name);\n }\n this.filters[name] = wrapped;\n return this;\n };\n _proto.getFilter = function getFilter(name) {\n if (!this.filters[name]) {\n throw new Error('filter not found: ' + name);\n }\n return this.filters[name];\n };\n _proto.addTest = function addTest(name, func) {\n this.tests[name] = func;\n return this;\n };\n _proto.getTest = function getTest(name) {\n if (!this.tests[name]) {\n throw new Error('test not found: ' + name);\n }\n return this.tests[name];\n };\n _proto.resolveTemplate = function resolveTemplate(loader, parentName, filename) {\n var isRelative = loader.isRelative && parentName ? loader.isRelative(filename) : false;\n return isRelative && loader.resolve ? loader.resolve(parentName, filename) : filename;\n };\n _proto.getTemplate = function getTemplate(name, eagerCompile, parentName, ignoreMissing, cb) {\n var _this3 = this;\n var that = this;\n var tmpl = null;\n if (name && name.raw) {\n // this fixes autoescape for templates referenced in symbols\n name = name.raw;\n }\n if (lib.isFunction(parentName)) {\n cb = parentName;\n parentName = null;\n eagerCompile = eagerCompile || false;\n }\n if (lib.isFunction(eagerCompile)) {\n cb = eagerCompile;\n eagerCompile = false;\n }\n if (name instanceof Template) {\n tmpl = name;\n } else if (typeof name !== 'string') {\n throw new Error('template names must be a string: ' + name);\n } else {\n for (var i = 0; i < this.loaders.length; i++) {\n var loader = this.loaders[i];\n tmpl = loader.cache[this.resolveTemplate(loader, parentName, name)];\n if (tmpl) {\n break;\n }\n }\n }\n if (tmpl) {\n if (eagerCompile) {\n tmpl.compile();\n }\n if (cb) {\n cb(null, tmpl);\n return undefined;\n } else {\n return tmpl;\n }\n }\n var syncResult;\n var createTemplate = function createTemplate(err, info) {\n if (!info && !err && !ignoreMissing) {\n err = new Error('template not found: ' + name);\n }\n if (err) {\n if (cb) {\n cb(err);\n return;\n } else {\n throw err;\n }\n }\n var newTmpl;\n if (!info) {\n newTmpl = new Template(noopTmplSrc, _this3, '', eagerCompile);\n } else {\n newTmpl = new Template(info.src, _this3, info.path, eagerCompile);\n if (!info.noCache) {\n info.loader.cache[name] = newTmpl;\n }\n }\n if (cb) {\n cb(null, newTmpl);\n } else {\n syncResult = newTmpl;\n }\n };\n lib.asyncIter(this.loaders, function (loader, i, next, done) {\n function handle(err, src) {\n if (err) {\n done(err);\n } else if (src) {\n src.loader = loader;\n done(null, src);\n } else {\n next();\n }\n }\n\n // Resolve name relative to parentName\n name = that.resolveTemplate(loader, parentName, name);\n if (loader.async) {\n loader.getSource(name, handle);\n } else {\n handle(null, loader.getSource(name));\n }\n }, createTemplate);\n return syncResult;\n };\n _proto.express = function express(app) {\n return expressApp(this, app);\n };\n _proto.render = function render(name, ctx, cb) {\n if (lib.isFunction(ctx)) {\n cb = ctx;\n ctx = null;\n }\n\n // We support a synchronous API to make it easier to migrate\n // existing code to async. This works because if you don't do\n // anything async work, the whole thing is actually run\n // synchronously.\n var syncResult = null;\n this.getTemplate(name, function (err, tmpl) {\n if (err && cb) {\n callbackAsap(cb, err);\n } else if (err) {\n throw err;\n } else {\n syncResult = tmpl.render(ctx, cb);\n }\n });\n return syncResult;\n };\n _proto.renderString = function renderString(src, ctx, opts, cb) {\n if (lib.isFunction(opts)) {\n cb = opts;\n opts = {};\n }\n opts = opts || {};\n var tmpl = new Template(src, this, opts.path);\n return tmpl.render(ctx, cb);\n };\n _proto.waterfall = function waterfall(tasks, callback, forceAsync) {\n return _waterfall(tasks, callback, forceAsync);\n };\n return Environment;\n}(EmitterObj);\nvar Context = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Context, _Obj);\n function Context() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto2 = Context.prototype;\n _proto2.init = function init(ctx, blocks, env) {\n var _this4 = this;\n // Has to be tied to an environment so we can tap into its globals.\n this.env = env || new Environment();\n\n // Make a duplicate of ctx\n this.ctx = lib.extend({}, ctx);\n this.blocks = {};\n this.exported = [];\n lib.keys(blocks).forEach(function (name) {\n _this4.addBlock(name, blocks[name]);\n });\n };\n _proto2.lookup = function lookup(name) {\n // This is one of the most called functions, so optimize for\n // the typical case where the name isn't in the globals\n if (name in this.env.globals && !(name in this.ctx)) {\n return this.env.globals[name];\n } else {\n return this.ctx[name];\n }\n };\n _proto2.setVariable = function setVariable(name, val) {\n this.ctx[name] = val;\n };\n _proto2.getVariables = function getVariables() {\n return this.ctx;\n };\n _proto2.addBlock = function addBlock(name, block) {\n this.blocks[name] = this.blocks[name] || [];\n this.blocks[name].push(block);\n return this;\n };\n _proto2.getBlock = function getBlock(name) {\n if (!this.blocks[name]) {\n throw new Error('unknown block \"' + name + '\"');\n }\n return this.blocks[name][0];\n };\n _proto2.getSuper = function getSuper(env, name, block, frame, runtime, cb) {\n var idx = lib.indexOf(this.blocks[name] || [], block);\n var blk = this.blocks[name][idx + 1];\n var context = this;\n if (idx === -1 || !blk) {\n throw new Error('no super block available for \"' + name + '\"');\n }\n blk(env, context, frame, runtime, cb);\n };\n _proto2.addExport = function addExport(name) {\n this.exported.push(name);\n };\n _proto2.getExported = function getExported() {\n var _this5 = this;\n var exported = {};\n this.exported.forEach(function (name) {\n exported[name] = _this5.ctx[name];\n });\n return exported;\n };\n return Context;\n}(Obj);\nvar Template = /*#__PURE__*/function (_Obj2) {\n _inheritsLoose(Template, _Obj2);\n function Template() {\n return _Obj2.apply(this, arguments) || this;\n }\n var _proto3 = Template.prototype;\n _proto3.init = function init(src, env, path, eagerCompile) {\n this.env = env || new Environment();\n if (lib.isObject(src)) {\n switch (src.type) {\n case 'code':\n this.tmplProps = src.obj;\n break;\n case 'string':\n this.tmplStr = src.obj;\n break;\n default:\n throw new Error(\"Unexpected template object type \" + src.type + \"; expected 'code', or 'string'\");\n }\n } else if (lib.isString(src)) {\n this.tmplStr = src;\n } else {\n throw new Error('src must be a string or an object describing the source');\n }\n this.path = path;\n if (eagerCompile) {\n try {\n this._compile();\n } catch (err) {\n throw lib._prettifyError(this.path, this.env.opts.dev, err);\n }\n } else {\n this.compiled = false;\n }\n };\n _proto3.render = function render(ctx, parentFrame, cb) {\n var _this6 = this;\n if (typeof ctx === 'function') {\n cb = ctx;\n ctx = {};\n } else if (typeof parentFrame === 'function') {\n cb = parentFrame;\n parentFrame = null;\n }\n\n // If there is a parent frame, we are being called from internal\n // code of another template, and the internal system\n // depends on the sync/async nature of the parent template\n // to be inherited, so force an async callback\n var forceAsync = !parentFrame;\n\n // Catch compile errors for async rendering\n try {\n this.compile();\n } catch (e) {\n var err = lib._prettifyError(this.path, this.env.opts.dev, e);\n if (cb) {\n return callbackAsap(cb, err);\n } else {\n throw err;\n }\n }\n var context = new Context(ctx || {}, this.blocks, this.env);\n var frame = parentFrame ? parentFrame.push(true) : new Frame();\n frame.topLevel = true;\n var syncResult = null;\n var didError = false;\n this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err, res) {\n // TODO: this is actually a bug in the compiled template (because waterfall\n // tasks are both not passing errors up the chain of callbacks AND are not\n // causing a return from the top-most render function). But fixing that\n // will require a more substantial change to the compiler.\n if (didError && cb && typeof res !== 'undefined') {\n // prevent multiple calls to cb\n return;\n }\n if (err) {\n err = lib._prettifyError(_this6.path, _this6.env.opts.dev, err);\n didError = true;\n }\n if (cb) {\n if (forceAsync) {\n callbackAsap(cb, err, res);\n } else {\n cb(err, res);\n }\n } else {\n if (err) {\n throw err;\n }\n syncResult = res;\n }\n });\n return syncResult;\n };\n _proto3.getExported = function getExported(ctx, parentFrame, cb) {\n // eslint-disable-line consistent-return\n if (typeof ctx === 'function') {\n cb = ctx;\n ctx = {};\n }\n if (typeof parentFrame === 'function') {\n cb = parentFrame;\n parentFrame = null;\n }\n\n // Catch compile errors for async rendering\n try {\n this.compile();\n } catch (e) {\n if (cb) {\n return cb(e);\n } else {\n throw e;\n }\n }\n var frame = parentFrame ? parentFrame.push() : new Frame();\n frame.topLevel = true;\n\n // Run the rootRenderFunc to populate the context with exported vars\n var context = new Context(ctx || {}, this.blocks, this.env);\n this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err) {\n if (err) {\n cb(err, null);\n } else {\n cb(null, context.getExported());\n }\n });\n };\n _proto3.compile = function compile() {\n if (!this.compiled) {\n this._compile();\n }\n };\n _proto3._compile = function _compile() {\n var props;\n if (this.tmplProps) {\n props = this.tmplProps;\n } else {\n var source = compiler.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);\n var func = new Function(source); // eslint-disable-line no-new-func\n props = func();\n }\n this.blocks = this._getBlocks(props);\n this.rootRenderFunc = props.root;\n this.compiled = true;\n };\n _proto3._getBlocks = function _getBlocks(props) {\n var blocks = {};\n lib.keys(props).forEach(function (k) {\n if (k.slice(0, 2) === 'b_') {\n blocks[k.slice(2)] = props[k];\n }\n });\n return blocks;\n };\n return Template;\n}(Obj);\nmodule.exports = {\n Environment: Environment,\n Template: Template\n};","'use strict';\n\nfunction precompileGlobal(templates, opts) {\n var out = '';\n opts = opts || {};\n for (var i = 0; i < templates.length; i++) {\n var name = JSON.stringify(templates[i].name);\n var template = templates[i].template;\n out += '(function() {' + '(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})' + '[' + name + '] = (function() {\\n' + template + '\\n})();\\n';\n if (opts.asFunction) {\n out += 'return function(ctx, cb) { return nunjucks.render(' + name + ', ctx, cb); }\\n';\n }\n out += '})();\\n';\n }\n return out;\n}\nmodule.exports = precompileGlobal;","'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar _require = require('./lib'),\n _prettifyError = _require._prettifyError;\nvar compiler = require('./compiler');\nvar _require2 = require('./environment'),\n Environment = _require2.Environment;\nvar precompileGlobal = require('./precompile-global');\nfunction match(filename, patterns) {\n if (!Array.isArray(patterns)) {\n return false;\n }\n return patterns.some(function (pattern) {\n return filename.match(pattern);\n });\n}\nfunction precompileString(str, opts) {\n opts = opts || {};\n opts.isString = true;\n var env = opts.env || new Environment([]);\n var wrapper = opts.wrapper || precompileGlobal;\n if (!opts.name) {\n throw new Error('the \"name\" option is required when compiling a string');\n }\n return wrapper([_precompile(str, opts.name, env)], opts);\n}\nfunction precompile(input, opts) {\n // The following options are available:\n //\n // * name: name of the template (auto-generated when compiling a directory)\n // * isString: input is a string, not a file path\n // * asFunction: generate a callable function\n // * force: keep compiling on error\n // * env: the Environment to use (gets extensions and async filters from it)\n // * include: which file/folders to include (folders are auto-included, files are auto-excluded)\n // * exclude: which file/folders to exclude (folders are auto-included, files are auto-excluded)\n // * wrapper: function(templates, opts) {...}\n // Customize the output format to store the compiled template.\n // By default, templates are stored in a global variable used by the runtime.\n // A custom loader will be necessary to load your custom wrapper.\n\n opts = opts || {};\n var env = opts.env || new Environment([]);\n var wrapper = opts.wrapper || precompileGlobal;\n if (opts.isString) {\n return precompileString(input, opts);\n }\n var pathStats = fs.existsSync(input) && fs.statSync(input);\n var precompiled = [];\n var templates = [];\n function addTemplates(dir) {\n fs.readdirSync(dir).forEach(function (file) {\n var filepath = path.join(dir, file);\n var subpath = filepath.substr(path.join(input, '/').length);\n var stat = fs.statSync(filepath);\n if (stat && stat.isDirectory()) {\n subpath += '/';\n if (!match(subpath, opts.exclude)) {\n addTemplates(filepath);\n }\n } else if (match(subpath, opts.include)) {\n templates.push(filepath);\n }\n });\n }\n if (pathStats.isFile()) {\n precompiled.push(_precompile(fs.readFileSync(input, 'utf-8'), opts.name || input, env));\n } else if (pathStats.isDirectory()) {\n addTemplates(input);\n for (var i = 0; i < templates.length; i++) {\n var name = templates[i].replace(path.join(input, '/'), '');\n try {\n precompiled.push(_precompile(fs.readFileSync(templates[i], 'utf-8'), name, env));\n } catch (e) {\n if (opts.force) {\n // Don't stop generating the output if we're\n // forcing compilation.\n console.error(e); // eslint-disable-line no-console\n } else {\n throw e;\n }\n }\n }\n }\n return wrapper(precompiled, opts);\n}\nfunction _precompile(str, name, env) {\n env = env || new Environment([]);\n var asyncFilters = env.asyncFilters;\n var extensions = env.extensionsList;\n var template;\n name = name.replace(/\\\\/g, '/');\n try {\n template = compiler.compile(str, asyncFilters, extensions, name, env.opts);\n } catch (err) {\n throw _prettifyError(name, false, err);\n }\n return {\n name: name,\n template: template\n };\n}\nmodule.exports = {\n precompile: precompile,\n precompileString: precompileString\n};","\"use strict\";\n\nfunction installCompat() {\n 'use strict';\n\n /* eslint-disable camelcase */\n\n // This must be called like `nunjucks.installCompat` so that `this`\n // references the nunjucks instance\n var runtime = this.runtime;\n var lib = this.lib;\n // Handle slim case where these 'modules' are excluded from the built source\n var Compiler = this.compiler.Compiler;\n var Parser = this.parser.Parser;\n var nodes = this.nodes;\n var lexer = this.lexer;\n var orig_contextOrFrameLookup = runtime.contextOrFrameLookup;\n var orig_memberLookup = runtime.memberLookup;\n var orig_Compiler_assertType;\n var orig_Parser_parseAggregate;\n if (Compiler) {\n orig_Compiler_assertType = Compiler.prototype.assertType;\n }\n if (Parser) {\n orig_Parser_parseAggregate = Parser.prototype.parseAggregate;\n }\n function uninstall() {\n runtime.contextOrFrameLookup = orig_contextOrFrameLookup;\n runtime.memberLookup = orig_memberLookup;\n if (Compiler) {\n Compiler.prototype.assertType = orig_Compiler_assertType;\n }\n if (Parser) {\n Parser.prototype.parseAggregate = orig_Parser_parseAggregate;\n }\n }\n runtime.contextOrFrameLookup = function contextOrFrameLookup(context, frame, key) {\n var val = orig_contextOrFrameLookup.apply(this, arguments);\n if (val !== undefined) {\n return val;\n }\n switch (key) {\n case 'True':\n return true;\n case 'False':\n return false;\n case 'None':\n return null;\n default:\n return undefined;\n }\n };\n function getTokensState(tokens) {\n return {\n index: tokens.index,\n lineno: tokens.lineno,\n colno: tokens.colno\n };\n }\n if (process.env.BUILD_TYPE !== 'SLIM' && nodes && Compiler && Parser) {\n // i.e., not slim mode\n var Slice = nodes.Node.extend('Slice', {\n fields: ['start', 'stop', 'step'],\n init: function init(lineno, colno, start, stop, step) {\n start = start || new nodes.Literal(lineno, colno, null);\n stop = stop || new nodes.Literal(lineno, colno, null);\n step = step || new nodes.Literal(lineno, colno, 1);\n this.parent(lineno, colno, start, stop, step);\n }\n });\n Compiler.prototype.assertType = function assertType(node) {\n if (node instanceof Slice) {\n return;\n }\n orig_Compiler_assertType.apply(this, arguments);\n };\n Compiler.prototype.compileSlice = function compileSlice(node, frame) {\n this._emit('(');\n this._compileExpression(node.start, frame);\n this._emit('),(');\n this._compileExpression(node.stop, frame);\n this._emit('),(');\n this._compileExpression(node.step, frame);\n this._emit(')');\n };\n Parser.prototype.parseAggregate = function parseAggregate() {\n var _this = this;\n var origState = getTokensState(this.tokens);\n // Set back one accounting for opening bracket/parens\n origState.colno--;\n origState.index--;\n try {\n return orig_Parser_parseAggregate.apply(this);\n } catch (e) {\n var errState = getTokensState(this.tokens);\n var rethrow = function rethrow() {\n lib._assign(_this.tokens, errState);\n return e;\n };\n\n // Reset to state before original parseAggregate called\n lib._assign(this.tokens, origState);\n this.peeked = false;\n var tok = this.peekToken();\n if (tok.type !== lexer.TOKEN_LEFT_BRACKET) {\n throw rethrow();\n } else {\n this.nextToken();\n }\n var node = new Slice(tok.lineno, tok.colno);\n\n // If we don't encounter a colon while parsing, this is not a slice,\n // so re-raise the original exception.\n var isSlice = false;\n for (var i = 0; i <= node.fields.length; i++) {\n if (this.skip(lexer.TOKEN_RIGHT_BRACKET)) {\n break;\n }\n if (i === node.fields.length) {\n if (isSlice) {\n this.fail('parseSlice: too many slice components', tok.lineno, tok.colno);\n } else {\n break;\n }\n }\n if (this.skip(lexer.TOKEN_COLON)) {\n isSlice = true;\n } else {\n var field = node.fields[i];\n node[field] = this.parseExpression();\n isSlice = this.skip(lexer.TOKEN_COLON) || isSlice;\n }\n }\n if (!isSlice) {\n throw rethrow();\n }\n return new nodes.Array(tok.lineno, tok.colno, [node]);\n }\n };\n }\n function sliceLookup(obj, start, stop, step) {\n obj = obj || [];\n if (start === null) {\n start = step < 0 ? obj.length - 1 : 0;\n }\n if (stop === null) {\n stop = step < 0 ? -1 : obj.length;\n } else if (stop < 0) {\n stop += obj.length;\n }\n if (start < 0) {\n start += obj.length;\n }\n var results = [];\n for (var i = start;; i += step) {\n if (i < 0 || i > obj.length) {\n break;\n }\n if (step > 0 && i >= stop) {\n break;\n }\n if (step < 0 && i <= stop) {\n break;\n }\n results.push(runtime.memberLookup(obj, i));\n }\n return results;\n }\n function hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n var ARRAY_MEMBERS = {\n pop: function pop(index) {\n if (index === undefined) {\n return this.pop();\n }\n if (index >= this.length || index < 0) {\n throw new Error('KeyError');\n }\n return this.splice(index, 1);\n },\n append: function append(element) {\n return this.push(element);\n },\n remove: function remove(element) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] === element) {\n return this.splice(i, 1);\n }\n }\n throw new Error('ValueError');\n },\n count: function count(element) {\n var count = 0;\n for (var i = 0; i < this.length; i++) {\n if (this[i] === element) {\n count++;\n }\n }\n return count;\n },\n index: function index(element) {\n var i;\n if ((i = this.indexOf(element)) === -1) {\n throw new Error('ValueError');\n }\n return i;\n },\n find: function find(element) {\n return this.indexOf(element);\n },\n insert: function insert(index, elem) {\n return this.splice(index, 0, elem);\n }\n };\n var OBJECT_MEMBERS = {\n items: function items() {\n return lib._entries(this);\n },\n values: function values() {\n return lib._values(this);\n },\n keys: function keys() {\n return lib.keys(this);\n },\n get: function get(key, def) {\n var output = this[key];\n if (output === undefined) {\n output = def;\n }\n return output;\n },\n has_key: function has_key(key) {\n return hasOwnProp(this, key);\n },\n pop: function pop(key, def) {\n var output = this[key];\n if (output === undefined && def !== undefined) {\n output = def;\n } else if (output === undefined) {\n throw new Error('KeyError');\n } else {\n delete this[key];\n }\n return output;\n },\n popitem: function popitem() {\n var keys = lib.keys(this);\n if (!keys.length) {\n throw new Error('KeyError');\n }\n var k = keys[0];\n var val = this[k];\n delete this[k];\n return [k, val];\n },\n setdefault: function setdefault(key, def) {\n if (def === void 0) {\n def = null;\n }\n if (!(key in this)) {\n this[key] = def;\n }\n return this[key];\n },\n update: function update(kwargs) {\n lib._assign(this, kwargs);\n return null; // Always returns None\n }\n };\n\n OBJECT_MEMBERS.iteritems = OBJECT_MEMBERS.items;\n OBJECT_MEMBERS.itervalues = OBJECT_MEMBERS.values;\n OBJECT_MEMBERS.iterkeys = OBJECT_MEMBERS.keys;\n runtime.memberLookup = function memberLookup(obj, val, autoescape) {\n if (arguments.length === 4) {\n return sliceLookup.apply(this, arguments);\n }\n obj = obj || {};\n\n // If the object is an object, return any of the methods that Python would\n // otherwise provide.\n if (lib.isArray(obj) && hasOwnProp(ARRAY_MEMBERS, val)) {\n return ARRAY_MEMBERS[val].bind(obj);\n }\n if (lib.isObject(obj) && hasOwnProp(OBJECT_MEMBERS, val)) {\n return OBJECT_MEMBERS[val].bind(obj);\n }\n return orig_memberLookup.apply(this, arguments);\n };\n return uninstall;\n}\nmodule.exports = installCompat;","'use strict';\n\nvar lib = require('./src/lib');\nvar _require = require('./src/environment'),\n Environment = _require.Environment,\n Template = _require.Template;\nvar Loader = require('./src/loader');\nvar loaders = require('./src/loaders');\nvar precompile = require('./src/precompile');\nvar compiler = require('./src/compiler');\nvar parser = require('./src/parser');\nvar lexer = require('./src/lexer');\nvar runtime = require('./src/runtime');\nvar nodes = require('./src/nodes');\nvar installJinjaCompat = require('./src/jinja-compat');\n\n// A single instance of an environment, since this is so commonly used\nvar e;\nfunction configure(templatesPath, opts) {\n opts = opts || {};\n if (lib.isObject(templatesPath)) {\n opts = templatesPath;\n templatesPath = null;\n }\n var TemplateLoader;\n if (loaders.FileSystemLoader) {\n TemplateLoader = new loaders.FileSystemLoader(templatesPath, {\n watch: opts.watch,\n noCache: opts.noCache\n });\n } else if (loaders.WebLoader) {\n TemplateLoader = new loaders.WebLoader(templatesPath, {\n useCache: opts.web && opts.web.useCache,\n async: opts.web && opts.web.async\n });\n }\n e = new Environment(TemplateLoader, opts);\n if (opts && opts.express) {\n e.express(opts.express);\n }\n return e;\n}\nmodule.exports = {\n Environment: Environment,\n Template: Template,\n Loader: Loader,\n FileSystemLoader: loaders.FileSystemLoader,\n NodeResolveLoader: loaders.NodeResolveLoader,\n PrecompiledLoader: loaders.PrecompiledLoader,\n WebLoader: loaders.WebLoader,\n compiler: compiler,\n parser: parser,\n lexer: lexer,\n runtime: runtime,\n lib: lib,\n nodes: nodes,\n installJinjaCompat: installJinjaCompat,\n configure: configure,\n reset: function reset() {\n e = undefined;\n },\n compile: function compile(src, env, path, eagerCompile) {\n if (!e) {\n configure();\n }\n return new Template(src, env, path, eagerCompile);\n },\n render: function render(name, ctx, cb) {\n if (!e) {\n configure();\n }\n return e.render(name, ctx, cb);\n },\n renderString: function renderString(src, ctx, cb) {\n if (!e) {\n configure();\n }\n return e.renderString(src, ctx, cb);\n },\n precompile: precompile ? precompile.precompile : undefined,\n precompileString: precompile ? precompile.precompileString : undefined\n};","// ?? 如何避免每次手动添加\r\nexport enum TagType {\r\n Title = \"title\",\r\n Date = \"date\",\r\n Checker = \"checker\",\r\n Head = \"head\",\r\n Text = \"text\",\r\n Toc = \"toc\",\r\n Notice = \"notice\",\r\n Block = \"block\",\r\n Table = \"table\"\r\n}\r\n\r\n// 通用配置\r\ninterface BaseConfItem {\r\n tag: TagType;\r\n type?: string;\r\n title?: string;\r\n text?: string;\r\n style?: string;\r\n cssFiles?: string[];\r\n jsFiles?: string[];\r\n}\r\n\r\n// 表格配置扩展类型\r\ninterface ListConfItem extends BaseConfItem {\r\n tag: TagType.Toc | TagType.Block;\r\n data?: Array<object>;\r\n}\r\n// 表格配置扩展类型\r\ninterface TableConfItem extends BaseConfItem {\r\n tag: TagType.Table;\r\n columns?: Array<{ key: string; label: string }>;\r\n data?: Array<object>;\r\n th?: Array<{ key: string; width?: string }>;\r\n tbody?: Array<object[]>;\r\n}\r\n\r\n// 最终配置类型联合\r\nexport type ConfItem = BaseConfItem | ListConfItem | TableConfItem;\r\n\r\n// 渲染配置\r\nexport interface RenderOptions {\r\n templateDir?: string; // 模板地址\r\n cssUrls?: string | string[]; // 外部 css 引用地址\r\n asyncLoad?: boolean; // 文件资源加载的 异步和同步 控制\r\n noCache?: boolean; // njk 缓存控制选项\r\n}\r\n\r\n// 样式加载配置类型\r\nexport interface StyleLoadOptions {\r\n isAsync?: boolean;\r\n basePath?: string; // 支持自定义样式路径\r\n}\r\n\r\nexport type StyleLoader = (\r\n options?: StyleLoadOptions\r\n) => Promise<string> | string;","export const styleText = `<style>/* Components.css */\n/* END-Components.css */\n/* ContentTitle.css */\n.collapsible-container {\n--margin: 36px 0 20px;\nwidth: 100%;\noverflow: hidden;\nmargin: var(--margin);\n}\n.collapsible-input {\ndisplay: none;\n}\n.content-title:hover {\ncolor: #409EFF;\n}\n.collapsible-label {\ndisplay: flex;\njustify-content: space-between;\nalign-items: center;\ncursor: pointer;\n}\n.collapsible-label:hover {\ncolor: #409EFF;\n}\n.collapsible-input:checked~.collapsible-arrow {\ntransform: rotate(90deg);\n}\n.collapsible-content {\nmax-height: 0;\noverflow: hidden;\ntransition: max-height 0.3s cubic-bezier(0, 1, 0, 1) 0.3s ease;\n}\n.collapsible-hover-content {\nmax-height: 0;\noverflow: hidden;\ntransition: max-height 0.3s cubic-bezier(0, 1, 0, 1) 0.3s ease;\n}\n.collapsible-container:hover>.collapsible-hover-content {\nmax-height: 500px;\n}\n.collapsible-input:checked~.collapsible-content {\nmax-height: 500px;\n/* 根据内容调整 */\n}\n.title-tag,\n.title-tag-small {\nalign-items: center;\nmargin-left: 4px;\nborder-radius: 4px;\ncolor: white;\nbackground-color: #2196F3\n}\n.title-tag-titile-container{\ndisplay: flex;\nalign-items: center\n}\n.title-tag-small {\nfont-size: 10px;\npadding: 2px 8px;\n}\n.title-tag {\nfont-size: 10px;\npadding: 6px 10px;\n}\n/* END-ContentTitle.css */\n/* Divider.css */\n.divider-base {\nborder: none;\nheight: 1px;\nbackground: #e0e0e0;\nbackground-size: 100% 100%;\nmargin: 20px 0;\n}\n/* END-Divider.css */\n/* TOC.css */\n/* 基础样式 */\n.article-toc {\nposition: fixed;\ntop: 50px;\nright: 2rem;\nmax-height: calc(100vh - 4rem);\nmargin-left: 2rem;\nfont-size: 0.95rem;\n}\n/* 隐藏 checkbox */\n.toc-toggle-checkbox {\nposition: absolute;\nopacity: 0;\nheight: 0;\nwidth: 0;\n}\n/* 切换按钮样式 */\n.toc-toggle-label {\ndisplay: flex;\nalign-items: center;\nbackground: #f8f9fa;\npadding: 0.3rem 0.6rem;\nborder-radius: 4px;\ncursor: pointer;\nmargin-bottom: 0.5rem;\n}\n.toc-icon {\nfont-size: 1.2rem;\nmargin-right: 0.3rem;\n}\n/* 目录导航 */\n.toc-nav {\npadding: 0.5rem;\nbackground: white;\nborder-radius: 6px;\nbox-shadow: 0 1px 3px rgba(0,0,0,0.1);\n}\n.toc-section {\nmargin-bottom: 0.8rem;\n}\n.toc-heading {\nfont-size: 1rem;\nmargin: 0 0 0.4rem 0;\npadding-bottom: 0.2rem;\nborder-bottom: 1px solid #eee;\n}\n.toc-list {\nlist-style: none;\npadding-left: 0.4rem;\nmargin: 0;\n}\n.toc-item {\nmargin: 0.2rem 0;\n}\n.toc-link {\ndisplay: block;\npadding: 0.2rem 0.4rem;\ncolor: #495057;\ntext-decoration: none;\nborder-radius: 3px;\ntransition: all 0.2s;\n}\n.toc-link:hover {\nbackground: #f0f0f0;\ncolor: #007bff;\n}\n/* 层级缩进 */\n.toc-link[data-level=\"2\"] {\npadding-left: 0.8rem;\n}\n.toc-link[data-level=\"3\"] {\npadding-left: 1.6rem;\n}\n/* 激活状态 */\n.toc-link.active {\nbackground: #e7f5ff;\ncolor: #0066cc;\nfont-weight: 500;\n}\n/* 折叠功能实现 */\n.toc-toggle-checkbox:not(:checked) ~ .toc-nav {\ndisplay: none;\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.article-toc {\nmargin-left: 1rem;\nfont-size: 0.9rem;\n}\n}\n/* END-TOC.css */\n/* Text.css */\n/* END-Text.css */\n/* Title.css */\n.title-base {\n--align: left;\n--text-color: #606266;\n--font-weight: 800;\n--font-size: 18px;\ncolor: var(--text-color);\ntext-align: var(--align);\nfont-weight: var(--font-weight);\nfont-size: var(--font-size);\npadding: 8px 30px;\n}\n.njk-title-h1 {\nfont-size: 26px;\nfont-weight: bolder;\n--align: left;\n--text-color: #606266;\n--margin: 40px 0 20px;\nposition: relative;\npadding: 0 0 4.8px;\nmargin: var(--margin);\ncolor: var(--text-color);\ntext-align: var(--align);\n}\n.njk-title-h2 {\nfont-size: 24px;\nfont-weight: bolder;\n--align: left;\n--text-color: #606266;\n--margin: 40px 0 20px;\nposition: relative;\npadding: 0 0 4.8px;\nmargin: var(--margin);\ncolor: var(--text-color);\ntext-align: var(--align);\n}\n.njk-title-h3{\nfont-size: 20px;\n--align: left;\n--text-color: #606266;\nfont-weight: bolder;\n--margin: 40px 0 20px;\nposition: relative;\npadding: 0 0 4.8px;\nmargin: var(--margin);\ncolor: var(--text-color);\ntext-align: var(--align);\n}\n/* .njk-title-h2::before,\n.njk-title-h1::before {\ndisplay: none;\nposition: absolute;\ncontent: \"# \";\ncolor: #007bff;\n}\n.njk-title-h1::before {\nleft: -26px;\n}\n.njk-title-h2::before {\nleft: -18px;\n}\n.njk-title-h1:hover::before,\n.njk-title-h2:hover::before {\ndisplay: inline-block;\n} */\n.title-main {\n--align: left;\n--text-color: black;\n--font-weight: 800;\n--font-size: 28px;\ncolor: var(--text-color);\ntext-align: var(--align);\nfont-weight: var(--font-weight);\nfont-size: var(--font-size);\npadding: 8px 30px;\nmargin-bottom: 20px;\n}\n.title-center {\ntext-align: center;\n}\n/* END-Title.css */\n/* Notice.css */\n/* Notice */\n.notice {\nmargin: 16px 0;\npadding: 12px 16px;\nmargin-bottom: 1rem;\nborder-radius: 4px;\nfont-size: 14px;\nline-height: 1.5rem;\n}\n.notice-title {\nfont-weight: bold;\nmargin-bottom: 4px;\n}\n/* 不同类型的通知样式 */\n.notice-info {\nbackground-color: #e8f4ff;\nborder-left: 4px solid #1890ff;\n}\n.notice-warning {\nbackground-color: #fff7e6;\nborder-left: 4px solid #faad14;\n}\n.notice-success {\nbackground-color: #f6ffed;\nborder-left: 4px solid #52c41a;\n}\n.notice-error {\nbackground-color: #fff2f0;\nborder-left: 4px solid #f5222d;\n}\n/* END-Notice.css */\n/* Table.css */\n.my-daframe-default {\nmargin: 0;\nwidth: 80%;\nborder-collapse: collapse;\nborder-radius: 15px;\n/* 合并边框 */\nfont-family: Arial, Helvetica, sans-serif;\nfont-size: 14px;\ncolor: #444444;\n}\n.thead-light th {\nwhite-space: nowrap;\nbackground-color: #f5f7fa;\ncolor: #333333;\nfont-weight: 600;\npadding: 12px 16px;\ntext-align: left;\nborder: 1px solid #e1e4e8;\nfont-size: 16px;\n}\n.default-row {\nborder: 1px solid #eee;\nbackground-color: #fff;\n}\n.default-row:hover {\nbackground-color: #f0f4f8;\ncolor: rebeccapurple;\n}\n.default-cell {\npadding: 10px 16px;\nborder: 1px solid #e1e4e8;\nfont-weight: 400;\nfont-size: 14px;\ncolor: #444;\nbackground-color: transparent;\n}\n/* END-Table.css */\n/* Block.css */\n/* Block.njk */\n.code-block {\n--block-margin: 0px\nmargin: var(--block-margin) 0;\nborder-radius: 4px;\noverflow: hidden;\nbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.code-block pre {\nmargin: 0;\npadding: 1rem;\nbackground-color: #f5f5f5;\nfont-family: 'Courier New', monospace;\nfont-size: 14px;\nline-height: 1.5;\nwhite-space: pre-wrap;\n}\n.code-block code {\ndisplay: block;\noverflow-x: auto;\n}\n/* END-Block.css */\n/* Date.css */\n/* END-Date.css */\n/* Tab.css */\n/* Tab 容器 */\n.tab-container {\nmax-width: 600px;\nmargin: 0 auto;\n}\n/* 隐藏 Radio 按钮 */\n.tab-radio {\ndisplay: none;\n}\n/* Tab 按钮样式 */\n.tab-labels {\ndisplay: flex;\nborder-bottom: 1px solid #ccc;\n}\n.tab-label {\npadding: 5px 10px;\ncursor: pointer;\nbackground-color: #f1f1f1;\nborder: 1px solid #ccc;\nborder-bottom: none;\nmargin-right: 2px;\nborder-radius: 5px 5px 0 0;\n}\n.tab-label:hover {\nbackground-color: #ddd;\n}\n.tab-radio:checked+.tab-label {\nbackground-color: #fff;\nborder-bottom: 1px solid #fff;\nmargin-bottom: -1px;\n}\n/* Tab 内容区域 */\n.tab-content {\ndisplay: none;\npadding: 20px;\nborder: 1px solid #ccc;\nborder-top: none;\n}\n/* END-Tab.css */\n/* Base.css */\nbody {\nmargin: 0;\npadding: 0;\nfont-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;\n}\n/* PC端样式 */\na {\ntext-decoration: none;\n}\na:hover {\ncolor: #409EFF;\n}\n.email-main-container {\nmargin: 0;\nmin-width: 1000px;\npadding: 0 5rem;\n}\n:root {\n--njk-title-color: #606266;\n--njk-title-align: left;\n--njk-title-position: relative;\n--njk-title-margin: 36px 0 20px;\n}\n/* END-Base.css */\n</style>`","export const templateText = `<!-- Head.njk -->\n{% macro use_head(ctx) %}\n<head>\n<meta charset=\"UTF-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<title>{{ ctx.title }}</title>\n{% if ctx.jsFiles%}\n{% for css in ctx.cssFiles %}\n<link rel=\"stylesheet\" href=\"{{ css }}\" />\n{% endfor %}\n{% endif %}\n</head>\n{% if ctx.jsFiles%}\n{% for js in ctx.jsFiles %}\n<script src=\"{{ js }}\"></script>\n{% endfor %}\n{% endif %}\n{% endmacro %}\n<!-- /Head.njk -->\n<!-- TOC.njk -->\n{% macro use_toc(ctx) %}\n<div class=\"article-toc\">\n<input type=\"checkbox\" id=\"toc-toggle\" class=\"toc-toggle-checkbox\">\n<label for=\"toc-toggle\" class=\"toc-toggle-label\">\n<span class=\"toc-icon\">≡</span>\n<span class=\"toc-text\">目录</span>\n</label>\n<nav class=\"toc-nav\">\n{% for section in ctx.data %}\n<section class=\"toc-section\">\n{% if section.link %}\n<h3 class=\"toc-heading\">\n<a href=\"{{ section.link }}\" class=\"toc-link\">{{ section.text }}</a>\n</h3>\n{% else%}\n<h3 class=\"toc-heading\">{{ section.text }}</h3>\n{% endif %}\n<ul class=\"toc-list\">\n{% for item in section.items %}\n<li class=\"toc-item\">\n<a href=\"{{ item.link }}\" class=\"toc-link\" data-level=\"{{ loop.depth }}\">\n{% if loop.depth > 1 %}•{% endif %}\n{{ item.text }}\n</a>\n</li>\n{% endfor %}\n</ul>\n</section>\n{% endfor %}\n</nav>\n</div>\n{% endmacro %}\n<!-- /TOC.njk -->\n<!-- Divider.njk -->\n{% macro use_divider(ctx) %}\n<hr class=\"divider-base\">\n{% endmacro %}\n<!-- /Divider.njk -->\n<!-- Tag.njk -->\n{% macro use_tag(ctx) %}\n{% set tagClass = \"smart-tag\" %}\n{% set defaultColor = \"#4CAF50\" %}\n{% set defaultSize = \"medium\" %}\n{% set finalColor = defaultColor %}\n{% set finalSize = defaultSize %}\n<span class=\"{{ tagClass }} {{ finalSize }}\" style=\"background-color: {{ finalColor }};\">\n{{ ctx.text }}\n</span>\n<style>\n.smart-tag {\ndisplay: inline-flex;\nalign-items: center;\npadding: 4px 12px;\nborder-radius: 4px;\nfont-family: Arial, sans-serif;\ncolor: white;\nwhite-space: nowrap;\ntransition: all 0.3s ease;\n}\n/* 尺寸控制 */\n.smart-tag.small {\nfont-size: 12px;\npadding: 2px 8px;\n}\n.smart-tag.medium {\nfont-size: 14px;\npadding: 4px 12px;\n}\n.smart-tag.large {\nfont-size: 16px;\npadding: 6px 16px;\n}\n/* 颜色扩展支持 */\n.smart-tag.blue { background-color: #2196F3 !important; }\n.smart-tag.red { background-color: #f44336 !important; }\n.smart-tag.green { background-color: #4CAF50 !important; }\n</style>\n{% endmacro %}\n<!-- /Tag.njk -->\n<!-- Title.njk -->\n{% macro title_default(ctx) %}\n<h1 style=\"text-align: center\">{{ ctx.text }}</h1>\n{% endmacro %}\n{% macro title_h1(ctx) %}\n<div class=\"njk-title-h1\" id=\"{{ ctx.text }}\" style=\"{{ ctx.style }}\">\n{{ ctx.text }}\n</div>\n{% endmacro %}\n{% macro title_h2(ctx) %}\n<div class=\"njk-title-h2\" id=\"{{ ctx.text }}\" class=\"\" style=\"{{ ctx.style }}\">\n{{ ctx.text }}\n</div>\n{% endmacro %}\n{% macro title_h3(ctx) %}\n<div class=\"njk-title-h3\" id=\"{{ ctx.text }}\" class=\"\" style=\"{{ ctx.style }}\">\n{{ ctx.text }}\n</div>\n{% endmacro %}\n{% macro title_table_default(ctx) %}\n<div class=\"njk-title-h3\" id=\"{{ ctx.text }}\">\n{{ ctx.text }}\n</div>\n{% endmacro %}\n{% macro use_title(ctx) %}\n{% if ctx.type == \"h1\" %}\n{{ title_h1(ctx) }}\n{% elif ctx.type == \"h2\" %}\n{{ title_h2(ctx) }}\n{% elif ctx.type == \"h3\" %}\n{{ title_h3(ctx) }}\n{% else %}\n{{ title_default(ctx) }}\n{% endif %}\n{% endmacro %}\n<!-- /Title.njk -->\n<!-- Notice.njk -->\n{% macro use_notice(ctx) %}\n{% if ctx.type %}\n{% set type = ctx.type %}\n{% else %}\n{% set type = \"info\" %}\n{% endif %}\n<div class=\"notice notice-{{ type }}\">\n<div class=\"notice-title\">{{ type|capitalize }}:</div>\n<pre class=\"notice-content\">{{ ctx.text }}</pre>\n</div>\n{% endmacro %}\n<!-- /Notice.njk -->\n<!-- Block.njk -->\n{% macro use_block(ctx) %}\n<div class=\"code-block\">\n<pre><code>{{ ctx.text }}</code></pre>\n</div>\n{% endmacro %}\n<!-- /Block.njk -->\n<!-- Date.njk -->\n{% macro use_date(ctx) %}\n<div class=\"center-info-box\"><span style=\"font-weight:bolder;color:#606266;\">Date:</span>{{ ctx.text}}</div>\n{% endmacro %}\n{% macro use_checker(ctx) %}\n<div class=\"center-info-box\"><span style=\"font-weight:bolder;color:#606266;\">Checker:</span>{{ ctx.text}}</div>\n{% endmacro %}\n<!-- /Date.njk -->\n<!-- Table.njk -->\n{% macro td_default(ctx) %}\n{% if ctx.text %}\n{% set text = ctx.text %}\n{% else %}\n{% set text = ctx %}\n{% endif %}\n<td class=\"default-cell\">{{ text | replace(\"false\", \"❌\")| replace(\"False\", \"❌\")| replace(\"True\", \"✔️\") | replace(\"true\", \"✔️\") }}</td>\n{% endmacro %}\n{% macro table_default(ctx) %}\n{% if ctx.columns %}\n{% set columns = ctx.columns %}\n{% elif ctx.th %}\n{% set columns = ctx.th %}\n{% else %}\n{% set columns = [] %}\n{% endif %}\n{% if ctx.data %}\n{% set data = ctx.data %}\n{% elif ctx.tbody %}\n{% set data = ctx.tbody %}\n{% endif %}\n{% if ctx.title %}\n{% set title = {text:ctx.title} %}\n{{ title_h2(title) }}\n{% endif %}\n<table class=\"my-daframe-default\">\n<thead class=\"thead-light\">\n<tr>\n{% for column in columns %}\n<th>{{ column }}</th>\n{% endfor %}\n</tr>\n</thead>\n<tbody>\n{% for row in data %}\n<tr class=\"default-row\">\n{% if ctx.data %}\n{% for column in columns %}\n{{ td_default(row[column]) }}\n{% endfor %}\n{% else %}\n{% for value in row %}\n{{ td_default(value) }}\n{% endfor %}\n{% endif %}\n</tr>\n{% endfor %}\n</tbody>\n</table>\n{% endmacro %}\n{% macro use_table(ctx) %}\n{% if ctx.title %}\n{{ title_table_default(ctx.title) }}\n{{ table_default(ctx) }}\n{% else %}\n{{ table_default(ctx) }}\n{% endif %}\n{% endmacro %}\n<!-- /Table.njk -->\n<!-- Tab.njk -->\n{% macro useTab(tabs) %}\n<style>\n/* 显示选中的 Tab 内容 */\n{% for tab in tabs %}\n#{{tab.id}}:checked~#{{tab.content_id}} {\ndisplay: block;\n}\n{% endfor %}\n</style>\n<div class=\"tab-container\">\n{% for tab in tabs %}\n<!-- Radio 按钮(隐藏) -->\n<input {% if loop.first %} checked {% endif %} type=\"radio\" name=\"tabs\" id=\"{{ tab.id }}\" class=\"tab-radio\">\n{% endfor %}\n<!-- Tab 按钮(用 label 包裹) -->\n<div class=\"tab-labels\">\n{% for tab in tabs %}\n<label for=\"{{ tab.id }}\" class=\"tab-label\">{{ tab.title }}\n</label>\n{% endfor %}\n</div>\n<!-- Tab 内容 -->\n{% for tab in tabs %}\n<div id=\"{{ tab.content_id }}\" class=\"tab-content\">\n{{ tab.content }}\n</div>\n{% endfor %}\n</div>\n{% endmacro %}\n<!-- /Tab.njk -->\n<!-- ContentTitle.njk -->\n{% macro h3_handler(ctx) %}\n<div class=\"title-tag-titile-container\">\n{% if ctx.h3 %}\n<h3 style=\"margin: 0;\" class=\"content-title\">{{ ctx.title }}</h3>\n{% else %}\n<h2 style=\"margin: 0;\" class=\"content-title\">{{ ctx.title }}</h3>\n{% endif %}\n<span class=\"title-tag-small\">注释</span>\n</div>\n{% endmacro %}\n{% macro content_title_click(ctx) %}\n<div class=\"collapsible-container\">\n<input type=\"checkbox\" id=\"{{ ctx.title }}\" class=\"collapsible-input\" hidden>\n<label for=\"{{ ctx.title }}\" class=\"collapsible-label\">\n{{ h3_handler(ctx) }}\n</label>\n<div class=\"collapsible-content\">\n{{ use_block(ctx) }}\n</div>\n</div>\n{% endmacro %}\n{% macro content_title_hover(ctx) %}\n<div class=\"collapsible-container\">\n<div class=\"collapsible-label\">\n{{ h3_handler(ctx) }}\n</div>\n<div class=\"collapsible-hover-content\">\n{{ use_block(ctx) }}\n</div>\n</div>\n{% endmacro %}\n{% macro content_title_remain(ctx) %}\n<div class=\"collapsible-container\">\n{{ h3_handler(ctx) }}\n<div>\n{{ use_block(ctx) }}\n</div>\n</div>\n{% endmacro %}\n{% macro pick_content_title(ctx) %}\n{% if ctx.hover %}\n{{ content_title_hover(ctx) }}\n{% elif ctx.remain %}\n{{ content_title_remain(ctx) }}\n{% else %}\n{{ content_title_click(ctx) }}\n{% endif %}\n{% endmacro %}\n{% macro use_content_title(ctx) %}\n{% if ctx.type == \"h3\" or ctx.type == \"hover_h3\" or ctx.type == \"remain_h3\" %}\n{% set h3 = true %}\n{% endif %}\n{% if ctx.type == \"hover_h3\" or ctx.type == \"hover\" %}\n{% set hover = true %}\n{% endif %}\n{% if ctx.type == \"remain_h3\" or ctx.type == \"remain\" %}\n{% set remain = true %}\n{% endif %}\n{% set param = {title:ctx.title, text:ctx.text, h3:h3, hover:hover, remain:remain} %}\n{{ pick_content_title(param) }}\n{% endmacro %}\n<!-- /ContentTitle.njk -->\n<!-- Component.njk -->\n{% macro pick_component(ctx) %}\n{% if ctx.tag == \"head\" %}\n{{ use_head(ctx) }}\n{% elif ctx.tag == \"text\" %}\n{{ use_text(ctx) }}\n{% elif ctx.tag == \"title\" %}\n{{ use_title(ctx) }}\n{% elif ctx.tag == \"table\" %}\n{{ use_table(ctx) }}\n{% elif ctx.tag == \"toc\" %}\n{{ use_toc(ctx) }}\n{% elif ctx.tag == \"notice\" %}\n{{ use_notice(ctx) }}\n{% elif ctx.tag == \"block\" %}\n{{ use_block(ctx) }}\n{% elif ctx.tag == \"date\" %}\n{{ use_date(ctx) }}\n{% elif ctx.tag == \"checker\" %}\n{{ use_checker(ctx) }}\n{% elif ctx.tag == \"divider\" %}\n{{ use_divider(ctx) }}\n{% elif ctx.tag == \"tag\" %}\n{{ use_tag(ctx) }}\n{% elif ctx.tag == \"title_content\" %}\n{{ use_content_title(ctx) }}\n{% else %}\n{{ title_default(ctx) }}\n{% endif %}\n{% endmacro %}\n{% macro use_component(ctx) %}\n{% if ctx.tag %}\n{{ pick_component(ctx) }}\n{% else %}\n{% for i in ctx %}\n{{ pick_component(i) }}\n{% endfor %}\n{% endif %}\n{% endmacro %}\n<div style=\"margin: 0; padding: 0 8px 0 0;\">\n{{ use_component(ctx) }}\n</div>\n<!-- /Component.njk -->\n<!-- Text.njk -->\n{% macro text_default(ctx) %}\n{{ ctx.text | replace(\"false\", \"❌\") | replace(\"true\", \"✔️\") }}\n{% endmacro %}\n{% macro bool_text(ctx) %}\n{{ ctx.text | replace(\"false\", \"❌\") | replace(\"true\", \"✔️\") }}\n{% endmacro %}\n{% macro use_text(ctx) %}\n{% if ctx.type == \"h1\" %}\n{{ title_h1(ctx) }}\n{% else %}\n{{ text_default(ctx) }}\n{% endif %}\n{% endmacro %}\n<!-- /Text.njk -->\n`","import nunjucks from \"nunjucks\";\r\nimport { ConfItem, TagType } from \"./type\";\r\nimport { fileURLToPath } from \"node:url\";\r\nimport { styleText } from \"./style.dist.js\";\r\nimport { templateText } from \"./template.dist.js\";\r\nconst externalTemplatesDir = fileURLToPath(new URL(\"../bundle/src\", `${import.meta.url}`));\r\nnunjucks.configure(externalTemplatesDir, {\r\n autoescape: true,\r\n noCache: true\r\n})\r\n\r\ninterface Options {\r\n cssUrl?: string | string[]\r\n templateDir?: string\r\n asyncLoad?: boolean\r\n}\r\n\r\n// 样式注入逻辑优化\r\nconst processConfig = (config: ConfItem[], cssUrls: string[]): ConfItem[] => {\r\n const headConf: ConfItem = {\r\n tag: TagType.Head,\r\n cssFiles: Array.isArray(cssUrls) ? cssUrls : [cssUrls]\r\n };\r\n\r\n return Array.isArray(config)\r\n ? [headConf, ...config]\r\n : [headConf, config];\r\n};\r\n\r\nexport const njkRenderSync = (config: ConfItem | ConfItem[], options: Options = {}): string => {\r\n const { cssUrl } = options;\r\n const processedConfig = Array.isArray(config)\r\n ? processConfig(config, cssUrl as string[])\r\n : processConfig([config], cssUrl as string[]);\r\n\r\n const html = nunjucks.renderString(templateText, {\r\n ctx: processedConfig,\r\n });\r\n return styleText + html\r\n};"],"names":["libModule","require$$0","this","require$$1","require$$2","require$$3","require$$4","require$$5","filtersModule","constants","parse_1","anymatch","anymatchModule","fseventsHandlerModule","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","nunjucks","fileURLToPath"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]}
1
+ {"version":3,"file":"app.min.cjs","sources":["../../node_modules/nunjucks/src/lib.js","../../node_modules/asap/raw.js","../../node_modules/asap/asap.js","../../node_modules/a-sync-waterfall/index.js","../../node_modules/nunjucks/src/lexer.js","../../node_modules/nunjucks/src/object.js","../../node_modules/nunjucks/src/nodes.js","../../node_modules/nunjucks/src/parser.js","../../node_modules/nunjucks/src/transformer.js","../../node_modules/nunjucks/src/runtime.js","../../node_modules/nunjucks/src/compiler.js","../../node_modules/nunjucks/src/filters.js","../../node_modules/nunjucks/src/loader.js","../../node_modules/nunjucks/src/precompiled-loader.js","../../node_modules/picomatch/lib/constants.js","../../node_modules/picomatch/lib/utils.js","../../node_modules/picomatch/lib/scan.js","../../node_modules/picomatch/lib/parse.js","../../node_modules/picomatch/lib/picomatch.js","../../node_modules/picomatch/index.js","../../node_modules/readdirp/index.js","../../node_modules/normalize-path/index.js","../../node_modules/anymatch/index.js","../../node_modules/is-extglob/index.js","../../node_modules/is-glob/index.js","../../node_modules/glob-parent/index.js","../../node_modules/braces/lib/utils.js","../../node_modules/braces/lib/stringify.js","../../node_modules/is-number/index.js","../../node_modules/to-regex-range/index.js","../../node_modules/fill-range/index.js","../../node_modules/braces/lib/compile.js","../../node_modules/braces/lib/expand.js","../../node_modules/braces/lib/constants.js","../../node_modules/braces/lib/parse.js","../../node_modules/braces/index.js","../../node_modules/binary-extensions/index.js","../../node_modules/is-binary-path/index.js","../../node_modules/chokidar/lib/constants.js","../../node_modules/chokidar/lib/nodefs-handler.js","../../node_modules/chokidar/lib/fsevents-handler.js","../../node_modules/chokidar/index.js","../../node_modules/nunjucks/src/node-loaders.js","../../node_modules/nunjucks/src/loaders.js","../../node_modules/nunjucks/src/tests.js","../../node_modules/nunjucks/src/globals.js","../../node_modules/nunjucks/src/express-app.js","../../node_modules/nunjucks/src/environment.js","../../node_modules/nunjucks/src/precompile-global.js","../../node_modules/nunjucks/src/precompile.js","../../node_modules/nunjucks/src/jinja-compat.js","../../node_modules/nunjucks/index.js","../../src/type.ts","../../src/style.dist.ts","../../src/template.dist.ts","../../src/index.ts"],"sourcesContent":["'use strict';\n\nvar ArrayProto = Array.prototype;\nvar ObjProto = Object.prototype;\nvar escapeMap = {\n '&': '&amp;',\n '\"': '&quot;',\n '\\'': '&#39;',\n '<': '&lt;',\n '>': '&gt;',\n '\\\\': '&#92;'\n};\nvar escapeRegex = /[&\"'<>\\\\]/g;\nvar _exports = module.exports = {};\nfunction hasOwnProp(obj, k) {\n return ObjProto.hasOwnProperty.call(obj, k);\n}\n_exports.hasOwnProp = hasOwnProp;\nfunction lookupEscape(ch) {\n return escapeMap[ch];\n}\nfunction _prettifyError(path, withInternals, err) {\n if (!err.Update) {\n // not one of ours, cast it\n err = new _exports.TemplateError(err);\n }\n err.Update(path);\n\n // Unless they marked the dev flag, show them a trace from here\n if (!withInternals) {\n var old = err;\n err = new Error(old.message);\n err.name = old.name;\n }\n return err;\n}\n_exports._prettifyError = _prettifyError;\nfunction TemplateError(message, lineno, colno) {\n var err;\n var cause;\n if (message instanceof Error) {\n cause = message;\n message = cause.name + \": \" + cause.message;\n }\n if (Object.setPrototypeOf) {\n err = new Error(message);\n Object.setPrototypeOf(err, TemplateError.prototype);\n } else {\n err = this;\n Object.defineProperty(err, 'message', {\n enumerable: false,\n writable: true,\n value: message\n });\n }\n Object.defineProperty(err, 'name', {\n value: 'Template render error'\n });\n if (Error.captureStackTrace) {\n Error.captureStackTrace(err, this.constructor);\n }\n var getStack;\n if (cause) {\n var stackDescriptor = Object.getOwnPropertyDescriptor(cause, 'stack');\n getStack = stackDescriptor && (stackDescriptor.get || function () {\n return stackDescriptor.value;\n });\n if (!getStack) {\n getStack = function getStack() {\n return cause.stack;\n };\n }\n } else {\n var stack = new Error(message).stack;\n getStack = function getStack() {\n return stack;\n };\n }\n Object.defineProperty(err, 'stack', {\n get: function get() {\n return getStack.call(err);\n }\n });\n Object.defineProperty(err, 'cause', {\n value: cause\n });\n err.lineno = lineno;\n err.colno = colno;\n err.firstUpdate = true;\n err.Update = function Update(path) {\n var msg = '(' + (path || 'unknown path') + ')';\n\n // only show lineno + colno next to path of template\n // where error occurred\n if (this.firstUpdate) {\n if (this.lineno && this.colno) {\n msg += \" [Line \" + this.lineno + \", Column \" + this.colno + \"]\";\n } else if (this.lineno) {\n msg += \" [Line \" + this.lineno + \"]\";\n }\n }\n msg += '\\n ';\n if (this.firstUpdate) {\n msg += ' ';\n }\n this.message = msg + (this.message || '');\n this.firstUpdate = false;\n return this;\n };\n return err;\n}\nif (Object.setPrototypeOf) {\n Object.setPrototypeOf(TemplateError.prototype, Error.prototype);\n} else {\n TemplateError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: TemplateError\n }\n });\n}\n_exports.TemplateError = TemplateError;\nfunction escape(val) {\n return val.replace(escapeRegex, lookupEscape);\n}\n_exports.escape = escape;\nfunction isFunction(obj) {\n return ObjProto.toString.call(obj) === '[object Function]';\n}\n_exports.isFunction = isFunction;\nfunction isArray(obj) {\n return ObjProto.toString.call(obj) === '[object Array]';\n}\n_exports.isArray = isArray;\nfunction isString(obj) {\n return ObjProto.toString.call(obj) === '[object String]';\n}\n_exports.isString = isString;\nfunction isObject(obj) {\n return ObjProto.toString.call(obj) === '[object Object]';\n}\n_exports.isObject = isObject;\n\n/**\n * @param {string|number} attr\n * @returns {(string|number)[]}\n * @private\n */\nfunction _prepareAttributeParts(attr) {\n if (!attr) {\n return [];\n }\n if (typeof attr === 'string') {\n return attr.split('.');\n }\n return [attr];\n}\n\n/**\n * @param {string} attribute Attribute value. Dots allowed.\n * @returns {function(Object): *}\n */\nfunction getAttrGetter(attribute) {\n var parts = _prepareAttributeParts(attribute);\n return function attrGetter(item) {\n var _item = item;\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n\n // If item is not an object, and we still got parts to handle, it means\n // that something goes wrong. Just roll out to undefined in that case.\n if (hasOwnProp(_item, part)) {\n _item = _item[part];\n } else {\n return undefined;\n }\n }\n return _item;\n };\n}\n_exports.getAttrGetter = getAttrGetter;\nfunction groupBy(obj, val, throwOnUndefined) {\n var result = {};\n var iterator = isFunction(val) ? val : getAttrGetter(val);\n for (var i = 0; i < obj.length; i++) {\n var value = obj[i];\n var key = iterator(value, i);\n if (key === undefined && throwOnUndefined === true) {\n throw new TypeError(\"groupby: attribute \\\"\" + val + \"\\\" resolved to undefined\");\n }\n (result[key] || (result[key] = [])).push(value);\n }\n return result;\n}\n_exports.groupBy = groupBy;\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj);\n}\n_exports.toArray = toArray;\nfunction without(array) {\n var result = [];\n if (!array) {\n return result;\n }\n var length = array.length;\n var contains = toArray(arguments).slice(1);\n var index = -1;\n while (++index < length) {\n if (indexOf(contains, array[index]) === -1) {\n result.push(array[index]);\n }\n }\n return result;\n}\n_exports.without = without;\nfunction repeat(char_, n) {\n var str = '';\n for (var i = 0; i < n; i++) {\n str += char_;\n }\n return str;\n}\n_exports.repeat = repeat;\nfunction each(obj, func, context) {\n if (obj == null) {\n return;\n }\n if (ArrayProto.forEach && obj.forEach === ArrayProto.forEach) {\n obj.forEach(func, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n func.call(context, obj[i], i, obj);\n }\n }\n}\n_exports.each = each;\nfunction map(obj, func) {\n var results = [];\n if (obj == null) {\n return results;\n }\n if (ArrayProto.map && obj.map === ArrayProto.map) {\n return obj.map(func);\n }\n for (var i = 0; i < obj.length; i++) {\n results[results.length] = func(obj[i], i);\n }\n if (obj.length === +obj.length) {\n results.length = obj.length;\n }\n return results;\n}\n_exports.map = map;\nfunction asyncIter(arr, iter, cb) {\n var i = -1;\n function next() {\n i++;\n if (i < arr.length) {\n iter(arr[i], i, next, cb);\n } else {\n cb();\n }\n }\n next();\n}\n_exports.asyncIter = asyncIter;\nfunction asyncFor(obj, iter, cb) {\n var keys = keys_(obj || {});\n var len = keys.length;\n var i = -1;\n function next() {\n i++;\n var k = keys[i];\n if (i < len) {\n iter(k, obj[k], i, len, next);\n } else {\n cb();\n }\n }\n next();\n}\n_exports.asyncFor = asyncFor;\nfunction indexOf(arr, searchElement, fromIndex) {\n return Array.prototype.indexOf.call(arr || [], searchElement, fromIndex);\n}\n_exports.indexOf = indexOf;\nfunction keys_(obj) {\n /* eslint-disable no-restricted-syntax */\n var arr = [];\n for (var k in obj) {\n if (hasOwnProp(obj, k)) {\n arr.push(k);\n }\n }\n return arr;\n}\n_exports.keys = keys_;\nfunction _entries(obj) {\n return keys_(obj).map(function (k) {\n return [k, obj[k]];\n });\n}\n_exports._entries = _entries;\nfunction _values(obj) {\n return keys_(obj).map(function (k) {\n return obj[k];\n });\n}\n_exports._values = _values;\nfunction extend(obj1, obj2) {\n obj1 = obj1 || {};\n keys_(obj2).forEach(function (k) {\n obj1[k] = obj2[k];\n });\n return obj1;\n}\n_exports._assign = _exports.extend = extend;\nfunction inOperator(key, val) {\n if (isArray(val) || isString(val)) {\n return val.indexOf(key) !== -1;\n } else if (isObject(val)) {\n return key in val;\n }\n throw new Error('Cannot use \"in\" operator to search for \"' + key + '\" in unexpected types.');\n}\n_exports.inOperator = inOperator;","\"use strict\";\n\nvar domain; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Avoids a function call\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n // Ensure flushing is not bound to any domain.\n // It is not sufficient to exit the domain, because domains exist on a stack.\n // To execute code outside of any domain, the following dance is necessary.\n var parentDomain = process.domain;\n if (parentDomain) {\n if (!domain) {\n // Lazy execute the domain module.\n // Only employed if the user elects to use domains.\n domain = require(\"domain\");\n }\n domain.active = process.domain = null;\n }\n\n // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n // cannot handle recursion.\n // `requestFlush` will only be called recursively from `asap.js`, to resume\n // flushing after an error is thrown into a domain.\n // Conveniently, `setImmediate` was introduced in the same version\n // `process.nextTick` started throwing recursion errors.\n if (flushing && hasSetImmediate) {\n setImmediate(flush);\n } else {\n process.nextTick(flush);\n }\n\n if (parentDomain) {\n domain.active = process.domain = parentDomain;\n }\n}\n","\"use strict\";\n\nvar rawAsap = require(\"./raw\");\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawTask.domain = process.domain;\n rawAsap(rawTask);\n}\n\nfunction RawTask() {\n this.task = null;\n this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n if (this.domain) {\n this.domain.enter();\n }\n var threw = true;\n try {\n this.task.call();\n threw = false;\n // If the task throws an exception (presumably) Node.js restores the\n // domain stack for the next event.\n if (this.domain) {\n this.domain.exit();\n }\n } finally {\n // We use try/finally and a threw flag to avoid messing up stack traces\n // when we catch and release errors.\n if (threw) {\n // In Node.js, uncaught exceptions are considered fatal errors.\n // Re-throw them to interrupt flushing!\n // Ensure that flushing continues if an uncaught exception is\n // suppressed listening process.on(\"uncaughtException\") or\n // domain.on(\"error\").\n rawAsap.requestFlush();\n }\n // If the task threw an error, we do not want to exit the domain here.\n // Exiting the domain would prevent the domain from catching the error.\n this.task = null;\n this.domain = null;\n freeTasks.push(this);\n }\n};\n\n","// MIT license (by Elan Shanker).\n(function(globals) {\n 'use strict';\n\n var executeSync = function(){\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'function'){\n args[0].apply(null, args.splice(1));\n }\n };\n\n var executeAsync = function(fn){\n if (typeof setImmediate === 'function') {\n setImmediate(fn);\n } else if (typeof process !== 'undefined' && process.nextTick) {\n process.nextTick(fn);\n } else {\n setTimeout(fn, 0);\n }\n };\n\n var makeIterator = function (tasks) {\n var makeCallback = function (index) {\n var fn = function () {\n if (tasks.length) {\n tasks[index].apply(null, arguments);\n }\n return fn.next();\n };\n fn.next = function () {\n return (index < tasks.length - 1) ? makeCallback(index + 1): null;\n };\n return fn;\n };\n return makeCallback(0);\n };\n \n var _isArray = Array.isArray || function(maybeArray){\n return Object.prototype.toString.call(maybeArray) === '[object Array]';\n };\n\n var waterfall = function (tasks, callback, forceAsync) {\n var nextTick = forceAsync ? executeAsync : executeSync;\n callback = callback || function () {};\n if (!_isArray(tasks)) {\n var err = new Error('First argument to waterfall must be an array of functions');\n return callback(err);\n }\n if (!tasks.length) {\n return callback();\n }\n var wrapIterator = function (iterator) {\n return function (err) {\n if (err) {\n callback.apply(null, arguments);\n callback = function () {};\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var next = iterator.next();\n if (next) {\n args.push(wrapIterator(next));\n } else {\n args.push(callback);\n }\n nextTick(function () {\n iterator.apply(null, args);\n });\n }\n };\n };\n wrapIterator(makeIterator(tasks))();\n };\n\n if (typeof define !== 'undefined' && define.amd) {\n define([], function () {\n return waterfall;\n }); // RequireJS\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = waterfall; // CommonJS\n } else {\n globals.waterfall = waterfall; // <script>\n }\n})(this);\n","'use strict';\n\nvar lib = require('./lib');\nvar whitespaceChars = \" \\n\\t\\r\\xA0\";\nvar delimChars = '()[]{}%*-+~/#,:|.<>=!';\nvar intChars = '0123456789';\nvar BLOCK_START = '{%';\nvar BLOCK_END = '%}';\nvar VARIABLE_START = '{{';\nvar VARIABLE_END = '}}';\nvar COMMENT_START = '{#';\nvar COMMENT_END = '#}';\nvar TOKEN_STRING = 'string';\nvar TOKEN_WHITESPACE = 'whitespace';\nvar TOKEN_DATA = 'data';\nvar TOKEN_BLOCK_START = 'block-start';\nvar TOKEN_BLOCK_END = 'block-end';\nvar TOKEN_VARIABLE_START = 'variable-start';\nvar TOKEN_VARIABLE_END = 'variable-end';\nvar TOKEN_COMMENT = 'comment';\nvar TOKEN_LEFT_PAREN = 'left-paren';\nvar TOKEN_RIGHT_PAREN = 'right-paren';\nvar TOKEN_LEFT_BRACKET = 'left-bracket';\nvar TOKEN_RIGHT_BRACKET = 'right-bracket';\nvar TOKEN_LEFT_CURLY = 'left-curly';\nvar TOKEN_RIGHT_CURLY = 'right-curly';\nvar TOKEN_OPERATOR = 'operator';\nvar TOKEN_COMMA = 'comma';\nvar TOKEN_COLON = 'colon';\nvar TOKEN_TILDE = 'tilde';\nvar TOKEN_PIPE = 'pipe';\nvar TOKEN_INT = 'int';\nvar TOKEN_FLOAT = 'float';\nvar TOKEN_BOOLEAN = 'boolean';\nvar TOKEN_NONE = 'none';\nvar TOKEN_SYMBOL = 'symbol';\nvar TOKEN_SPECIAL = 'special';\nvar TOKEN_REGEX = 'regex';\nfunction token(type, value, lineno, colno) {\n return {\n type: type,\n value: value,\n lineno: lineno,\n colno: colno\n };\n}\nvar Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(str, opts) {\n this.str = str;\n this.index = 0;\n this.len = str.length;\n this.lineno = 0;\n this.colno = 0;\n this.in_code = false;\n opts = opts || {};\n var tags = opts.tags || {};\n this.tags = {\n BLOCK_START: tags.blockStart || BLOCK_START,\n BLOCK_END: tags.blockEnd || BLOCK_END,\n VARIABLE_START: tags.variableStart || VARIABLE_START,\n VARIABLE_END: tags.variableEnd || VARIABLE_END,\n COMMENT_START: tags.commentStart || COMMENT_START,\n COMMENT_END: tags.commentEnd || COMMENT_END\n };\n this.trimBlocks = !!opts.trimBlocks;\n this.lstripBlocks = !!opts.lstripBlocks;\n }\n var _proto = Tokenizer.prototype;\n _proto.nextToken = function nextToken() {\n var lineno = this.lineno;\n var colno = this.colno;\n var tok;\n if (this.in_code) {\n // Otherwise, if we are in a block parse it as code\n var cur = this.current();\n if (this.isFinished()) {\n // We have nothing else to parse\n return null;\n } else if (cur === '\"' || cur === '\\'') {\n // We've hit a string\n return token(TOKEN_STRING, this._parseString(cur), lineno, colno);\n } else if (tok = this._extract(whitespaceChars)) {\n // We hit some whitespace\n return token(TOKEN_WHITESPACE, tok, lineno, colno);\n } else if ((tok = this._extractString(this.tags.BLOCK_END)) || (tok = this._extractString('-' + this.tags.BLOCK_END))) {\n // Special check for the block end tag\n //\n // It is a requirement that start and end tags are composed of\n // delimiter characters (%{}[] etc), and our code always\n // breaks on delimiters so we can assume the token parsing\n // doesn't consume these elsewhere\n this.in_code = false;\n if (this.trimBlocks) {\n cur = this.current();\n if (cur === '\\n') {\n // Skip newline\n this.forward();\n } else if (cur === '\\r') {\n // Skip CRLF newline\n this.forward();\n cur = this.current();\n if (cur === '\\n') {\n this.forward();\n } else {\n // Was not a CRLF, so go back\n this.back();\n }\n }\n }\n return token(TOKEN_BLOCK_END, tok, lineno, colno);\n } else if ((tok = this._extractString(this.tags.VARIABLE_END)) || (tok = this._extractString('-' + this.tags.VARIABLE_END))) {\n // Special check for variable end tag (see above)\n this.in_code = false;\n return token(TOKEN_VARIABLE_END, tok, lineno, colno);\n } else if (cur === 'r' && this.str.charAt(this.index + 1) === '/') {\n // Skip past 'r/'.\n this.forwardN(2);\n\n // Extract until the end of the regex -- / ends it, \\/ does not.\n var regexBody = '';\n while (!this.isFinished()) {\n if (this.current() === '/' && this.previous() !== '\\\\') {\n this.forward();\n break;\n } else {\n regexBody += this.current();\n this.forward();\n }\n }\n\n // Check for flags.\n // The possible flags are according to https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp)\n var POSSIBLE_FLAGS = ['g', 'i', 'm', 'y'];\n var regexFlags = '';\n while (!this.isFinished()) {\n var isCurrentAFlag = POSSIBLE_FLAGS.indexOf(this.current()) !== -1;\n if (isCurrentAFlag) {\n regexFlags += this.current();\n this.forward();\n } else {\n break;\n }\n }\n return token(TOKEN_REGEX, {\n body: regexBody,\n flags: regexFlags\n }, lineno, colno);\n } else if (delimChars.indexOf(cur) !== -1) {\n // We've hit a delimiter (a special char like a bracket)\n this.forward();\n var complexOps = ['==', '===', '!=', '!==', '<=', '>=', '//', '**'];\n var curComplex = cur + this.current();\n var type;\n if (lib.indexOf(complexOps, curComplex) !== -1) {\n this.forward();\n cur = curComplex;\n\n // See if this is a strict equality/inequality comparator\n if (lib.indexOf(complexOps, curComplex + this.current()) !== -1) {\n cur = curComplex + this.current();\n this.forward();\n }\n }\n switch (cur) {\n case '(':\n type = TOKEN_LEFT_PAREN;\n break;\n case ')':\n type = TOKEN_RIGHT_PAREN;\n break;\n case '[':\n type = TOKEN_LEFT_BRACKET;\n break;\n case ']':\n type = TOKEN_RIGHT_BRACKET;\n break;\n case '{':\n type = TOKEN_LEFT_CURLY;\n break;\n case '}':\n type = TOKEN_RIGHT_CURLY;\n break;\n case ',':\n type = TOKEN_COMMA;\n break;\n case ':':\n type = TOKEN_COLON;\n break;\n case '~':\n type = TOKEN_TILDE;\n break;\n case '|':\n type = TOKEN_PIPE;\n break;\n default:\n type = TOKEN_OPERATOR;\n }\n return token(type, cur, lineno, colno);\n } else {\n // We are not at whitespace or a delimiter, so extract the\n // text and parse it\n tok = this._extractUntil(whitespaceChars + delimChars);\n if (tok.match(/^[-+]?[0-9]+$/)) {\n if (this.current() === '.') {\n this.forward();\n var dec = this._extract(intChars);\n return token(TOKEN_FLOAT, tok + '.' + dec, lineno, colno);\n } else {\n return token(TOKEN_INT, tok, lineno, colno);\n }\n } else if (tok.match(/^(true|false)$/)) {\n return token(TOKEN_BOOLEAN, tok, lineno, colno);\n } else if (tok === 'none') {\n return token(TOKEN_NONE, tok, lineno, colno);\n /*\n * Added to make the test `null is null` evaluate truthily.\n * Otherwise, Nunjucks will look up null in the context and\n * return `undefined`, which is not what we want. This *may* have\n * consequences is someone is using null in their templates as a\n * variable.\n */\n } else if (tok === 'null') {\n return token(TOKEN_NONE, tok, lineno, colno);\n } else if (tok) {\n return token(TOKEN_SYMBOL, tok, lineno, colno);\n } else {\n throw new Error('Unexpected value while parsing: ' + tok);\n }\n }\n } else {\n // Parse out the template text, breaking on tag\n // delimiters because we need to look for block/variable start\n // tags (don't use the full delimChars for optimization)\n var beginChars = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0);\n if (this.isFinished()) {\n return null;\n } else if ((tok = this._extractString(this.tags.BLOCK_START + '-')) || (tok = this._extractString(this.tags.BLOCK_START))) {\n this.in_code = true;\n return token(TOKEN_BLOCK_START, tok, lineno, colno);\n } else if ((tok = this._extractString(this.tags.VARIABLE_START + '-')) || (tok = this._extractString(this.tags.VARIABLE_START))) {\n this.in_code = true;\n return token(TOKEN_VARIABLE_START, tok, lineno, colno);\n } else {\n tok = '';\n var data;\n var inComment = false;\n if (this._matches(this.tags.COMMENT_START)) {\n inComment = true;\n tok = this._extractString(this.tags.COMMENT_START);\n }\n\n // Continually consume text, breaking on the tag delimiter\n // characters and checking to see if it's a start tag.\n //\n // We could hit the end of the template in the middle of\n // our looping, so check for the null return value from\n // _extractUntil\n while ((data = this._extractUntil(beginChars)) !== null) {\n tok += data;\n if ((this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !inComment) {\n if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= tok.length) {\n var lastLine = tok.slice(-this.colno);\n if (/^\\s+$/.test(lastLine)) {\n // Remove block leading whitespace from beginning of the string\n tok = tok.slice(0, -this.colno);\n if (!tok.length) {\n // All data removed, collapse to avoid unnecessary nodes\n // by returning next token (block start)\n return this.nextToken();\n }\n }\n }\n // If it is a start tag, stop looping\n break;\n } else if (this._matches(this.tags.COMMENT_END)) {\n if (!inComment) {\n throw new Error('unexpected end of comment');\n }\n tok += this._extractString(this.tags.COMMENT_END);\n break;\n } else {\n // It does not match any tag, so add the character and\n // carry on\n tok += this.current();\n this.forward();\n }\n }\n if (data === null && inComment) {\n throw new Error('expected end of comment, got end of file');\n }\n return token(inComment ? TOKEN_COMMENT : TOKEN_DATA, tok, lineno, colno);\n }\n }\n };\n _proto._parseString = function _parseString(delimiter) {\n this.forward();\n var str = '';\n while (!this.isFinished() && this.current() !== delimiter) {\n var cur = this.current();\n if (cur === '\\\\') {\n this.forward();\n switch (this.current()) {\n case 'n':\n str += '\\n';\n break;\n case 't':\n str += '\\t';\n break;\n case 'r':\n str += '\\r';\n break;\n default:\n str += this.current();\n }\n this.forward();\n } else {\n str += cur;\n this.forward();\n }\n }\n this.forward();\n return str;\n };\n _proto._matches = function _matches(str) {\n if (this.index + str.length > this.len) {\n return null;\n }\n var m = this.str.slice(this.index, this.index + str.length);\n return m === str;\n };\n _proto._extractString = function _extractString(str) {\n if (this._matches(str)) {\n this.forwardN(str.length);\n return str;\n }\n return null;\n };\n _proto._extractUntil = function _extractUntil(charString) {\n // Extract all non-matching chars, with the default matching set\n // to everything\n return this._extractMatching(true, charString || '');\n };\n _proto._extract = function _extract(charString) {\n // Extract all matching chars (no default, so charString must be\n // explicit)\n return this._extractMatching(false, charString);\n };\n _proto._extractMatching = function _extractMatching(breakOnMatch, charString) {\n // Pull out characters until a breaking char is hit.\n // If breakOnMatch is false, a non-matching char stops it.\n // If breakOnMatch is true, a matching char stops it.\n\n if (this.isFinished()) {\n return null;\n }\n var first = charString.indexOf(this.current());\n\n // Only proceed if the first character doesn't meet our condition\n if (breakOnMatch && first === -1 || !breakOnMatch && first !== -1) {\n var t = this.current();\n this.forward();\n\n // And pull out all the chars one at a time until we hit a\n // breaking char\n var idx = charString.indexOf(this.current());\n while ((breakOnMatch && idx === -1 || !breakOnMatch && idx !== -1) && !this.isFinished()) {\n t += this.current();\n this.forward();\n idx = charString.indexOf(this.current());\n }\n return t;\n }\n return '';\n };\n _proto._extractRegex = function _extractRegex(regex) {\n var matches = this.currentStr().match(regex);\n if (!matches) {\n return null;\n }\n\n // Move forward whatever was matched\n this.forwardN(matches[0].length);\n return matches;\n };\n _proto.isFinished = function isFinished() {\n return this.index >= this.len;\n };\n _proto.forwardN = function forwardN(n) {\n for (var i = 0; i < n; i++) {\n this.forward();\n }\n };\n _proto.forward = function forward() {\n this.index++;\n if (this.previous() === '\\n') {\n this.lineno++;\n this.colno = 0;\n } else {\n this.colno++;\n }\n };\n _proto.backN = function backN(n) {\n for (var i = 0; i < n; i++) {\n this.back();\n }\n };\n _proto.back = function back() {\n this.index--;\n if (this.current() === '\\n') {\n this.lineno--;\n var idx = this.src.lastIndexOf('\\n', this.index - 1);\n if (idx === -1) {\n this.colno = this.index;\n } else {\n this.colno = this.index - idx;\n }\n } else {\n this.colno--;\n }\n }\n\n // current returns current character\n ;\n _proto.current = function current() {\n if (!this.isFinished()) {\n return this.str.charAt(this.index);\n }\n return '';\n }\n\n // currentStr returns what's left of the unparsed string\n ;\n _proto.currentStr = function currentStr() {\n if (!this.isFinished()) {\n return this.str.substr(this.index);\n }\n return '';\n };\n _proto.previous = function previous() {\n return this.str.charAt(this.index - 1);\n };\n return Tokenizer;\n}();\nmodule.exports = {\n lex: function lex(src, opts) {\n return new Tokenizer(src, opts);\n },\n TOKEN_STRING: TOKEN_STRING,\n TOKEN_WHITESPACE: TOKEN_WHITESPACE,\n TOKEN_DATA: TOKEN_DATA,\n TOKEN_BLOCK_START: TOKEN_BLOCK_START,\n TOKEN_BLOCK_END: TOKEN_BLOCK_END,\n TOKEN_VARIABLE_START: TOKEN_VARIABLE_START,\n TOKEN_VARIABLE_END: TOKEN_VARIABLE_END,\n TOKEN_COMMENT: TOKEN_COMMENT,\n TOKEN_LEFT_PAREN: TOKEN_LEFT_PAREN,\n TOKEN_RIGHT_PAREN: TOKEN_RIGHT_PAREN,\n TOKEN_LEFT_BRACKET: TOKEN_LEFT_BRACKET,\n TOKEN_RIGHT_BRACKET: TOKEN_RIGHT_BRACKET,\n TOKEN_LEFT_CURLY: TOKEN_LEFT_CURLY,\n TOKEN_RIGHT_CURLY: TOKEN_RIGHT_CURLY,\n TOKEN_OPERATOR: TOKEN_OPERATOR,\n TOKEN_COMMA: TOKEN_COMMA,\n TOKEN_COLON: TOKEN_COLON,\n TOKEN_TILDE: TOKEN_TILDE,\n TOKEN_PIPE: TOKEN_PIPE,\n TOKEN_INT: TOKEN_INT,\n TOKEN_FLOAT: TOKEN_FLOAT,\n TOKEN_BOOLEAN: TOKEN_BOOLEAN,\n TOKEN_NONE: TOKEN_NONE,\n TOKEN_SYMBOL: TOKEN_SYMBOL,\n TOKEN_SPECIAL: TOKEN_SPECIAL,\n TOKEN_REGEX: TOKEN_REGEX\n};","'use strict';\n\n// A simple class system, more documentation to come\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar EventEmitter = require('events');\nvar lib = require('./lib');\nfunction parentWrap(parent, prop) {\n if (typeof parent !== 'function' || typeof prop !== 'function') {\n return prop;\n }\n return function wrap() {\n // Save the current parent method\n var tmp = this.parent;\n\n // Set parent to the previous method, call, and restore\n this.parent = parent;\n var res = prop.apply(this, arguments);\n this.parent = tmp;\n return res;\n };\n}\nfunction extendClass(cls, name, props) {\n props = props || {};\n lib.keys(props).forEach(function (k) {\n props[k] = parentWrap(cls.prototype[k], props[k]);\n });\n var subclass = /*#__PURE__*/function (_cls) {\n _inheritsLoose(subclass, _cls);\n function subclass() {\n return _cls.apply(this, arguments) || this;\n }\n _createClass(subclass, [{\n key: \"typename\",\n get: function get() {\n return name;\n }\n }]);\n return subclass;\n }(cls);\n lib._assign(subclass.prototype, props);\n return subclass;\n}\nvar Obj = /*#__PURE__*/function () {\n function Obj() {\n // Unfortunately necessary for backwards compatibility\n this.init.apply(this, arguments);\n }\n var _proto = Obj.prototype;\n _proto.init = function init() {};\n Obj.extend = function extend(name, props) {\n if (typeof name === 'object') {\n props = name;\n name = 'anonymous';\n }\n return extendClass(this, name, props);\n };\n _createClass(Obj, [{\n key: \"typename\",\n get: function get() {\n return this.constructor.name;\n }\n }]);\n return Obj;\n}();\nvar EmitterObj = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(EmitterObj, _EventEmitter);\n function EmitterObj() {\n var _this2;\n var _this;\n _this = _EventEmitter.call(this) || this;\n // Unfortunately necessary for backwards compatibility\n (_this2 = _this).init.apply(_this2, arguments);\n return _this;\n }\n var _proto2 = EmitterObj.prototype;\n _proto2.init = function init() {};\n EmitterObj.extend = function extend(name, props) {\n if (typeof name === 'object') {\n props = name;\n name = 'anonymous';\n }\n return extendClass(this, name, props);\n };\n _createClass(EmitterObj, [{\n key: \"typename\",\n get: function get() {\n return this.constructor.name;\n }\n }]);\n return EmitterObj;\n}(EventEmitter);\nmodule.exports = {\n Obj: Obj,\n EmitterObj: EmitterObj\n};","'use strict';\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar _require = require('./object'),\n Obj = _require.Obj;\nfunction traverseAndCheck(obj, type, results) {\n if (obj instanceof type) {\n results.push(obj);\n }\n if (obj instanceof Node) {\n obj.findAll(type, results);\n }\n}\nvar Node = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Node, _Obj);\n function Node() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto = Node.prototype;\n _proto.init = function init(lineno, colno) {\n var _arguments = arguments,\n _this = this;\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n this.lineno = lineno;\n this.colno = colno;\n this.fields.forEach(function (field, i) {\n // The first two args are line/col numbers, so offset by 2\n var val = _arguments[i + 2];\n\n // Fields should never be undefined, but null. It makes\n // testing easier to normalize values.\n if (val === undefined) {\n val = null;\n }\n _this[field] = val;\n });\n };\n _proto.findAll = function findAll(type, results) {\n var _this2 = this;\n results = results || [];\n if (this instanceof NodeList) {\n this.children.forEach(function (child) {\n return traverseAndCheck(child, type, results);\n });\n } else {\n this.fields.forEach(function (field) {\n return traverseAndCheck(_this2[field], type, results);\n });\n }\n return results;\n };\n _proto.iterFields = function iterFields(func) {\n var _this3 = this;\n this.fields.forEach(function (field) {\n func(_this3[field], field);\n });\n };\n return Node;\n}(Obj); // Abstract nodes\nvar Value = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Value, _Node);\n function Value() {\n return _Node.apply(this, arguments) || this;\n }\n _createClass(Value, [{\n key: \"typename\",\n get: function get() {\n return 'Value';\n }\n }, {\n key: \"fields\",\n get: function get() {\n return ['value'];\n }\n }]);\n return Value;\n}(Node); // Concrete nodes\nvar NodeList = /*#__PURE__*/function (_Node2) {\n _inheritsLoose(NodeList, _Node2);\n function NodeList() {\n return _Node2.apply(this, arguments) || this;\n }\n var _proto2 = NodeList.prototype;\n _proto2.init = function init(lineno, colno, nodes) {\n _Node2.prototype.init.call(this, lineno, colno, nodes || []);\n };\n _proto2.addChild = function addChild(node) {\n this.children.push(node);\n };\n _createClass(NodeList, [{\n key: \"typename\",\n get: function get() {\n return 'NodeList';\n }\n }, {\n key: \"fields\",\n get: function get() {\n return ['children'];\n }\n }]);\n return NodeList;\n}(Node);\nvar Root = NodeList.extend('Root');\nvar Literal = Value.extend('Literal');\nvar _Symbol = Value.extend('Symbol');\nvar Group = NodeList.extend('Group');\nvar ArrayNode = NodeList.extend('Array');\nvar Pair = Node.extend('Pair', {\n fields: ['key', 'value']\n});\nvar Dict = NodeList.extend('Dict');\nvar LookupVal = Node.extend('LookupVal', {\n fields: ['target', 'val']\n});\nvar If = Node.extend('If', {\n fields: ['cond', 'body', 'else_']\n});\nvar IfAsync = If.extend('IfAsync');\nvar InlineIf = Node.extend('InlineIf', {\n fields: ['cond', 'body', 'else_']\n});\nvar For = Node.extend('For', {\n fields: ['arr', 'name', 'body', 'else_']\n});\nvar AsyncEach = For.extend('AsyncEach');\nvar AsyncAll = For.extend('AsyncAll');\nvar Macro = Node.extend('Macro', {\n fields: ['name', 'args', 'body']\n});\nvar Caller = Macro.extend('Caller');\nvar Import = Node.extend('Import', {\n fields: ['template', 'target', 'withContext']\n});\nvar FromImport = /*#__PURE__*/function (_Node3) {\n _inheritsLoose(FromImport, _Node3);\n function FromImport() {\n return _Node3.apply(this, arguments) || this;\n }\n var _proto3 = FromImport.prototype;\n _proto3.init = function init(lineno, colno, template, names, withContext) {\n _Node3.prototype.init.call(this, lineno, colno, template, names || new NodeList(), withContext);\n };\n _createClass(FromImport, [{\n key: \"typename\",\n get: function get() {\n return 'FromImport';\n }\n }, {\n key: \"fields\",\n get: function get() {\n return ['template', 'names', 'withContext'];\n }\n }]);\n return FromImport;\n}(Node);\nvar FunCall = Node.extend('FunCall', {\n fields: ['name', 'args']\n});\nvar Filter = FunCall.extend('Filter');\nvar FilterAsync = Filter.extend('FilterAsync', {\n fields: ['name', 'args', 'symbol']\n});\nvar KeywordArgs = Dict.extend('KeywordArgs');\nvar Block = Node.extend('Block', {\n fields: ['name', 'body']\n});\nvar Super = Node.extend('Super', {\n fields: ['blockName', 'symbol']\n});\nvar TemplateRef = Node.extend('TemplateRef', {\n fields: ['template']\n});\nvar Extends = TemplateRef.extend('Extends');\nvar Include = Node.extend('Include', {\n fields: ['template', 'ignoreMissing']\n});\nvar Set = Node.extend('Set', {\n fields: ['targets', 'value']\n});\nvar Switch = Node.extend('Switch', {\n fields: ['expr', 'cases', 'default']\n});\nvar Case = Node.extend('Case', {\n fields: ['cond', 'body']\n});\nvar Output = NodeList.extend('Output');\nvar Capture = Node.extend('Capture', {\n fields: ['body']\n});\nvar TemplateData = Literal.extend('TemplateData');\nvar UnaryOp = Node.extend('UnaryOp', {\n fields: ['target']\n});\nvar BinOp = Node.extend('BinOp', {\n fields: ['left', 'right']\n});\nvar In = BinOp.extend('In');\nvar Is = BinOp.extend('Is');\nvar Or = BinOp.extend('Or');\nvar And = BinOp.extend('And');\nvar Not = UnaryOp.extend('Not');\nvar Add = BinOp.extend('Add');\nvar Concat = BinOp.extend('Concat');\nvar Sub = BinOp.extend('Sub');\nvar Mul = BinOp.extend('Mul');\nvar Div = BinOp.extend('Div');\nvar FloorDiv = BinOp.extend('FloorDiv');\nvar Mod = BinOp.extend('Mod');\nvar Pow = BinOp.extend('Pow');\nvar Neg = UnaryOp.extend('Neg');\nvar Pos = UnaryOp.extend('Pos');\nvar Compare = Node.extend('Compare', {\n fields: ['expr', 'ops']\n});\nvar CompareOperand = Node.extend('CompareOperand', {\n fields: ['expr', 'type']\n});\nvar CallExtension = Node.extend('CallExtension', {\n init: function init(ext, prop, args, contentArgs) {\n this.parent();\n this.extName = ext.__name || ext;\n this.prop = prop;\n this.args = args || new NodeList();\n this.contentArgs = contentArgs || [];\n this.autoescape = ext.autoescape;\n },\n fields: ['extName', 'prop', 'args', 'contentArgs']\n});\nvar CallExtensionAsync = CallExtension.extend('CallExtensionAsync');\n\n// This is hacky, but this is just a debugging function anyway\nfunction print(str, indent, inline) {\n var lines = str.split('\\n');\n lines.forEach(function (line, i) {\n if (line && (inline && i > 0 || !inline)) {\n process.stdout.write(' '.repeat(indent));\n }\n var nl = i === lines.length - 1 ? '' : '\\n';\n process.stdout.write(\"\" + line + nl);\n });\n}\n\n// Print the AST in a nicely formatted tree format for debuggin\nfunction printNodes(node, indent) {\n indent = indent || 0;\n print(node.typename + ': ', indent);\n if (node instanceof NodeList) {\n print('\\n');\n node.children.forEach(function (n) {\n printNodes(n, indent + 2);\n });\n } else if (node instanceof CallExtension) {\n print(node.extName + \".\" + node.prop + \"\\n\");\n if (node.args) {\n printNodes(node.args, indent + 2);\n }\n if (node.contentArgs) {\n node.contentArgs.forEach(function (n) {\n printNodes(n, indent + 2);\n });\n }\n } else {\n var nodes = [];\n var props = null;\n node.iterFields(function (val, fieldName) {\n if (val instanceof Node) {\n nodes.push([fieldName, val]);\n } else {\n props = props || {};\n props[fieldName] = val;\n }\n });\n if (props) {\n print(JSON.stringify(props, null, 2) + '\\n', null, true);\n } else {\n print('\\n');\n }\n nodes.forEach(function (_ref) {\n var fieldName = _ref[0],\n n = _ref[1];\n print(\"[\" + fieldName + \"] =>\", indent + 2);\n printNodes(n, indent + 4);\n });\n }\n}\nmodule.exports = {\n Node: Node,\n Root: Root,\n NodeList: NodeList,\n Value: Value,\n Literal: Literal,\n Symbol: _Symbol,\n Group: Group,\n Array: ArrayNode,\n Pair: Pair,\n Dict: Dict,\n Output: Output,\n Capture: Capture,\n TemplateData: TemplateData,\n If: If,\n IfAsync: IfAsync,\n InlineIf: InlineIf,\n For: For,\n AsyncEach: AsyncEach,\n AsyncAll: AsyncAll,\n Macro: Macro,\n Caller: Caller,\n Import: Import,\n FromImport: FromImport,\n FunCall: FunCall,\n Filter: Filter,\n FilterAsync: FilterAsync,\n KeywordArgs: KeywordArgs,\n Block: Block,\n Super: Super,\n Extends: Extends,\n Include: Include,\n Set: Set,\n Switch: Switch,\n Case: Case,\n LookupVal: LookupVal,\n BinOp: BinOp,\n In: In,\n Is: Is,\n Or: Or,\n And: And,\n Not: Not,\n Add: Add,\n Concat: Concat,\n Sub: Sub,\n Mul: Mul,\n Div: Div,\n FloorDiv: FloorDiv,\n Mod: Mod,\n Pow: Pow,\n Neg: Neg,\n Pos: Pos,\n Compare: Compare,\n CompareOperand: CompareOperand,\n CallExtension: CallExtension,\n CallExtensionAsync: CallExtensionAsync,\n printNodes: printNodes\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar lexer = require('./lexer');\nvar nodes = require('./nodes');\nvar Obj = require('./object').Obj;\nvar lib = require('./lib');\nvar Parser = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Parser, _Obj);\n function Parser() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto = Parser.prototype;\n _proto.init = function init(tokens) {\n this.tokens = tokens;\n this.peeked = null;\n this.breakOnBlocks = null;\n this.dropLeadingWhitespace = false;\n this.extensions = [];\n };\n _proto.nextToken = function nextToken(withWhitespace) {\n var tok;\n if (this.peeked) {\n if (!withWhitespace && this.peeked.type === lexer.TOKEN_WHITESPACE) {\n this.peeked = null;\n } else {\n tok = this.peeked;\n this.peeked = null;\n return tok;\n }\n }\n tok = this.tokens.nextToken();\n if (!withWhitespace) {\n while (tok && tok.type === lexer.TOKEN_WHITESPACE) {\n tok = this.tokens.nextToken();\n }\n }\n return tok;\n };\n _proto.peekToken = function peekToken() {\n this.peeked = this.peeked || this.nextToken();\n return this.peeked;\n };\n _proto.pushToken = function pushToken(tok) {\n if (this.peeked) {\n throw new Error('pushToken: can only push one token on between reads');\n }\n this.peeked = tok;\n };\n _proto.error = function error(msg, lineno, colno) {\n if (lineno === undefined || colno === undefined) {\n var tok = this.peekToken() || {};\n lineno = tok.lineno;\n colno = tok.colno;\n }\n if (lineno !== undefined) {\n lineno += 1;\n }\n if (colno !== undefined) {\n colno += 1;\n }\n return new lib.TemplateError(msg, lineno, colno);\n };\n _proto.fail = function fail(msg, lineno, colno) {\n throw this.error(msg, lineno, colno);\n };\n _proto.skip = function skip(type) {\n var tok = this.nextToken();\n if (!tok || tok.type !== type) {\n this.pushToken(tok);\n return false;\n }\n return true;\n };\n _proto.expect = function expect(type) {\n var tok = this.nextToken();\n if (tok.type !== type) {\n this.fail('expected ' + type + ', got ' + tok.type, tok.lineno, tok.colno);\n }\n return tok;\n };\n _proto.skipValue = function skipValue(type, val) {\n var tok = this.nextToken();\n if (!tok || tok.type !== type || tok.value !== val) {\n this.pushToken(tok);\n return false;\n }\n return true;\n };\n _proto.skipSymbol = function skipSymbol(val) {\n return this.skipValue(lexer.TOKEN_SYMBOL, val);\n };\n _proto.advanceAfterBlockEnd = function advanceAfterBlockEnd(name) {\n var tok;\n if (!name) {\n tok = this.peekToken();\n if (!tok) {\n this.fail('unexpected end of file');\n }\n if (tok.type !== lexer.TOKEN_SYMBOL) {\n this.fail('advanceAfterBlockEnd: expected symbol token or ' + 'explicit name to be passed');\n }\n name = this.nextToken().value;\n }\n tok = this.nextToken();\n if (tok && tok.type === lexer.TOKEN_BLOCK_END) {\n if (tok.value.charAt(0) === '-') {\n this.dropLeadingWhitespace = true;\n }\n } else {\n this.fail('expected block end in ' + name + ' statement');\n }\n return tok;\n };\n _proto.advanceAfterVariableEnd = function advanceAfterVariableEnd() {\n var tok = this.nextToken();\n if (tok && tok.type === lexer.TOKEN_VARIABLE_END) {\n this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.VARIABLE_END.length - 1) === '-';\n } else {\n this.pushToken(tok);\n this.fail('expected variable end');\n }\n };\n _proto.parseFor = function parseFor() {\n var forTok = this.peekToken();\n var node;\n var endBlock;\n if (this.skipSymbol('for')) {\n node = new nodes.For(forTok.lineno, forTok.colno);\n endBlock = 'endfor';\n } else if (this.skipSymbol('asyncEach')) {\n node = new nodes.AsyncEach(forTok.lineno, forTok.colno);\n endBlock = 'endeach';\n } else if (this.skipSymbol('asyncAll')) {\n node = new nodes.AsyncAll(forTok.lineno, forTok.colno);\n endBlock = 'endall';\n } else {\n this.fail('parseFor: expected for{Async}', forTok.lineno, forTok.colno);\n }\n node.name = this.parsePrimary();\n if (!(node.name instanceof nodes.Symbol)) {\n this.fail('parseFor: variable name expected for loop');\n }\n var type = this.peekToken().type;\n if (type === lexer.TOKEN_COMMA) {\n // key/value iteration\n var key = node.name;\n node.name = new nodes.Array(key.lineno, key.colno);\n node.name.addChild(key);\n while (this.skip(lexer.TOKEN_COMMA)) {\n var prim = this.parsePrimary();\n node.name.addChild(prim);\n }\n }\n if (!this.skipSymbol('in')) {\n this.fail('parseFor: expected \"in\" keyword for loop', forTok.lineno, forTok.colno);\n }\n node.arr = this.parseExpression();\n this.advanceAfterBlockEnd(forTok.value);\n node.body = this.parseUntilBlocks(endBlock, 'else');\n if (this.skipSymbol('else')) {\n this.advanceAfterBlockEnd('else');\n node.else_ = this.parseUntilBlocks(endBlock);\n }\n this.advanceAfterBlockEnd();\n return node;\n };\n _proto.parseMacro = function parseMacro() {\n var macroTok = this.peekToken();\n if (!this.skipSymbol('macro')) {\n this.fail('expected macro');\n }\n var name = this.parsePrimary(true);\n var args = this.parseSignature();\n var node = new nodes.Macro(macroTok.lineno, macroTok.colno, name, args);\n this.advanceAfterBlockEnd(macroTok.value);\n node.body = this.parseUntilBlocks('endmacro');\n this.advanceAfterBlockEnd();\n return node;\n };\n _proto.parseCall = function parseCall() {\n // a call block is parsed as a normal FunCall, but with an added\n // 'caller' kwarg which is a Caller node.\n var callTok = this.peekToken();\n if (!this.skipSymbol('call')) {\n this.fail('expected call');\n }\n var callerArgs = this.parseSignature(true) || new nodes.NodeList();\n var macroCall = this.parsePrimary();\n this.advanceAfterBlockEnd(callTok.value);\n var body = this.parseUntilBlocks('endcall');\n this.advanceAfterBlockEnd();\n var callerName = new nodes.Symbol(callTok.lineno, callTok.colno, 'caller');\n var callerNode = new nodes.Caller(callTok.lineno, callTok.colno, callerName, callerArgs, body);\n\n // add the additional caller kwarg, adding kwargs if necessary\n var args = macroCall.args.children;\n if (!(args[args.length - 1] instanceof nodes.KeywordArgs)) {\n args.push(new nodes.KeywordArgs());\n }\n var kwargs = args[args.length - 1];\n kwargs.addChild(new nodes.Pair(callTok.lineno, callTok.colno, callerName, callerNode));\n return new nodes.Output(callTok.lineno, callTok.colno, [macroCall]);\n };\n _proto.parseWithContext = function parseWithContext() {\n var tok = this.peekToken();\n var withContext = null;\n if (this.skipSymbol('with')) {\n withContext = true;\n } else if (this.skipSymbol('without')) {\n withContext = false;\n }\n if (withContext !== null) {\n if (!this.skipSymbol('context')) {\n this.fail('parseFrom: expected context after with/without', tok.lineno, tok.colno);\n }\n }\n return withContext;\n };\n _proto.parseImport = function parseImport() {\n var importTok = this.peekToken();\n if (!this.skipSymbol('import')) {\n this.fail('parseImport: expected import', importTok.lineno, importTok.colno);\n }\n var template = this.parseExpression();\n if (!this.skipSymbol('as')) {\n this.fail('parseImport: expected \"as\" keyword', importTok.lineno, importTok.colno);\n }\n var target = this.parseExpression();\n var withContext = this.parseWithContext();\n var node = new nodes.Import(importTok.lineno, importTok.colno, template, target, withContext);\n this.advanceAfterBlockEnd(importTok.value);\n return node;\n };\n _proto.parseFrom = function parseFrom() {\n var fromTok = this.peekToken();\n if (!this.skipSymbol('from')) {\n this.fail('parseFrom: expected from');\n }\n var template = this.parseExpression();\n if (!this.skipSymbol('import')) {\n this.fail('parseFrom: expected import', fromTok.lineno, fromTok.colno);\n }\n var names = new nodes.NodeList();\n var withContext;\n while (1) {\n // eslint-disable-line no-constant-condition\n var nextTok = this.peekToken();\n if (nextTok.type === lexer.TOKEN_BLOCK_END) {\n if (!names.children.length) {\n this.fail('parseFrom: Expected at least one import name', fromTok.lineno, fromTok.colno);\n }\n\n // Since we are manually advancing past the block end,\n // need to keep track of whitespace control (normally\n // this is done in `advanceAfterBlockEnd`\n if (nextTok.value.charAt(0) === '-') {\n this.dropLeadingWhitespace = true;\n }\n this.nextToken();\n break;\n }\n if (names.children.length > 0 && !this.skip(lexer.TOKEN_COMMA)) {\n this.fail('parseFrom: expected comma', fromTok.lineno, fromTok.colno);\n }\n var name = this.parsePrimary();\n if (name.value.charAt(0) === '_') {\n this.fail('parseFrom: names starting with an underscore cannot be imported', name.lineno, name.colno);\n }\n if (this.skipSymbol('as')) {\n var alias = this.parsePrimary();\n names.addChild(new nodes.Pair(name.lineno, name.colno, name, alias));\n } else {\n names.addChild(name);\n }\n withContext = this.parseWithContext();\n }\n return new nodes.FromImport(fromTok.lineno, fromTok.colno, template, names, withContext);\n };\n _proto.parseBlock = function parseBlock() {\n var tag = this.peekToken();\n if (!this.skipSymbol('block')) {\n this.fail('parseBlock: expected block', tag.lineno, tag.colno);\n }\n var node = new nodes.Block(tag.lineno, tag.colno);\n node.name = this.parsePrimary();\n if (!(node.name instanceof nodes.Symbol)) {\n this.fail('parseBlock: variable name expected', tag.lineno, tag.colno);\n }\n this.advanceAfterBlockEnd(tag.value);\n node.body = this.parseUntilBlocks('endblock');\n this.skipSymbol('endblock');\n this.skipSymbol(node.name.value);\n var tok = this.peekToken();\n if (!tok) {\n this.fail('parseBlock: expected endblock, got end of file');\n }\n this.advanceAfterBlockEnd(tok.value);\n return node;\n };\n _proto.parseExtends = function parseExtends() {\n var tagName = 'extends';\n var tag = this.peekToken();\n if (!this.skipSymbol(tagName)) {\n this.fail('parseTemplateRef: expected ' + tagName);\n }\n var node = new nodes.Extends(tag.lineno, tag.colno);\n node.template = this.parseExpression();\n this.advanceAfterBlockEnd(tag.value);\n return node;\n };\n _proto.parseInclude = function parseInclude() {\n var tagName = 'include';\n var tag = this.peekToken();\n if (!this.skipSymbol(tagName)) {\n this.fail('parseInclude: expected ' + tagName);\n }\n var node = new nodes.Include(tag.lineno, tag.colno);\n node.template = this.parseExpression();\n if (this.skipSymbol('ignore') && this.skipSymbol('missing')) {\n node.ignoreMissing = true;\n }\n this.advanceAfterBlockEnd(tag.value);\n return node;\n };\n _proto.parseIf = function parseIf() {\n var tag = this.peekToken();\n var node;\n if (this.skipSymbol('if') || this.skipSymbol('elif') || this.skipSymbol('elseif')) {\n node = new nodes.If(tag.lineno, tag.colno);\n } else if (this.skipSymbol('ifAsync')) {\n node = new nodes.IfAsync(tag.lineno, tag.colno);\n } else {\n this.fail('parseIf: expected if, elif, or elseif', tag.lineno, tag.colno);\n }\n node.cond = this.parseExpression();\n this.advanceAfterBlockEnd(tag.value);\n node.body = this.parseUntilBlocks('elif', 'elseif', 'else', 'endif');\n var tok = this.peekToken();\n switch (tok && tok.value) {\n case 'elseif':\n case 'elif':\n node.else_ = this.parseIf();\n break;\n case 'else':\n this.advanceAfterBlockEnd();\n node.else_ = this.parseUntilBlocks('endif');\n this.advanceAfterBlockEnd();\n break;\n case 'endif':\n node.else_ = null;\n this.advanceAfterBlockEnd();\n break;\n default:\n this.fail('parseIf: expected elif, else, or endif, got end of file');\n }\n return node;\n };\n _proto.parseSet = function parseSet() {\n var tag = this.peekToken();\n if (!this.skipSymbol('set')) {\n this.fail('parseSet: expected set', tag.lineno, tag.colno);\n }\n var node = new nodes.Set(tag.lineno, tag.colno, []);\n var target;\n while (target = this.parsePrimary()) {\n node.targets.push(target);\n if (!this.skip(lexer.TOKEN_COMMA)) {\n break;\n }\n }\n if (!this.skipValue(lexer.TOKEN_OPERATOR, '=')) {\n if (!this.skip(lexer.TOKEN_BLOCK_END)) {\n this.fail('parseSet: expected = or block end in set tag', tag.lineno, tag.colno);\n } else {\n node.body = new nodes.Capture(tag.lineno, tag.colno, this.parseUntilBlocks('endset'));\n node.value = null;\n this.advanceAfterBlockEnd();\n }\n } else {\n node.value = this.parseExpression();\n this.advanceAfterBlockEnd(tag.value);\n }\n return node;\n };\n _proto.parseSwitch = function parseSwitch() {\n /*\n * Store the tag names in variables in case someone ever wants to\n * customize this.\n */\n var switchStart = 'switch';\n var switchEnd = 'endswitch';\n var caseStart = 'case';\n var caseDefault = 'default';\n\n // Get the switch tag.\n var tag = this.peekToken();\n\n // fail early if we get some unexpected tag.\n if (!this.skipSymbol(switchStart) && !this.skipSymbol(caseStart) && !this.skipSymbol(caseDefault)) {\n this.fail('parseSwitch: expected \"switch,\" \"case\" or \"default\"', tag.lineno, tag.colno);\n }\n\n // parse the switch expression\n var expr = this.parseExpression();\n\n // advance until a start of a case, a default case or an endswitch.\n this.advanceAfterBlockEnd(switchStart);\n this.parseUntilBlocks(caseStart, caseDefault, switchEnd);\n\n // this is the first case. it could also be an endswitch, we'll check.\n var tok = this.peekToken();\n\n // create new variables for our cases and default case.\n var cases = [];\n var defaultCase;\n\n // while we're dealing with new cases nodes...\n do {\n // skip the start symbol and get the case expression\n this.skipSymbol(caseStart);\n var cond = this.parseExpression();\n this.advanceAfterBlockEnd(switchStart);\n // get the body of the case node and add it to the array of cases.\n var body = this.parseUntilBlocks(caseStart, caseDefault, switchEnd);\n cases.push(new nodes.Case(tok.line, tok.col, cond, body));\n // get our next case\n tok = this.peekToken();\n } while (tok && tok.value === caseStart);\n\n // we either have a default case or a switch end.\n switch (tok.value) {\n case caseDefault:\n this.advanceAfterBlockEnd();\n defaultCase = this.parseUntilBlocks(switchEnd);\n this.advanceAfterBlockEnd();\n break;\n case switchEnd:\n this.advanceAfterBlockEnd();\n break;\n default:\n // otherwise bail because EOF\n this.fail('parseSwitch: expected \"case,\" \"default\" or \"endswitch,\" got EOF.');\n }\n\n // and return the switch node.\n return new nodes.Switch(tag.lineno, tag.colno, expr, cases, defaultCase);\n };\n _proto.parseStatement = function parseStatement() {\n var tok = this.peekToken();\n var node;\n if (tok.type !== lexer.TOKEN_SYMBOL) {\n this.fail('tag name expected', tok.lineno, tok.colno);\n }\n if (this.breakOnBlocks && lib.indexOf(this.breakOnBlocks, tok.value) !== -1) {\n return null;\n }\n switch (tok.value) {\n case 'raw':\n return this.parseRaw();\n case 'verbatim':\n return this.parseRaw('verbatim');\n case 'if':\n case 'ifAsync':\n return this.parseIf();\n case 'for':\n case 'asyncEach':\n case 'asyncAll':\n return this.parseFor();\n case 'block':\n return this.parseBlock();\n case 'extends':\n return this.parseExtends();\n case 'include':\n return this.parseInclude();\n case 'set':\n return this.parseSet();\n case 'macro':\n return this.parseMacro();\n case 'call':\n return this.parseCall();\n case 'import':\n return this.parseImport();\n case 'from':\n return this.parseFrom();\n case 'filter':\n return this.parseFilterStatement();\n case 'switch':\n return this.parseSwitch();\n default:\n if (this.extensions.length) {\n for (var i = 0; i < this.extensions.length; i++) {\n var ext = this.extensions[i];\n if (lib.indexOf(ext.tags || [], tok.value) !== -1) {\n return ext.parse(this, nodes, lexer);\n }\n }\n }\n this.fail('unknown block tag: ' + tok.value, tok.lineno, tok.colno);\n }\n return node;\n };\n _proto.parseRaw = function parseRaw(tagName) {\n tagName = tagName || 'raw';\n var endTagName = 'end' + tagName;\n // Look for upcoming raw blocks (ignore all other kinds of blocks)\n var rawBlockRegex = new RegExp('([\\\\s\\\\S]*?){%\\\\s*(' + tagName + '|' + endTagName + ')\\\\s*(?=%})%}');\n var rawLevel = 1;\n var str = '';\n var matches = null;\n\n // Skip opening raw token\n // Keep this token to track line and column numbers\n var begun = this.advanceAfterBlockEnd();\n\n // Exit when there's nothing to match\n // or when we've found the matching \"endraw\" block\n while ((matches = this.tokens._extractRegex(rawBlockRegex)) && rawLevel > 0) {\n var all = matches[0];\n var pre = matches[1];\n var blockName = matches[2];\n\n // Adjust rawlevel\n if (blockName === tagName) {\n rawLevel += 1;\n } else if (blockName === endTagName) {\n rawLevel -= 1;\n }\n\n // Add to str\n if (rawLevel === 0) {\n // We want to exclude the last \"endraw\"\n str += pre;\n // Move tokenizer to beginning of endraw block\n this.tokens.backN(all.length - pre.length);\n } else {\n str += all;\n }\n }\n return new nodes.Output(begun.lineno, begun.colno, [new nodes.TemplateData(begun.lineno, begun.colno, str)]);\n };\n _proto.parsePostfix = function parsePostfix(node) {\n var lookup;\n var tok = this.peekToken();\n while (tok) {\n if (tok.type === lexer.TOKEN_LEFT_PAREN) {\n // Function call\n node = new nodes.FunCall(tok.lineno, tok.colno, node, this.parseSignature());\n } else if (tok.type === lexer.TOKEN_LEFT_BRACKET) {\n // Reference\n lookup = this.parseAggregate();\n if (lookup.children.length > 1) {\n this.fail('invalid index');\n }\n node = new nodes.LookupVal(tok.lineno, tok.colno, node, lookup.children[0]);\n } else if (tok.type === lexer.TOKEN_OPERATOR && tok.value === '.') {\n // Reference\n this.nextToken();\n var val = this.nextToken();\n if (val.type !== lexer.TOKEN_SYMBOL) {\n this.fail('expected name as lookup value, got ' + val.value, val.lineno, val.colno);\n }\n\n // Make a literal string because it's not a variable\n // reference\n lookup = new nodes.Literal(val.lineno, val.colno, val.value);\n node = new nodes.LookupVal(tok.lineno, tok.colno, node, lookup);\n } else {\n break;\n }\n tok = this.peekToken();\n }\n return node;\n };\n _proto.parseExpression = function parseExpression() {\n var node = this.parseInlineIf();\n return node;\n };\n _proto.parseInlineIf = function parseInlineIf() {\n var node = this.parseOr();\n if (this.skipSymbol('if')) {\n var condNode = this.parseOr();\n var bodyNode = node;\n node = new nodes.InlineIf(node.lineno, node.colno);\n node.body = bodyNode;\n node.cond = condNode;\n if (this.skipSymbol('else')) {\n node.else_ = this.parseOr();\n } else {\n node.else_ = null;\n }\n }\n return node;\n };\n _proto.parseOr = function parseOr() {\n var node = this.parseAnd();\n while (this.skipSymbol('or')) {\n var node2 = this.parseAnd();\n node = new nodes.Or(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseAnd = function parseAnd() {\n var node = this.parseNot();\n while (this.skipSymbol('and')) {\n var node2 = this.parseNot();\n node = new nodes.And(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseNot = function parseNot() {\n var tok = this.peekToken();\n if (this.skipSymbol('not')) {\n return new nodes.Not(tok.lineno, tok.colno, this.parseNot());\n }\n return this.parseIn();\n };\n _proto.parseIn = function parseIn() {\n var node = this.parseIs();\n while (1) {\n // eslint-disable-line no-constant-condition\n // check if the next token is 'not'\n var tok = this.nextToken();\n if (!tok) {\n break;\n }\n var invert = tok.type === lexer.TOKEN_SYMBOL && tok.value === 'not';\n // if it wasn't 'not', put it back\n if (!invert) {\n this.pushToken(tok);\n }\n if (this.skipSymbol('in')) {\n var node2 = this.parseIs();\n node = new nodes.In(node.lineno, node.colno, node, node2);\n if (invert) {\n node = new nodes.Not(node.lineno, node.colno, node);\n }\n } else {\n // if we'd found a 'not' but this wasn't an 'in', put back the 'not'\n if (invert) {\n this.pushToken(tok);\n }\n break;\n }\n }\n return node;\n }\n\n // I put this right after \"in\" in the operator precedence stack. That can\n // obviously be changed to be closer to Jinja.\n ;\n _proto.parseIs = function parseIs() {\n var node = this.parseCompare();\n // look for an is\n if (this.skipSymbol('is')) {\n // look for a not\n var not = this.skipSymbol('not');\n // get the next node\n var node2 = this.parseCompare();\n // create an Is node using the next node and the info from our Is node.\n node = new nodes.Is(node.lineno, node.colno, node, node2);\n // if we have a Not, create a Not node from our Is node.\n if (not) {\n node = new nodes.Not(node.lineno, node.colno, node);\n }\n }\n // return the node.\n return node;\n };\n _proto.parseCompare = function parseCompare() {\n var compareOps = ['==', '===', '!=', '!==', '<', '>', '<=', '>='];\n var expr = this.parseConcat();\n var ops = [];\n while (1) {\n // eslint-disable-line no-constant-condition\n var tok = this.nextToken();\n if (!tok) {\n break;\n } else if (compareOps.indexOf(tok.value) !== -1) {\n ops.push(new nodes.CompareOperand(tok.lineno, tok.colno, this.parseConcat(), tok.value));\n } else {\n this.pushToken(tok);\n break;\n }\n }\n if (ops.length) {\n return new nodes.Compare(ops[0].lineno, ops[0].colno, expr, ops);\n } else {\n return expr;\n }\n }\n\n // finds the '~' for string concatenation\n ;\n _proto.parseConcat = function parseConcat() {\n var node = this.parseAdd();\n while (this.skipValue(lexer.TOKEN_TILDE, '~')) {\n var node2 = this.parseAdd();\n node = new nodes.Concat(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseAdd = function parseAdd() {\n var node = this.parseSub();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '+')) {\n var node2 = this.parseSub();\n node = new nodes.Add(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseSub = function parseSub() {\n var node = this.parseMul();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '-')) {\n var node2 = this.parseMul();\n node = new nodes.Sub(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseMul = function parseMul() {\n var node = this.parseDiv();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '*')) {\n var node2 = this.parseDiv();\n node = new nodes.Mul(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseDiv = function parseDiv() {\n var node = this.parseFloorDiv();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '/')) {\n var node2 = this.parseFloorDiv();\n node = new nodes.Div(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseFloorDiv = function parseFloorDiv() {\n var node = this.parseMod();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '//')) {\n var node2 = this.parseMod();\n node = new nodes.FloorDiv(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseMod = function parseMod() {\n var node = this.parsePow();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '%')) {\n var node2 = this.parsePow();\n node = new nodes.Mod(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parsePow = function parsePow() {\n var node = this.parseUnary();\n while (this.skipValue(lexer.TOKEN_OPERATOR, '**')) {\n var node2 = this.parseUnary();\n node = new nodes.Pow(node.lineno, node.colno, node, node2);\n }\n return node;\n };\n _proto.parseUnary = function parseUnary(noFilters) {\n var tok = this.peekToken();\n var node;\n if (this.skipValue(lexer.TOKEN_OPERATOR, '-')) {\n node = new nodes.Neg(tok.lineno, tok.colno, this.parseUnary(true));\n } else if (this.skipValue(lexer.TOKEN_OPERATOR, '+')) {\n node = new nodes.Pos(tok.lineno, tok.colno, this.parseUnary(true));\n } else {\n node = this.parsePrimary();\n }\n if (!noFilters) {\n node = this.parseFilter(node);\n }\n return node;\n };\n _proto.parsePrimary = function parsePrimary(noPostfix) {\n var tok = this.nextToken();\n var val;\n var node = null;\n if (!tok) {\n this.fail('expected expression, got end of file');\n } else if (tok.type === lexer.TOKEN_STRING) {\n val = tok.value;\n } else if (tok.type === lexer.TOKEN_INT) {\n val = parseInt(tok.value, 10);\n } else if (tok.type === lexer.TOKEN_FLOAT) {\n val = parseFloat(tok.value);\n } else if (tok.type === lexer.TOKEN_BOOLEAN) {\n if (tok.value === 'true') {\n val = true;\n } else if (tok.value === 'false') {\n val = false;\n } else {\n this.fail('invalid boolean: ' + tok.value, tok.lineno, tok.colno);\n }\n } else if (tok.type === lexer.TOKEN_NONE) {\n val = null;\n } else if (tok.type === lexer.TOKEN_REGEX) {\n val = new RegExp(tok.value.body, tok.value.flags);\n }\n if (val !== undefined) {\n node = new nodes.Literal(tok.lineno, tok.colno, val);\n } else if (tok.type === lexer.TOKEN_SYMBOL) {\n node = new nodes.Symbol(tok.lineno, tok.colno, tok.value);\n } else {\n // See if it's an aggregate type, we need to push the\n // current delimiter token back on\n this.pushToken(tok);\n node = this.parseAggregate();\n }\n if (!noPostfix) {\n node = this.parsePostfix(node);\n }\n if (node) {\n return node;\n } else {\n throw this.error(\"unexpected token: \" + tok.value, tok.lineno, tok.colno);\n }\n };\n _proto.parseFilterName = function parseFilterName() {\n var tok = this.expect(lexer.TOKEN_SYMBOL);\n var name = tok.value;\n while (this.skipValue(lexer.TOKEN_OPERATOR, '.')) {\n name += '.' + this.expect(lexer.TOKEN_SYMBOL).value;\n }\n return new nodes.Symbol(tok.lineno, tok.colno, name);\n };\n _proto.parseFilterArgs = function parseFilterArgs(node) {\n if (this.peekToken().type === lexer.TOKEN_LEFT_PAREN) {\n // Get a FunCall node and add the parameters to the\n // filter\n var call = this.parsePostfix(node);\n return call.args.children;\n }\n return [];\n };\n _proto.parseFilter = function parseFilter(node) {\n while (this.skip(lexer.TOKEN_PIPE)) {\n var name = this.parseFilterName();\n node = new nodes.Filter(name.lineno, name.colno, name, new nodes.NodeList(name.lineno, name.colno, [node].concat(this.parseFilterArgs(node))));\n }\n return node;\n };\n _proto.parseFilterStatement = function parseFilterStatement() {\n var filterTok = this.peekToken();\n if (!this.skipSymbol('filter')) {\n this.fail('parseFilterStatement: expected filter');\n }\n var name = this.parseFilterName();\n var args = this.parseFilterArgs(name);\n this.advanceAfterBlockEnd(filterTok.value);\n var body = new nodes.Capture(name.lineno, name.colno, this.parseUntilBlocks('endfilter'));\n this.advanceAfterBlockEnd();\n var node = new nodes.Filter(name.lineno, name.colno, name, new nodes.NodeList(name.lineno, name.colno, [body].concat(args)));\n return new nodes.Output(name.lineno, name.colno, [node]);\n };\n _proto.parseAggregate = function parseAggregate() {\n var tok = this.nextToken();\n var node;\n switch (tok.type) {\n case lexer.TOKEN_LEFT_PAREN:\n node = new nodes.Group(tok.lineno, tok.colno);\n break;\n case lexer.TOKEN_LEFT_BRACKET:\n node = new nodes.Array(tok.lineno, tok.colno);\n break;\n case lexer.TOKEN_LEFT_CURLY:\n node = new nodes.Dict(tok.lineno, tok.colno);\n break;\n default:\n return null;\n }\n while (1) {\n // eslint-disable-line no-constant-condition\n var type = this.peekToken().type;\n if (type === lexer.TOKEN_RIGHT_PAREN || type === lexer.TOKEN_RIGHT_BRACKET || type === lexer.TOKEN_RIGHT_CURLY) {\n this.nextToken();\n break;\n }\n if (node.children.length > 0) {\n if (!this.skip(lexer.TOKEN_COMMA)) {\n this.fail('parseAggregate: expected comma after expression', tok.lineno, tok.colno);\n }\n }\n if (node instanceof nodes.Dict) {\n // TODO: check for errors\n var key = this.parsePrimary();\n\n // We expect a key/value pair for dicts, separated by a\n // colon\n if (!this.skip(lexer.TOKEN_COLON)) {\n this.fail('parseAggregate: expected colon after dict key', tok.lineno, tok.colno);\n }\n\n // TODO: check for errors\n var value = this.parseExpression();\n node.addChild(new nodes.Pair(key.lineno, key.colno, key, value));\n } else {\n // TODO: check for errors\n var expr = this.parseExpression();\n node.addChild(expr);\n }\n }\n return node;\n };\n _proto.parseSignature = function parseSignature(tolerant, noParens) {\n var tok = this.peekToken();\n if (!noParens && tok.type !== lexer.TOKEN_LEFT_PAREN) {\n if (tolerant) {\n return null;\n } else {\n this.fail('expected arguments', tok.lineno, tok.colno);\n }\n }\n if (tok.type === lexer.TOKEN_LEFT_PAREN) {\n tok = this.nextToken();\n }\n var args = new nodes.NodeList(tok.lineno, tok.colno);\n var kwargs = new nodes.KeywordArgs(tok.lineno, tok.colno);\n var checkComma = false;\n while (1) {\n // eslint-disable-line no-constant-condition\n tok = this.peekToken();\n if (!noParens && tok.type === lexer.TOKEN_RIGHT_PAREN) {\n this.nextToken();\n break;\n } else if (noParens && tok.type === lexer.TOKEN_BLOCK_END) {\n break;\n }\n if (checkComma && !this.skip(lexer.TOKEN_COMMA)) {\n this.fail('parseSignature: expected comma after expression', tok.lineno, tok.colno);\n } else {\n var arg = this.parseExpression();\n if (this.skipValue(lexer.TOKEN_OPERATOR, '=')) {\n kwargs.addChild(new nodes.Pair(arg.lineno, arg.colno, arg, this.parseExpression()));\n } else {\n args.addChild(arg);\n }\n }\n checkComma = true;\n }\n if (kwargs.children.length) {\n args.addChild(kwargs);\n }\n return args;\n };\n _proto.parseUntilBlocks = function parseUntilBlocks() {\n var prev = this.breakOnBlocks;\n for (var _len = arguments.length, blockNames = new Array(_len), _key = 0; _key < _len; _key++) {\n blockNames[_key] = arguments[_key];\n }\n this.breakOnBlocks = blockNames;\n var ret = this.parse();\n this.breakOnBlocks = prev;\n return ret;\n };\n _proto.parseNodes = function parseNodes() {\n var tok;\n var buf = [];\n while (tok = this.nextToken()) {\n if (tok.type === lexer.TOKEN_DATA) {\n var data = tok.value;\n var nextToken = this.peekToken();\n var nextVal = nextToken && nextToken.value;\n\n // If the last token has \"-\" we need to trim the\n // leading whitespace of the data. This is marked with\n // the `dropLeadingWhitespace` variable.\n if (this.dropLeadingWhitespace) {\n // TODO: this could be optimized (don't use regex)\n data = data.replace(/^\\s*/, '');\n this.dropLeadingWhitespace = false;\n }\n\n // Same for the succeeding block start token\n if (nextToken && (nextToken.type === lexer.TOKEN_BLOCK_START && nextVal.charAt(nextVal.length - 1) === '-' || nextToken.type === lexer.TOKEN_VARIABLE_START && nextVal.charAt(this.tokens.tags.VARIABLE_START.length) === '-' || nextToken.type === lexer.TOKEN_COMMENT && nextVal.charAt(this.tokens.tags.COMMENT_START.length) === '-')) {\n // TODO: this could be optimized (don't use regex)\n data = data.replace(/\\s*$/, '');\n }\n buf.push(new nodes.Output(tok.lineno, tok.colno, [new nodes.TemplateData(tok.lineno, tok.colno, data)]));\n } else if (tok.type === lexer.TOKEN_BLOCK_START) {\n this.dropLeadingWhitespace = false;\n var n = this.parseStatement();\n if (!n) {\n break;\n }\n buf.push(n);\n } else if (tok.type === lexer.TOKEN_VARIABLE_START) {\n var e = this.parseExpression();\n this.dropLeadingWhitespace = false;\n this.advanceAfterVariableEnd();\n buf.push(new nodes.Output(tok.lineno, tok.colno, [e]));\n } else if (tok.type === lexer.TOKEN_COMMENT) {\n this.dropLeadingWhitespace = tok.value.charAt(tok.value.length - this.tokens.tags.COMMENT_END.length - 1) === '-';\n } else {\n // Ignore comments, otherwise this should be an error\n this.fail('Unexpected token at top-level: ' + tok.type, tok.lineno, tok.colno);\n }\n }\n return buf;\n };\n _proto.parse = function parse() {\n return new nodes.NodeList(0, 0, this.parseNodes());\n };\n _proto.parseAsRoot = function parseAsRoot() {\n return new nodes.Root(0, 0, this.parseNodes());\n };\n return Parser;\n}(Obj); // var util = require('util');\n// var l = lexer.lex('{%- if x -%}\\n hello {% endif %}');\n// var t;\n// while((t = l.nextToken())) {\n// console.log(util.inspect(t));\n// }\n// var p = new Parser(lexer.lex('hello {% filter title %}' +\n// 'Hello madam how are you' +\n// '{% endfilter %}'));\n// var n = p.parseAsRoot();\n// nodes.printNodes(n);\nmodule.exports = {\n parse: function parse(src, extensions, opts) {\n var p = new Parser(lexer.lex(src, opts));\n if (extensions !== undefined) {\n p.extensions = extensions;\n }\n return p.parseAsRoot();\n },\n Parser: Parser\n};","'use strict';\n\nvar nodes = require('./nodes');\nvar lib = require('./lib');\nvar sym = 0;\nfunction gensym() {\n return 'hole_' + sym++;\n}\n\n// copy-on-write version of map\nfunction mapCOW(arr, func) {\n var res = null;\n for (var i = 0; i < arr.length; i++) {\n var item = func(arr[i]);\n if (item !== arr[i]) {\n if (!res) {\n res = arr.slice();\n }\n res[i] = item;\n }\n }\n return res || arr;\n}\nfunction walk(ast, func, depthFirst) {\n if (!(ast instanceof nodes.Node)) {\n return ast;\n }\n if (!depthFirst) {\n var astT = func(ast);\n if (astT && astT !== ast) {\n return astT;\n }\n }\n if (ast instanceof nodes.NodeList) {\n var children = mapCOW(ast.children, function (node) {\n return walk(node, func, depthFirst);\n });\n if (children !== ast.children) {\n ast = new nodes[ast.typename](ast.lineno, ast.colno, children);\n }\n } else if (ast instanceof nodes.CallExtension) {\n var args = walk(ast.args, func, depthFirst);\n var contentArgs = mapCOW(ast.contentArgs, function (node) {\n return walk(node, func, depthFirst);\n });\n if (args !== ast.args || contentArgs !== ast.contentArgs) {\n ast = new nodes[ast.typename](ast.extName, ast.prop, args, contentArgs);\n }\n } else {\n var props = ast.fields.map(function (field) {\n return ast[field];\n });\n var propsT = mapCOW(props, function (prop) {\n return walk(prop, func, depthFirst);\n });\n if (propsT !== props) {\n ast = new nodes[ast.typename](ast.lineno, ast.colno);\n propsT.forEach(function (prop, i) {\n ast[ast.fields[i]] = prop;\n });\n }\n }\n return depthFirst ? func(ast) || ast : ast;\n}\nfunction depthWalk(ast, func) {\n return walk(ast, func, true);\n}\nfunction _liftFilters(node, asyncFilters, prop) {\n var children = [];\n var walked = depthWalk(prop ? node[prop] : node, function (descNode) {\n var symbol;\n if (descNode instanceof nodes.Block) {\n return descNode;\n } else if (descNode instanceof nodes.Filter && lib.indexOf(asyncFilters, descNode.name.value) !== -1 || descNode instanceof nodes.CallExtensionAsync) {\n symbol = new nodes.Symbol(descNode.lineno, descNode.colno, gensym());\n children.push(new nodes.FilterAsync(descNode.lineno, descNode.colno, descNode.name, descNode.args, symbol));\n }\n return symbol;\n });\n if (prop) {\n node[prop] = walked;\n } else {\n node = walked;\n }\n if (children.length) {\n children.push(node);\n return new nodes.NodeList(node.lineno, node.colno, children);\n } else {\n return node;\n }\n}\nfunction liftFilters(ast, asyncFilters) {\n return depthWalk(ast, function (node) {\n if (node instanceof nodes.Output) {\n return _liftFilters(node, asyncFilters);\n } else if (node instanceof nodes.Set) {\n return _liftFilters(node, asyncFilters, 'value');\n } else if (node instanceof nodes.For) {\n return _liftFilters(node, asyncFilters, 'arr');\n } else if (node instanceof nodes.If) {\n return _liftFilters(node, asyncFilters, 'cond');\n } else if (node instanceof nodes.CallExtension) {\n return _liftFilters(node, asyncFilters, 'args');\n } else {\n return undefined;\n }\n });\n}\nfunction liftSuper(ast) {\n return walk(ast, function (blockNode) {\n if (!(blockNode instanceof nodes.Block)) {\n return;\n }\n var hasSuper = false;\n var symbol = gensym();\n blockNode.body = walk(blockNode.body, function (node) {\n // eslint-disable-line consistent-return\n if (node instanceof nodes.FunCall && node.name.value === 'super') {\n hasSuper = true;\n return new nodes.Symbol(node.lineno, node.colno, symbol);\n }\n });\n if (hasSuper) {\n blockNode.body.children.unshift(new nodes.Super(0, 0, blockNode.name, new nodes.Symbol(0, 0, symbol)));\n }\n });\n}\nfunction convertStatements(ast) {\n return depthWalk(ast, function (node) {\n if (!(node instanceof nodes.If) && !(node instanceof nodes.For)) {\n return undefined;\n }\n var async = false;\n walk(node, function (child) {\n if (child instanceof nodes.FilterAsync || child instanceof nodes.IfAsync || child instanceof nodes.AsyncEach || child instanceof nodes.AsyncAll || child instanceof nodes.CallExtensionAsync) {\n async = true;\n // Stop iterating by returning the node\n return child;\n }\n return undefined;\n });\n if (async) {\n if (node instanceof nodes.If) {\n return new nodes.IfAsync(node.lineno, node.colno, node.cond, node.body, node.else_);\n } else if (node instanceof nodes.For && !(node instanceof nodes.AsyncAll)) {\n return new nodes.AsyncEach(node.lineno, node.colno, node.arr, node.name, node.body, node.else_);\n }\n }\n return undefined;\n });\n}\nfunction cps(ast, asyncFilters) {\n return convertStatements(liftSuper(liftFilters(ast, asyncFilters)));\n}\nfunction transform(ast, asyncFilters) {\n return cps(ast, asyncFilters || []);\n}\n\n// var parser = require('./parser');\n// var src = 'hello {% foo %}{% endfoo %} end';\n// var ast = transform(parser.parse(src, [new FooExtension()]), ['bar']);\n// nodes.printNodes(ast);\n\nmodule.exports = {\n transform: transform\n};","'use strict';\n\nvar lib = require('./lib');\nvar arrayFrom = Array.from;\nvar supportsIterators = typeof Symbol === 'function' && Symbol.iterator && typeof arrayFrom === 'function';\n\n// Frames keep track of scoping both at compile-time and run-time so\n// we know how to access variables. Block tags can introduce special\n// variables, for example.\nvar Frame = /*#__PURE__*/function () {\n function Frame(parent, isolateWrites) {\n this.variables = Object.create(null);\n this.parent = parent;\n this.topLevel = false;\n // if this is true, writes (set) should never propagate upwards past\n // this frame to its parent (though reads may).\n this.isolateWrites = isolateWrites;\n }\n var _proto = Frame.prototype;\n _proto.set = function set(name, val, resolveUp) {\n // Allow variables with dots by automatically creating the\n // nested structure\n var parts = name.split('.');\n var obj = this.variables;\n var frame = this;\n if (resolveUp) {\n if (frame = this.resolve(parts[0], true)) {\n frame.set(name, val);\n return;\n }\n }\n for (var i = 0; i < parts.length - 1; i++) {\n var id = parts[i];\n if (!obj[id]) {\n obj[id] = {};\n }\n obj = obj[id];\n }\n obj[parts[parts.length - 1]] = val;\n };\n _proto.get = function get(name) {\n var val = this.variables[name];\n if (val !== undefined) {\n return val;\n }\n return null;\n };\n _proto.lookup = function lookup(name) {\n var p = this.parent;\n var val = this.variables[name];\n if (val !== undefined) {\n return val;\n }\n return p && p.lookup(name);\n };\n _proto.resolve = function resolve(name, forWrite) {\n var p = forWrite && this.isolateWrites ? undefined : this.parent;\n var val = this.variables[name];\n if (val !== undefined) {\n return this;\n }\n return p && p.resolve(name);\n };\n _proto.push = function push(isolateWrites) {\n return new Frame(this, isolateWrites);\n };\n _proto.pop = function pop() {\n return this.parent;\n };\n return Frame;\n}();\nfunction makeMacro(argNames, kwargNames, func) {\n return function macro() {\n for (var _len = arguments.length, macroArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n macroArgs[_key] = arguments[_key];\n }\n var argCount = numArgs(macroArgs);\n var args;\n var kwargs = getKeywordArgs(macroArgs);\n if (argCount > argNames.length) {\n args = macroArgs.slice(0, argNames.length);\n\n // Positional arguments that should be passed in as\n // keyword arguments (essentially default values)\n macroArgs.slice(args.length, argCount).forEach(function (val, i) {\n if (i < kwargNames.length) {\n kwargs[kwargNames[i]] = val;\n }\n });\n args.push(kwargs);\n } else if (argCount < argNames.length) {\n args = macroArgs.slice(0, argCount);\n for (var i = argCount; i < argNames.length; i++) {\n var arg = argNames[i];\n\n // Keyword arguments that should be passed as\n // positional arguments, i.e. the caller explicitly\n // used the name of a positional arg\n args.push(kwargs[arg]);\n delete kwargs[arg];\n }\n args.push(kwargs);\n } else {\n args = macroArgs;\n }\n return func.apply(this, args);\n };\n}\nfunction makeKeywordArgs(obj) {\n obj.__keywords = true;\n return obj;\n}\nfunction isKeywordArgs(obj) {\n return obj && Object.prototype.hasOwnProperty.call(obj, '__keywords');\n}\nfunction getKeywordArgs(args) {\n var len = args.length;\n if (len) {\n var lastArg = args[len - 1];\n if (isKeywordArgs(lastArg)) {\n return lastArg;\n }\n }\n return {};\n}\nfunction numArgs(args) {\n var len = args.length;\n if (len === 0) {\n return 0;\n }\n var lastArg = args[len - 1];\n if (isKeywordArgs(lastArg)) {\n return len - 1;\n } else {\n return len;\n }\n}\n\n// A SafeString object indicates that the string should not be\n// autoescaped. This happens magically because autoescaping only\n// occurs on primitive string objects.\nfunction SafeString(val) {\n if (typeof val !== 'string') {\n return val;\n }\n this.val = val;\n this.length = val.length;\n}\nSafeString.prototype = Object.create(String.prototype, {\n length: {\n writable: true,\n configurable: true,\n value: 0\n }\n});\nSafeString.prototype.valueOf = function valueOf() {\n return this.val;\n};\nSafeString.prototype.toString = function toString() {\n return this.val;\n};\nfunction copySafeness(dest, target) {\n if (dest instanceof SafeString) {\n return new SafeString(target);\n }\n return target.toString();\n}\nfunction markSafe(val) {\n var type = typeof val;\n if (type === 'string') {\n return new SafeString(val);\n } else if (type !== 'function') {\n return val;\n } else {\n return function wrapSafe(args) {\n var ret = val.apply(this, arguments);\n if (typeof ret === 'string') {\n return new SafeString(ret);\n }\n return ret;\n };\n }\n}\nfunction suppressValue(val, autoescape) {\n val = val !== undefined && val !== null ? val : '';\n if (autoescape && !(val instanceof SafeString)) {\n val = lib.escape(val.toString());\n }\n return val;\n}\nfunction ensureDefined(val, lineno, colno) {\n if (val === null || val === undefined) {\n throw new lib.TemplateError('attempted to output null or undefined value', lineno + 1, colno + 1);\n }\n return val;\n}\nfunction memberLookup(obj, val) {\n if (obj === undefined || obj === null) {\n return undefined;\n }\n if (typeof obj[val] === 'function') {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return obj[val].apply(obj, args);\n };\n }\n return obj[val];\n}\nfunction callWrap(obj, name, context, args) {\n if (!obj) {\n throw new Error('Unable to call `' + name + '`, which is undefined or falsey');\n } else if (typeof obj !== 'function') {\n throw new Error('Unable to call `' + name + '`, which is not a function');\n }\n return obj.apply(context, args);\n}\nfunction contextOrFrameLookup(context, frame, name) {\n var val = frame.lookup(name);\n return val !== undefined ? val : context.lookup(name);\n}\nfunction handleError(error, lineno, colno) {\n if (error.lineno) {\n return error;\n } else {\n return new lib.TemplateError(error, lineno, colno);\n }\n}\nfunction asyncEach(arr, dimen, iter, cb) {\n if (lib.isArray(arr)) {\n var len = arr.length;\n lib.asyncIter(arr, function iterCallback(item, i, next) {\n switch (dimen) {\n case 1:\n iter(item, i, len, next);\n break;\n case 2:\n iter(item[0], item[1], i, len, next);\n break;\n case 3:\n iter(item[0], item[1], item[2], i, len, next);\n break;\n default:\n item.push(i, len, next);\n iter.apply(this, item);\n }\n }, cb);\n } else {\n lib.asyncFor(arr, function iterCallback(key, val, i, len, next) {\n iter(key, val, i, len, next);\n }, cb);\n }\n}\nfunction asyncAll(arr, dimen, func, cb) {\n var finished = 0;\n var len;\n var outputArr;\n function done(i, output) {\n finished++;\n outputArr[i] = output;\n if (finished === len) {\n cb(null, outputArr.join(''));\n }\n }\n if (lib.isArray(arr)) {\n len = arr.length;\n outputArr = new Array(len);\n if (len === 0) {\n cb(null, '');\n } else {\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n switch (dimen) {\n case 1:\n func(item, i, len, done);\n break;\n case 2:\n func(item[0], item[1], i, len, done);\n break;\n case 3:\n func(item[0], item[1], item[2], i, len, done);\n break;\n default:\n item.push(i, len, done);\n func.apply(this, item);\n }\n }\n }\n } else {\n var keys = lib.keys(arr || {});\n len = keys.length;\n outputArr = new Array(len);\n if (len === 0) {\n cb(null, '');\n } else {\n for (var _i = 0; _i < keys.length; _i++) {\n var k = keys[_i];\n func(k, arr[k], _i, len, done);\n }\n }\n }\n}\nfunction fromIterator(arr) {\n if (typeof arr !== 'object' || arr === null || lib.isArray(arr)) {\n return arr;\n } else if (supportsIterators && Symbol.iterator in arr) {\n return arrayFrom(arr);\n } else {\n return arr;\n }\n}\nmodule.exports = {\n Frame: Frame,\n makeMacro: makeMacro,\n makeKeywordArgs: makeKeywordArgs,\n numArgs: numArgs,\n suppressValue: suppressValue,\n ensureDefined: ensureDefined,\n memberLookup: memberLookup,\n contextOrFrameLookup: contextOrFrameLookup,\n callWrap: callWrap,\n handleError: handleError,\n isArray: lib.isArray,\n keys: lib.keys,\n SafeString: SafeString,\n copySafeness: copySafeness,\n markSafe: markSafe,\n asyncEach: asyncEach,\n asyncAll: asyncAll,\n inOperator: lib.inOperator,\n fromIterator: fromIterator\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar parser = require('./parser');\nvar transformer = require('./transformer');\nvar nodes = require('./nodes');\nvar _require = require('./lib'),\n TemplateError = _require.TemplateError;\nvar _require2 = require('./runtime'),\n Frame = _require2.Frame;\nvar _require3 = require('./object'),\n Obj = _require3.Obj;\n\n// These are all the same for now, but shouldn't be passed straight\n// through\nvar compareOps = {\n '==': '==',\n '===': '===',\n '!=': '!=',\n '!==': '!==',\n '<': '<',\n '>': '>',\n '<=': '<=',\n '>=': '>='\n};\nvar Compiler = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Compiler, _Obj);\n function Compiler() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto = Compiler.prototype;\n _proto.init = function init(templateName, throwOnUndefined) {\n this.templateName = templateName;\n this.codebuf = [];\n this.lastId = 0;\n this.buffer = null;\n this.bufferStack = [];\n this._scopeClosers = '';\n this.inBlock = false;\n this.throwOnUndefined = throwOnUndefined;\n };\n _proto.fail = function fail(msg, lineno, colno) {\n if (lineno !== undefined) {\n lineno += 1;\n }\n if (colno !== undefined) {\n colno += 1;\n }\n throw new TemplateError(msg, lineno, colno);\n };\n _proto._pushBuffer = function _pushBuffer() {\n var id = this._tmpid();\n this.bufferStack.push(this.buffer);\n this.buffer = id;\n this._emit(\"var \" + this.buffer + \" = \\\"\\\";\");\n return id;\n };\n _proto._popBuffer = function _popBuffer() {\n this.buffer = this.bufferStack.pop();\n };\n _proto._emit = function _emit(code) {\n this.codebuf.push(code);\n };\n _proto._emitLine = function _emitLine(code) {\n this._emit(code + '\\n');\n };\n _proto._emitLines = function _emitLines() {\n var _this = this;\n for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) {\n lines[_key] = arguments[_key];\n }\n lines.forEach(function (line) {\n return _this._emitLine(line);\n });\n };\n _proto._emitFuncBegin = function _emitFuncBegin(node, name) {\n this.buffer = 'output';\n this._scopeClosers = '';\n this._emitLine(\"function \" + name + \"(env, context, frame, runtime, cb) {\");\n this._emitLine(\"var lineno = \" + node.lineno + \";\");\n this._emitLine(\"var colno = \" + node.colno + \";\");\n this._emitLine(\"var \" + this.buffer + \" = \\\"\\\";\");\n this._emitLine('try {');\n };\n _proto._emitFuncEnd = function _emitFuncEnd(noReturn) {\n if (!noReturn) {\n this._emitLine('cb(null, ' + this.buffer + ');');\n }\n this._closeScopeLevels();\n this._emitLine('} catch (e) {');\n this._emitLine(' cb(runtime.handleError(e, lineno, colno));');\n this._emitLine('}');\n this._emitLine('}');\n this.buffer = null;\n };\n _proto._addScopeLevel = function _addScopeLevel() {\n this._scopeClosers += '})';\n };\n _proto._closeScopeLevels = function _closeScopeLevels() {\n this._emitLine(this._scopeClosers + ';');\n this._scopeClosers = '';\n };\n _proto._withScopedSyntax = function _withScopedSyntax(func) {\n var _scopeClosers = this._scopeClosers;\n this._scopeClosers = '';\n func.call(this);\n this._closeScopeLevels();\n this._scopeClosers = _scopeClosers;\n };\n _proto._makeCallback = function _makeCallback(res) {\n var err = this._tmpid();\n return 'function(' + err + (res ? ',' + res : '') + ') {\\n' + 'if(' + err + ') { cb(' + err + '); return; }';\n };\n _proto._tmpid = function _tmpid() {\n this.lastId++;\n return 't_' + this.lastId;\n };\n _proto._templateName = function _templateName() {\n return this.templateName == null ? 'undefined' : JSON.stringify(this.templateName);\n };\n _proto._compileChildren = function _compileChildren(node, frame) {\n var _this2 = this;\n node.children.forEach(function (child) {\n _this2.compile(child, frame);\n });\n };\n _proto._compileAggregate = function _compileAggregate(node, frame, startChar, endChar) {\n var _this3 = this;\n if (startChar) {\n this._emit(startChar);\n }\n node.children.forEach(function (child, i) {\n if (i > 0) {\n _this3._emit(',');\n }\n _this3.compile(child, frame);\n });\n if (endChar) {\n this._emit(endChar);\n }\n };\n _proto._compileExpression = function _compileExpression(node, frame) {\n // TODO: I'm not really sure if this type check is worth it or\n // not.\n this.assertType(node, nodes.Literal, nodes.Symbol, nodes.Group, nodes.Array, nodes.Dict, nodes.FunCall, nodes.Caller, nodes.Filter, nodes.LookupVal, nodes.Compare, nodes.InlineIf, nodes.In, nodes.Is, nodes.And, nodes.Or, nodes.Not, nodes.Add, nodes.Concat, nodes.Sub, nodes.Mul, nodes.Div, nodes.FloorDiv, nodes.Mod, nodes.Pow, nodes.Neg, nodes.Pos, nodes.Compare, nodes.NodeList);\n this.compile(node, frame);\n };\n _proto.assertType = function assertType(node) {\n for (var _len2 = arguments.length, types = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n types[_key2 - 1] = arguments[_key2];\n }\n if (!types.some(function (t) {\n return node instanceof t;\n })) {\n this.fail(\"assertType: invalid type: \" + node.typename, node.lineno, node.colno);\n }\n };\n _proto.compileCallExtension = function compileCallExtension(node, frame, async) {\n var _this4 = this;\n var args = node.args;\n var contentArgs = node.contentArgs;\n var autoescape = typeof node.autoescape === 'boolean' ? node.autoescape : true;\n if (!async) {\n this._emit(this.buffer + \" += runtime.suppressValue(\");\n }\n this._emit(\"env.getExtension(\\\"\" + node.extName + \"\\\")[\\\"\" + node.prop + \"\\\"](\");\n this._emit('context');\n if (args || contentArgs) {\n this._emit(',');\n }\n if (args) {\n if (!(args instanceof nodes.NodeList)) {\n this.fail('compileCallExtension: arguments must be a NodeList, ' + 'use `parser.parseSignature`');\n }\n args.children.forEach(function (arg, i) {\n // Tag arguments are passed normally to the call. Note\n // that keyword arguments are turned into a single js\n // object as the last argument, if they exist.\n _this4._compileExpression(arg, frame);\n if (i !== args.children.length - 1 || contentArgs.length) {\n _this4._emit(',');\n }\n });\n }\n if (contentArgs.length) {\n contentArgs.forEach(function (arg, i) {\n if (i > 0) {\n _this4._emit(',');\n }\n if (arg) {\n _this4._emitLine('function(cb) {');\n _this4._emitLine('if(!cb) { cb = function(err) { if(err) { throw err; }}}');\n var id = _this4._pushBuffer();\n _this4._withScopedSyntax(function () {\n _this4.compile(arg, frame);\n _this4._emitLine(\"cb(null, \" + id + \");\");\n });\n _this4._popBuffer();\n _this4._emitLine(\"return \" + id + \";\");\n _this4._emitLine('}');\n } else {\n _this4._emit('null');\n }\n });\n }\n if (async) {\n var res = this._tmpid();\n this._emitLine(', ' + this._makeCallback(res));\n this._emitLine(this.buffer + \" += runtime.suppressValue(\" + res + \", \" + autoescape + \" && env.opts.autoescape);\");\n this._addScopeLevel();\n } else {\n this._emit(')');\n this._emit(\", \" + autoescape + \" && env.opts.autoescape);\\n\");\n }\n };\n _proto.compileCallExtensionAsync = function compileCallExtensionAsync(node, frame) {\n this.compileCallExtension(node, frame, true);\n };\n _proto.compileNodeList = function compileNodeList(node, frame) {\n this._compileChildren(node, frame);\n };\n _proto.compileLiteral = function compileLiteral(node) {\n if (typeof node.value === 'string') {\n var val = node.value.replace(/\\\\/g, '\\\\\\\\');\n val = val.replace(/\"/g, '\\\\\"');\n val = val.replace(/\\n/g, '\\\\n');\n val = val.replace(/\\r/g, '\\\\r');\n val = val.replace(/\\t/g, '\\\\t');\n val = val.replace(/\\u2028/g, \"\\\\u2028\");\n this._emit(\"\\\"\" + val + \"\\\"\");\n } else if (node.value === null) {\n this._emit('null');\n } else {\n this._emit(node.value.toString());\n }\n };\n _proto.compileSymbol = function compileSymbol(node, frame) {\n var name = node.value;\n var v = frame.lookup(name);\n if (v) {\n this._emit(v);\n } else {\n this._emit('runtime.contextOrFrameLookup(' + 'context, frame, \"' + name + '\")');\n }\n };\n _proto.compileGroup = function compileGroup(node, frame) {\n this._compileAggregate(node, frame, '(', ')');\n };\n _proto.compileArray = function compileArray(node, frame) {\n this._compileAggregate(node, frame, '[', ']');\n };\n _proto.compileDict = function compileDict(node, frame) {\n this._compileAggregate(node, frame, '{', '}');\n };\n _proto.compilePair = function compilePair(node, frame) {\n var key = node.key;\n var val = node.value;\n if (key instanceof nodes.Symbol) {\n key = new nodes.Literal(key.lineno, key.colno, key.value);\n } else if (!(key instanceof nodes.Literal && typeof key.value === 'string')) {\n this.fail('compilePair: Dict keys must be strings or names', key.lineno, key.colno);\n }\n this.compile(key, frame);\n this._emit(': ');\n this._compileExpression(val, frame);\n };\n _proto.compileInlineIf = function compileInlineIf(node, frame) {\n this._emit('(');\n this.compile(node.cond, frame);\n this._emit('?');\n this.compile(node.body, frame);\n this._emit(':');\n if (node.else_ !== null) {\n this.compile(node.else_, frame);\n } else {\n this._emit('\"\"');\n }\n this._emit(')');\n };\n _proto.compileIn = function compileIn(node, frame) {\n this._emit('runtime.inOperator(');\n this.compile(node.left, frame);\n this._emit(',');\n this.compile(node.right, frame);\n this._emit(')');\n };\n _proto.compileIs = function compileIs(node, frame) {\n // first, we need to try to get the name of the test function, if it's a\n // callable (i.e., has args) and not a symbol.\n var right = node.right.name ? node.right.name.value\n // otherwise go with the symbol value\n : node.right.value;\n this._emit('env.getTest(\"' + right + '\").call(context, ');\n this.compile(node.left, frame);\n // compile the arguments for the callable if they exist\n if (node.right.args) {\n this._emit(',');\n this.compile(node.right.args, frame);\n }\n this._emit(') === true');\n };\n _proto._binOpEmitter = function _binOpEmitter(node, frame, str) {\n this.compile(node.left, frame);\n this._emit(str);\n this.compile(node.right, frame);\n }\n\n // ensure concatenation instead of addition\n // by adding empty string in between\n ;\n _proto.compileOr = function compileOr(node, frame) {\n return this._binOpEmitter(node, frame, ' || ');\n };\n _proto.compileAnd = function compileAnd(node, frame) {\n return this._binOpEmitter(node, frame, ' && ');\n };\n _proto.compileAdd = function compileAdd(node, frame) {\n return this._binOpEmitter(node, frame, ' + ');\n };\n _proto.compileConcat = function compileConcat(node, frame) {\n return this._binOpEmitter(node, frame, ' + \"\" + ');\n };\n _proto.compileSub = function compileSub(node, frame) {\n return this._binOpEmitter(node, frame, ' - ');\n };\n _proto.compileMul = function compileMul(node, frame) {\n return this._binOpEmitter(node, frame, ' * ');\n };\n _proto.compileDiv = function compileDiv(node, frame) {\n return this._binOpEmitter(node, frame, ' / ');\n };\n _proto.compileMod = function compileMod(node, frame) {\n return this._binOpEmitter(node, frame, ' % ');\n };\n _proto.compileNot = function compileNot(node, frame) {\n this._emit('!');\n this.compile(node.target, frame);\n };\n _proto.compileFloorDiv = function compileFloorDiv(node, frame) {\n this._emit('Math.floor(');\n this.compile(node.left, frame);\n this._emit(' / ');\n this.compile(node.right, frame);\n this._emit(')');\n };\n _proto.compilePow = function compilePow(node, frame) {\n this._emit('Math.pow(');\n this.compile(node.left, frame);\n this._emit(', ');\n this.compile(node.right, frame);\n this._emit(')');\n };\n _proto.compileNeg = function compileNeg(node, frame) {\n this._emit('-');\n this.compile(node.target, frame);\n };\n _proto.compilePos = function compilePos(node, frame) {\n this._emit('+');\n this.compile(node.target, frame);\n };\n _proto.compileCompare = function compileCompare(node, frame) {\n var _this5 = this;\n this.compile(node.expr, frame);\n node.ops.forEach(function (op) {\n _this5._emit(\" \" + compareOps[op.type] + \" \");\n _this5.compile(op.expr, frame);\n });\n };\n _proto.compileLookupVal = function compileLookupVal(node, frame) {\n this._emit('runtime.memberLookup((');\n this._compileExpression(node.target, frame);\n this._emit('),');\n this._compileExpression(node.val, frame);\n this._emit(')');\n };\n _proto._getNodeName = function _getNodeName(node) {\n switch (node.typename) {\n case 'Symbol':\n return node.value;\n case 'FunCall':\n return 'the return value of (' + this._getNodeName(node.name) + ')';\n case 'LookupVal':\n return this._getNodeName(node.target) + '[\"' + this._getNodeName(node.val) + '\"]';\n case 'Literal':\n return node.value.toString();\n default:\n return '--expression--';\n }\n };\n _proto.compileFunCall = function compileFunCall(node, frame) {\n // Keep track of line/col info at runtime by settings\n // variables within an expression. An expression in javascript\n // like (x, y, z) returns the last value, and x and y can be\n // anything\n this._emit('(lineno = ' + node.lineno + ', colno = ' + node.colno + ', ');\n this._emit('runtime.callWrap(');\n // Compile it as normal.\n this._compileExpression(node.name, frame);\n\n // Output the name of what we're calling so we can get friendly errors\n // if the lookup fails.\n this._emit(', \"' + this._getNodeName(node.name).replace(/\"/g, '\\\\\"') + '\", context, ');\n this._compileAggregate(node.args, frame, '[', '])');\n this._emit(')');\n };\n _proto.compileFilter = function compileFilter(node, frame) {\n var name = node.name;\n this.assertType(name, nodes.Symbol);\n this._emit('env.getFilter(\"' + name.value + '\").call(context, ');\n this._compileAggregate(node.args, frame);\n this._emit(')');\n };\n _proto.compileFilterAsync = function compileFilterAsync(node, frame) {\n var name = node.name;\n var symbol = node.symbol.value;\n this.assertType(name, nodes.Symbol);\n frame.set(symbol, symbol);\n this._emit('env.getFilter(\"' + name.value + '\").call(context, ');\n this._compileAggregate(node.args, frame);\n this._emitLine(', ' + this._makeCallback(symbol));\n this._addScopeLevel();\n };\n _proto.compileKeywordArgs = function compileKeywordArgs(node, frame) {\n this._emit('runtime.makeKeywordArgs(');\n this.compileDict(node, frame);\n this._emit(')');\n };\n _proto.compileSet = function compileSet(node, frame) {\n var _this6 = this;\n var ids = [];\n\n // Lookup the variable names for each identifier and create\n // new ones if necessary\n node.targets.forEach(function (target) {\n var name = target.value;\n var id = frame.lookup(name);\n if (id === null || id === undefined) {\n id = _this6._tmpid();\n\n // Note: This relies on js allowing scope across\n // blocks, in case this is created inside an `if`\n _this6._emitLine('var ' + id + ';');\n }\n ids.push(id);\n });\n if (node.value) {\n this._emit(ids.join(' = ') + ' = ');\n this._compileExpression(node.value, frame);\n this._emitLine(';');\n } else {\n this._emit(ids.join(' = ') + ' = ');\n this.compile(node.body, frame);\n this._emitLine(';');\n }\n node.targets.forEach(function (target, i) {\n var id = ids[i];\n var name = target.value;\n\n // We are running this for every var, but it's very\n // uncommon to assign to multiple vars anyway\n _this6._emitLine(\"frame.set(\\\"\" + name + \"\\\", \" + id + \", true);\");\n _this6._emitLine('if(frame.topLevel) {');\n _this6._emitLine(\"context.setVariable(\\\"\" + name + \"\\\", \" + id + \");\");\n _this6._emitLine('}');\n if (name.charAt(0) !== '_') {\n _this6._emitLine('if(frame.topLevel) {');\n _this6._emitLine(\"context.addExport(\\\"\" + name + \"\\\", \" + id + \");\");\n _this6._emitLine('}');\n }\n });\n };\n _proto.compileSwitch = function compileSwitch(node, frame) {\n var _this7 = this;\n this._emit('switch (');\n this.compile(node.expr, frame);\n this._emit(') {');\n node.cases.forEach(function (c, i) {\n _this7._emit('case ');\n _this7.compile(c.cond, frame);\n _this7._emit(': ');\n _this7.compile(c.body, frame);\n // preserve fall-throughs\n if (c.body.children.length) {\n _this7._emitLine('break;');\n }\n });\n if (node.default) {\n this._emit('default:');\n this.compile(node.default, frame);\n }\n this._emit('}');\n };\n _proto.compileIf = function compileIf(node, frame, async) {\n var _this8 = this;\n this._emit('if(');\n this._compileExpression(node.cond, frame);\n this._emitLine(') {');\n this._withScopedSyntax(function () {\n _this8.compile(node.body, frame);\n if (async) {\n _this8._emit('cb()');\n }\n });\n if (node.else_) {\n this._emitLine('}\\nelse {');\n this._withScopedSyntax(function () {\n _this8.compile(node.else_, frame);\n if (async) {\n _this8._emit('cb()');\n }\n });\n } else if (async) {\n this._emitLine('}\\nelse {');\n this._emit('cb()');\n }\n this._emitLine('}');\n };\n _proto.compileIfAsync = function compileIfAsync(node, frame) {\n this._emit('(function(cb) {');\n this.compileIf(node, frame, true);\n this._emit('})(' + this._makeCallback());\n this._addScopeLevel();\n };\n _proto._emitLoopBindings = function _emitLoopBindings(node, arr, i, len) {\n var _this9 = this;\n var bindings = [{\n name: 'index',\n val: i + \" + 1\"\n }, {\n name: 'index0',\n val: i\n }, {\n name: 'revindex',\n val: len + \" - \" + i\n }, {\n name: 'revindex0',\n val: len + \" - \" + i + \" - 1\"\n }, {\n name: 'first',\n val: i + \" === 0\"\n }, {\n name: 'last',\n val: i + \" === \" + len + \" - 1\"\n }, {\n name: 'length',\n val: len\n }];\n bindings.forEach(function (b) {\n _this9._emitLine(\"frame.set(\\\"loop.\" + b.name + \"\\\", \" + b.val + \");\");\n });\n };\n _proto.compileFor = function compileFor(node, frame) {\n var _this10 = this;\n // Some of this code is ugly, but it keeps the generated code\n // as fast as possible. ForAsync also shares some of this, but\n // not much.\n\n var i = this._tmpid();\n var len = this._tmpid();\n var arr = this._tmpid();\n frame = frame.push();\n this._emitLine('frame = frame.push();');\n this._emit(\"var \" + arr + \" = \");\n this._compileExpression(node.arr, frame);\n this._emitLine(';');\n this._emit(\"if(\" + arr + \") {\");\n this._emitLine(arr + ' = runtime.fromIterator(' + arr + ');');\n\n // If multiple names are passed, we need to bind them\n // appropriately\n if (node.name instanceof nodes.Array) {\n this._emitLine(\"var \" + i + \";\");\n\n // The object could be an arroy or object. Note that the\n // body of the loop is duplicated for each condition, but\n // we are optimizing for speed over size.\n this._emitLine(\"if(runtime.isArray(\" + arr + \")) {\");\n this._emitLine(\"var \" + len + \" = \" + arr + \".length;\");\n this._emitLine(\"for(\" + i + \"=0; \" + i + \" < \" + arr + \".length; \" + i + \"++) {\");\n\n // Bind each declared var\n node.name.children.forEach(function (child, u) {\n var tid = _this10._tmpid();\n _this10._emitLine(\"var \" + tid + \" = \" + arr + \"[\" + i + \"][\" + u + \"];\");\n _this10._emitLine(\"frame.set(\\\"\" + child + \"\\\", \" + arr + \"[\" + i + \"][\" + u + \"]);\");\n frame.set(node.name.children[u].value, tid);\n });\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n _this10.compile(node.body, frame);\n });\n this._emitLine('}');\n this._emitLine('} else {');\n // Iterate over the key/values of an object\n var _node$name$children = node.name.children,\n key = _node$name$children[0],\n val = _node$name$children[1];\n var k = this._tmpid();\n var v = this._tmpid();\n frame.set(key.value, k);\n frame.set(val.value, v);\n this._emitLine(i + \" = -1;\");\n this._emitLine(\"var \" + len + \" = runtime.keys(\" + arr + \").length;\");\n this._emitLine(\"for(var \" + k + \" in \" + arr + \") {\");\n this._emitLine(i + \"++;\");\n this._emitLine(\"var \" + v + \" = \" + arr + \"[\" + k + \"];\");\n this._emitLine(\"frame.set(\\\"\" + key.value + \"\\\", \" + k + \");\");\n this._emitLine(\"frame.set(\\\"\" + val.value + \"\\\", \" + v + \");\");\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n _this10.compile(node.body, frame);\n });\n this._emitLine('}');\n this._emitLine('}');\n } else {\n // Generate a typical array iteration\n var _v = this._tmpid();\n frame.set(node.name.value, _v);\n this._emitLine(\"var \" + len + \" = \" + arr + \".length;\");\n this._emitLine(\"for(var \" + i + \"=0; \" + i + \" < \" + arr + \".length; \" + i + \"++) {\");\n this._emitLine(\"var \" + _v + \" = \" + arr + \"[\" + i + \"];\");\n this._emitLine(\"frame.set(\\\"\" + node.name.value + \"\\\", \" + _v + \");\");\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n _this10.compile(node.body, frame);\n });\n this._emitLine('}');\n }\n this._emitLine('}');\n if (node.else_) {\n this._emitLine('if (!' + len + ') {');\n this.compile(node.else_, frame);\n this._emitLine('}');\n }\n this._emitLine('frame = frame.pop();');\n };\n _proto._compileAsyncLoop = function _compileAsyncLoop(node, frame, parallel) {\n var _this11 = this;\n // This shares some code with the For tag, but not enough to\n // worry about. This iterates across an object asynchronously,\n // but not in parallel.\n\n var i = this._tmpid();\n var len = this._tmpid();\n var arr = this._tmpid();\n var asyncMethod = parallel ? 'asyncAll' : 'asyncEach';\n frame = frame.push();\n this._emitLine('frame = frame.push();');\n this._emit('var ' + arr + ' = runtime.fromIterator(');\n this._compileExpression(node.arr, frame);\n this._emitLine(');');\n if (node.name instanceof nodes.Array) {\n var arrayLen = node.name.children.length;\n this._emit(\"runtime.\" + asyncMethod + \"(\" + arr + \", \" + arrayLen + \", function(\");\n node.name.children.forEach(function (name) {\n _this11._emit(name.value + \",\");\n });\n this._emit(i + ',' + len + ',next) {');\n node.name.children.forEach(function (name) {\n var id = name.value;\n frame.set(id, id);\n _this11._emitLine(\"frame.set(\\\"\" + id + \"\\\", \" + id + \");\");\n });\n } else {\n var id = node.name.value;\n this._emitLine(\"runtime.\" + asyncMethod + \"(\" + arr + \", 1, function(\" + id + \", \" + i + \", \" + len + \",next) {\");\n this._emitLine('frame.set(\"' + id + '\", ' + id + ');');\n frame.set(id, id);\n }\n this._emitLoopBindings(node, arr, i, len);\n this._withScopedSyntax(function () {\n var buf;\n if (parallel) {\n buf = _this11._pushBuffer();\n }\n _this11.compile(node.body, frame);\n _this11._emitLine('next(' + i + (buf ? ',' + buf : '') + ');');\n if (parallel) {\n _this11._popBuffer();\n }\n });\n var output = this._tmpid();\n this._emitLine('}, ' + this._makeCallback(output));\n this._addScopeLevel();\n if (parallel) {\n this._emitLine(this.buffer + ' += ' + output + ';');\n }\n if (node.else_) {\n this._emitLine('if (!' + arr + '.length) {');\n this.compile(node.else_, frame);\n this._emitLine('}');\n }\n this._emitLine('frame = frame.pop();');\n };\n _proto.compileAsyncEach = function compileAsyncEach(node, frame) {\n this._compileAsyncLoop(node, frame);\n };\n _proto.compileAsyncAll = function compileAsyncAll(node, frame) {\n this._compileAsyncLoop(node, frame, true);\n };\n _proto._compileMacro = function _compileMacro(node, frame) {\n var _this12 = this;\n var args = [];\n var kwargs = null;\n var funcId = 'macro_' + this._tmpid();\n var keepFrame = frame !== undefined;\n\n // Type check the definition of the args\n node.args.children.forEach(function (arg, i) {\n if (i === node.args.children.length - 1 && arg instanceof nodes.Dict) {\n kwargs = arg;\n } else {\n _this12.assertType(arg, nodes.Symbol);\n args.push(arg);\n }\n });\n var realNames = [].concat(args.map(function (n) {\n return \"l_\" + n.value;\n }), ['kwargs']);\n\n // Quoted argument names\n var argNames = args.map(function (n) {\n return \"\\\"\" + n.value + \"\\\"\";\n });\n var kwargNames = (kwargs && kwargs.children || []).map(function (n) {\n return \"\\\"\" + n.key.value + \"\\\"\";\n });\n\n // We pass a function to makeMacro which destructures the\n // arguments so support setting positional args with keywords\n // args and passing keyword args as positional args\n // (essentially default values). See runtime.js.\n var currFrame;\n if (keepFrame) {\n currFrame = frame.push(true);\n } else {\n currFrame = new Frame();\n }\n this._emitLines(\"var \" + funcId + \" = runtime.makeMacro(\", \"[\" + argNames.join(', ') + \"], \", \"[\" + kwargNames.join(', ') + \"], \", \"function (\" + realNames.join(', ') + \") {\", 'var callerFrame = frame;', 'frame = ' + (keepFrame ? 'frame.push(true);' : 'new runtime.Frame();'), 'kwargs = kwargs || {};', 'if (Object.prototype.hasOwnProperty.call(kwargs, \"caller\")) {', 'frame.set(\"caller\", kwargs.caller); }');\n\n // Expose the arguments to the template. Don't need to use\n // random names because the function\n // will create a new run-time scope for us\n args.forEach(function (arg) {\n _this12._emitLine(\"frame.set(\\\"\" + arg.value + \"\\\", l_\" + arg.value + \");\");\n currFrame.set(arg.value, \"l_\" + arg.value);\n });\n\n // Expose the keyword arguments\n if (kwargs) {\n kwargs.children.forEach(function (pair) {\n var name = pair.key.value;\n _this12._emit(\"frame.set(\\\"\" + name + \"\\\", \");\n _this12._emit(\"Object.prototype.hasOwnProperty.call(kwargs, \\\"\" + name + \"\\\")\");\n _this12._emit(\" ? kwargs[\\\"\" + name + \"\\\"] : \");\n _this12._compileExpression(pair.value, currFrame);\n _this12._emit(');');\n });\n }\n var bufferId = this._pushBuffer();\n this._withScopedSyntax(function () {\n _this12.compile(node.body, currFrame);\n });\n this._emitLine('frame = ' + (keepFrame ? 'frame.pop();' : 'callerFrame;'));\n this._emitLine(\"return new runtime.SafeString(\" + bufferId + \");\");\n this._emitLine('});');\n this._popBuffer();\n return funcId;\n };\n _proto.compileMacro = function compileMacro(node, frame) {\n var funcId = this._compileMacro(node);\n\n // Expose the macro to the templates\n var name = node.name.value;\n frame.set(name, funcId);\n if (frame.parent) {\n this._emitLine(\"frame.set(\\\"\" + name + \"\\\", \" + funcId + \");\");\n } else {\n if (node.name.value.charAt(0) !== '_') {\n this._emitLine(\"context.addExport(\\\"\" + name + \"\\\");\");\n }\n this._emitLine(\"context.setVariable(\\\"\" + name + \"\\\", \" + funcId + \");\");\n }\n };\n _proto.compileCaller = function compileCaller(node, frame) {\n // basically an anonymous \"macro expression\"\n this._emit('(function (){');\n var funcId = this._compileMacro(node, frame);\n this._emit(\"return \" + funcId + \";})()\");\n };\n _proto._compileGetTemplate = function _compileGetTemplate(node, frame, eagerCompile, ignoreMissing) {\n var parentTemplateId = this._tmpid();\n var parentName = this._templateName();\n var cb = this._makeCallback(parentTemplateId);\n var eagerCompileArg = eagerCompile ? 'true' : 'false';\n var ignoreMissingArg = ignoreMissing ? 'true' : 'false';\n this._emit('env.getTemplate(');\n this._compileExpression(node.template, frame);\n this._emitLine(\", \" + eagerCompileArg + \", \" + parentName + \", \" + ignoreMissingArg + \", \" + cb);\n return parentTemplateId;\n };\n _proto.compileImport = function compileImport(node, frame) {\n var target = node.target.value;\n var id = this._compileGetTemplate(node, frame, false, false);\n this._addScopeLevel();\n this._emitLine(id + '.getExported(' + (node.withContext ? 'context.getVariables(), frame, ' : '') + this._makeCallback(id));\n this._addScopeLevel();\n frame.set(target, id);\n if (frame.parent) {\n this._emitLine(\"frame.set(\\\"\" + target + \"\\\", \" + id + \");\");\n } else {\n this._emitLine(\"context.setVariable(\\\"\" + target + \"\\\", \" + id + \");\");\n }\n };\n _proto.compileFromImport = function compileFromImport(node, frame) {\n var _this13 = this;\n var importedId = this._compileGetTemplate(node, frame, false, false);\n this._addScopeLevel();\n this._emitLine(importedId + '.getExported(' + (node.withContext ? 'context.getVariables(), frame, ' : '') + this._makeCallback(importedId));\n this._addScopeLevel();\n node.names.children.forEach(function (nameNode) {\n var name;\n var alias;\n var id = _this13._tmpid();\n if (nameNode instanceof nodes.Pair) {\n name = nameNode.key.value;\n alias = nameNode.value.value;\n } else {\n name = nameNode.value;\n alias = name;\n }\n _this13._emitLine(\"if(Object.prototype.hasOwnProperty.call(\" + importedId + \", \\\"\" + name + \"\\\")) {\");\n _this13._emitLine(\"var \" + id + \" = \" + importedId + \".\" + name + \";\");\n _this13._emitLine('} else {');\n _this13._emitLine(\"cb(new Error(\\\"cannot import '\" + name + \"'\\\")); return;\");\n _this13._emitLine('}');\n frame.set(alias, id);\n if (frame.parent) {\n _this13._emitLine(\"frame.set(\\\"\" + alias + \"\\\", \" + id + \");\");\n } else {\n _this13._emitLine(\"context.setVariable(\\\"\" + alias + \"\\\", \" + id + \");\");\n }\n });\n };\n _proto.compileBlock = function compileBlock(node) {\n var id = this._tmpid();\n\n // If we are executing outside a block (creating a top-level\n // block), we really don't want to execute its code because it\n // will execute twice: once when the child template runs and\n // again when the parent template runs. Note that blocks\n // within blocks will *always* execute immediately *and*\n // wherever else they are invoked (like used in a parent\n // template). This may have behavioral differences from jinja\n // because blocks can have side effects, but it seems like a\n // waste of performance to always execute huge top-level\n // blocks twice\n if (!this.inBlock) {\n this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(\"\"); } : ');\n }\n this._emit(\"context.getBlock(\\\"\" + node.name.value + \"\\\")\");\n if (!this.inBlock) {\n this._emit(')');\n }\n this._emitLine('(env, context, frame, runtime, ' + this._makeCallback(id));\n this._emitLine(this.buffer + \" += \" + id + \";\");\n this._addScopeLevel();\n };\n _proto.compileSuper = function compileSuper(node, frame) {\n var name = node.blockName.value;\n var id = node.symbol.value;\n var cb = this._makeCallback(id);\n this._emitLine(\"context.getSuper(env, \\\"\" + name + \"\\\", b_\" + name + \", frame, runtime, \" + cb);\n this._emitLine(id + \" = runtime.markSafe(\" + id + \");\");\n this._addScopeLevel();\n frame.set(id, id);\n };\n _proto.compileExtends = function compileExtends(node, frame) {\n var k = this._tmpid();\n var parentTemplateId = this._compileGetTemplate(node, frame, true, false);\n\n // extends is a dynamic tag and can occur within a block like\n // `if`, so if this happens we need to capture the parent\n // template in the top-level scope\n this._emitLine(\"parentTemplate = \" + parentTemplateId);\n this._emitLine(\"for(var \" + k + \" in parentTemplate.blocks) {\");\n this._emitLine(\"context.addBlock(\" + k + \", parentTemplate.blocks[\" + k + \"]);\");\n this._emitLine('}');\n this._addScopeLevel();\n };\n _proto.compileInclude = function compileInclude(node, frame) {\n this._emitLine('var tasks = [];');\n this._emitLine('tasks.push(');\n this._emitLine('function(callback) {');\n var id = this._compileGetTemplate(node, frame, false, node.ignoreMissing);\n this._emitLine(\"callback(null,\" + id + \");});\");\n this._emitLine('});');\n var id2 = this._tmpid();\n this._emitLine('tasks.push(');\n this._emitLine('function(template, callback){');\n this._emitLine('template.render(context.getVariables(), frame, ' + this._makeCallback(id2));\n this._emitLine('callback(null,' + id2 + ');});');\n this._emitLine('});');\n this._emitLine('tasks.push(');\n this._emitLine('function(result, callback){');\n this._emitLine(this.buffer + \" += result;\");\n this._emitLine('callback(null);');\n this._emitLine('});');\n this._emitLine('env.waterfall(tasks, function(){');\n this._addScopeLevel();\n };\n _proto.compileTemplateData = function compileTemplateData(node, frame) {\n this.compileLiteral(node, frame);\n };\n _proto.compileCapture = function compileCapture(node, frame) {\n var _this14 = this;\n // we need to temporarily override the current buffer id as 'output'\n // so the set block writes to the capture output instead of the buffer\n var buffer = this.buffer;\n this.buffer = 'output';\n this._emitLine('(function() {');\n this._emitLine('var output = \"\";');\n this._withScopedSyntax(function () {\n _this14.compile(node.body, frame);\n });\n this._emitLine('return output;');\n this._emitLine('})()');\n // and of course, revert back to the old buffer id\n this.buffer = buffer;\n };\n _proto.compileOutput = function compileOutput(node, frame) {\n var _this15 = this;\n var children = node.children;\n children.forEach(function (child) {\n // TemplateData is a special case because it is never\n // autoescaped, so simply output it for optimization\n if (child instanceof nodes.TemplateData) {\n if (child.value) {\n _this15._emit(_this15.buffer + \" += \");\n _this15.compileLiteral(child, frame);\n _this15._emitLine(';');\n }\n } else {\n _this15._emit(_this15.buffer + \" += runtime.suppressValue(\");\n if (_this15.throwOnUndefined) {\n _this15._emit('runtime.ensureDefined(');\n }\n _this15.compile(child, frame);\n if (_this15.throwOnUndefined) {\n _this15._emit(\",\" + node.lineno + \",\" + node.colno + \")\");\n }\n _this15._emit(', env.opts.autoescape);\\n');\n }\n });\n };\n _proto.compileRoot = function compileRoot(node, frame) {\n var _this16 = this;\n if (frame) {\n this.fail('compileRoot: root node can\\'t have frame');\n }\n frame = new Frame();\n this._emitFuncBegin(node, 'root');\n this._emitLine('var parentTemplate = null;');\n this._compileChildren(node, frame);\n this._emitLine('if(parentTemplate) {');\n this._emitLine('parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);');\n this._emitLine('} else {');\n this._emitLine(\"cb(null, \" + this.buffer + \");\");\n this._emitLine('}');\n this._emitFuncEnd(true);\n this.inBlock = true;\n var blockNames = [];\n var blocks = node.findAll(nodes.Block);\n blocks.forEach(function (block, i) {\n var name = block.name.value;\n if (blockNames.indexOf(name) !== -1) {\n throw new Error(\"Block \\\"\" + name + \"\\\" defined more than once.\");\n }\n blockNames.push(name);\n _this16._emitFuncBegin(block, \"b_\" + name);\n var tmpFrame = new Frame();\n _this16._emitLine('var frame = frame.push(true);');\n _this16.compile(block.body, tmpFrame);\n _this16._emitFuncEnd();\n });\n this._emitLine('return {');\n blocks.forEach(function (block, i) {\n var blockName = \"b_\" + block.name.value;\n _this16._emitLine(blockName + \": \" + blockName + \",\");\n });\n this._emitLine('root: root\\n};');\n };\n _proto.compile = function compile(node, frame) {\n var _compile = this['compile' + node.typename];\n if (_compile) {\n _compile.call(this, node, frame);\n } else {\n this.fail(\"compile: Cannot compile node: \" + node.typename, node.lineno, node.colno);\n }\n };\n _proto.getCode = function getCode() {\n return this.codebuf.join('');\n };\n return Compiler;\n}(Obj);\nmodule.exports = {\n compile: function compile(src, asyncFilters, extensions, name, opts) {\n if (opts === void 0) {\n opts = {};\n }\n var c = new Compiler(name, opts.throwOnUndefined);\n\n // Run the extension preprocessors against the source.\n var preprocessors = (extensions || []).map(function (ext) {\n return ext.preprocess;\n }).filter(function (f) {\n return !!f;\n });\n var processedSrc = preprocessors.reduce(function (s, processor) {\n return processor(s);\n }, src);\n c.compile(transformer.transform(parser.parse(processedSrc, extensions, opts), asyncFilters, name));\n return c.getCode();\n },\n Compiler: Compiler\n};","'use strict';\n\nvar lib = require('./lib');\nvar r = require('./runtime');\nvar _exports = module.exports = {};\nfunction normalize(value, defaultValue) {\n if (value === null || value === undefined || value === false) {\n return defaultValue;\n }\n return value;\n}\n_exports.abs = Math.abs;\nfunction isNaN(num) {\n return num !== num; // eslint-disable-line no-self-compare\n}\n\nfunction batch(arr, linecount, fillWith) {\n var i;\n var res = [];\n var tmp = [];\n for (i = 0; i < arr.length; i++) {\n if (i % linecount === 0 && tmp.length) {\n res.push(tmp);\n tmp = [];\n }\n tmp.push(arr[i]);\n }\n if (tmp.length) {\n if (fillWith) {\n for (i = tmp.length; i < linecount; i++) {\n tmp.push(fillWith);\n }\n }\n res.push(tmp);\n }\n return res;\n}\n_exports.batch = batch;\nfunction capitalize(str) {\n str = normalize(str, '');\n var ret = str.toLowerCase();\n return r.copySafeness(str, ret.charAt(0).toUpperCase() + ret.slice(1));\n}\n_exports.capitalize = capitalize;\nfunction center(str, width) {\n str = normalize(str, '');\n width = width || 80;\n if (str.length >= width) {\n return str;\n }\n var spaces = width - str.length;\n var pre = lib.repeat(' ', spaces / 2 - spaces % 2);\n var post = lib.repeat(' ', spaces / 2);\n return r.copySafeness(str, pre + str + post);\n}\n_exports.center = center;\nfunction default_(val, def, bool) {\n if (bool) {\n return val || def;\n } else {\n return val !== undefined ? val : def;\n }\n}\n\n// TODO: it is confusing to export something called 'default'\n_exports['default'] = default_; // eslint-disable-line dot-notation\n\nfunction dictsort(val, caseSensitive, by) {\n if (!lib.isObject(val)) {\n throw new lib.TemplateError('dictsort filter: val must be an object');\n }\n var array = [];\n // deliberately include properties from the object's prototype\n for (var k in val) {\n // eslint-disable-line guard-for-in, no-restricted-syntax\n array.push([k, val[k]]);\n }\n var si;\n if (by === undefined || by === 'key') {\n si = 0;\n } else if (by === 'value') {\n si = 1;\n } else {\n throw new lib.TemplateError('dictsort filter: You can only sort by either key or value');\n }\n array.sort(function (t1, t2) {\n var a = t1[si];\n var b = t2[si];\n if (!caseSensitive) {\n if (lib.isString(a)) {\n a = a.toUpperCase();\n }\n if (lib.isString(b)) {\n b = b.toUpperCase();\n }\n }\n return a > b ? 1 : a === b ? 0 : -1; // eslint-disable-line no-nested-ternary\n });\n\n return array;\n}\n_exports.dictsort = dictsort;\nfunction dump(obj, spaces) {\n return JSON.stringify(obj, null, spaces);\n}\n_exports.dump = dump;\nfunction escape(str) {\n if (str instanceof r.SafeString) {\n return str;\n }\n str = str === null || str === undefined ? '' : str;\n return r.markSafe(lib.escape(str.toString()));\n}\n_exports.escape = escape;\nfunction safe(str) {\n if (str instanceof r.SafeString) {\n return str;\n }\n str = str === null || str === undefined ? '' : str;\n return r.markSafe(str.toString());\n}\n_exports.safe = safe;\nfunction first(arr) {\n return arr[0];\n}\n_exports.first = first;\nfunction forceescape(str) {\n str = str === null || str === undefined ? '' : str;\n return r.markSafe(lib.escape(str.toString()));\n}\n_exports.forceescape = forceescape;\nfunction groupby(arr, attr) {\n return lib.groupBy(arr, attr, this.env.opts.throwOnUndefined);\n}\n_exports.groupby = groupby;\nfunction indent(str, width, indentfirst) {\n str = normalize(str, '');\n if (str === '') {\n return '';\n }\n width = width || 4;\n // let res = '';\n var lines = str.split('\\n');\n var sp = lib.repeat(' ', width);\n var res = lines.map(function (l, i) {\n return i === 0 && !indentfirst ? l : \"\" + sp + l;\n }).join('\\n');\n return r.copySafeness(str, res);\n}\n_exports.indent = indent;\nfunction join(arr, del, attr) {\n del = del || '';\n if (attr) {\n arr = lib.map(arr, function (v) {\n return v[attr];\n });\n }\n return arr.join(del);\n}\n_exports.join = join;\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n_exports.last = last;\nfunction lengthFilter(val) {\n var value = normalize(val, '');\n if (value !== undefined) {\n if (typeof Map === 'function' && value instanceof Map || typeof Set === 'function' && value instanceof Set) {\n // ECMAScript 2015 Maps and Sets\n return value.size;\n }\n if (lib.isObject(value) && !(value instanceof r.SafeString)) {\n // Objects (besides SafeStrings), non-primative Arrays\n return lib.keys(value).length;\n }\n return value.length;\n }\n return 0;\n}\n_exports.length = lengthFilter;\nfunction list(val) {\n if (lib.isString(val)) {\n return val.split('');\n } else if (lib.isObject(val)) {\n return lib._entries(val || {}).map(function (_ref) {\n var key = _ref[0],\n value = _ref[1];\n return {\n key: key,\n value: value\n };\n });\n } else if (lib.isArray(val)) {\n return val;\n } else {\n throw new lib.TemplateError('list filter: type not iterable');\n }\n}\n_exports.list = list;\nfunction lower(str) {\n str = normalize(str, '');\n return str.toLowerCase();\n}\n_exports.lower = lower;\nfunction nl2br(str) {\n if (str === null || str === undefined) {\n return '';\n }\n return r.copySafeness(str, str.replace(/\\r\\n|\\n/g, '<br />\\n'));\n}\n_exports.nl2br = nl2br;\nfunction random(arr) {\n return arr[Math.floor(Math.random() * arr.length)];\n}\n_exports.random = random;\n\n/**\n * Construct select or reject filter\n *\n * @param {boolean} expectedTestResult\n * @returns {function(array, string, *): array}\n */\nfunction getSelectOrReject(expectedTestResult) {\n function filter(arr, testName, secondArg) {\n if (testName === void 0) {\n testName = 'truthy';\n }\n var context = this;\n var test = context.env.getTest(testName);\n return lib.toArray(arr).filter(function examineTestResult(item) {\n return test.call(context, item, secondArg) === expectedTestResult;\n });\n }\n return filter;\n}\n_exports.reject = getSelectOrReject(false);\nfunction rejectattr(arr, attr) {\n return arr.filter(function (item) {\n return !item[attr];\n });\n}\n_exports.rejectattr = rejectattr;\n_exports.select = getSelectOrReject(true);\nfunction selectattr(arr, attr) {\n return arr.filter(function (item) {\n return !!item[attr];\n });\n}\n_exports.selectattr = selectattr;\nfunction replace(str, old, new_, maxCount) {\n var originalStr = str;\n if (old instanceof RegExp) {\n return str.replace(old, new_);\n }\n if (typeof maxCount === 'undefined') {\n maxCount = -1;\n }\n var res = ''; // Output\n\n // Cast Numbers in the search term to string\n if (typeof old === 'number') {\n old = '' + old;\n } else if (typeof old !== 'string') {\n // If it is something other than number or string,\n // return the original string\n return str;\n }\n\n // Cast numbers in the replacement to string\n if (typeof str === 'number') {\n str = '' + str;\n }\n\n // If by now, we don't have a string, throw it back\n if (typeof str !== 'string' && !(str instanceof r.SafeString)) {\n return str;\n }\n\n // ShortCircuits\n if (old === '') {\n // Mimic the python behaviour: empty string is replaced\n // by replacement e.g. \"abc\"|replace(\"\", \".\") -> .a.b.c.\n res = new_ + str.split('').join(new_) + new_;\n return r.copySafeness(str, res);\n }\n var nextIndex = str.indexOf(old);\n // if # of replacements to perform is 0, or the string to does\n // not contain the old value, return the string\n if (maxCount === 0 || nextIndex === -1) {\n return str;\n }\n var pos = 0;\n var count = 0; // # of replacements made\n\n while (nextIndex > -1 && (maxCount === -1 || count < maxCount)) {\n // Grab the next chunk of src string and add it with the\n // replacement, to the result\n res += str.substring(pos, nextIndex) + new_;\n // Increment our pointer in the src string\n pos = nextIndex + old.length;\n count++;\n // See if there are any more replacements to be made\n nextIndex = str.indexOf(old, pos);\n }\n\n // We've either reached the end, or done the max # of\n // replacements, tack on any remaining string\n if (pos < str.length) {\n res += str.substring(pos);\n }\n return r.copySafeness(originalStr, res);\n}\n_exports.replace = replace;\nfunction reverse(val) {\n var arr;\n if (lib.isString(val)) {\n arr = list(val);\n } else {\n // Copy it\n arr = lib.map(val, function (v) {\n return v;\n });\n }\n arr.reverse();\n if (lib.isString(val)) {\n return r.copySafeness(val, arr.join(''));\n }\n return arr;\n}\n_exports.reverse = reverse;\nfunction round(val, precision, method) {\n precision = precision || 0;\n var factor = Math.pow(10, precision);\n var rounder;\n if (method === 'ceil') {\n rounder = Math.ceil;\n } else if (method === 'floor') {\n rounder = Math.floor;\n } else {\n rounder = Math.round;\n }\n return rounder(val * factor) / factor;\n}\n_exports.round = round;\nfunction slice(arr, slices, fillWith) {\n var sliceLength = Math.floor(arr.length / slices);\n var extra = arr.length % slices;\n var res = [];\n var offset = 0;\n for (var i = 0; i < slices; i++) {\n var start = offset + i * sliceLength;\n if (i < extra) {\n offset++;\n }\n var end = offset + (i + 1) * sliceLength;\n var currSlice = arr.slice(start, end);\n if (fillWith && i >= extra) {\n currSlice.push(fillWith);\n }\n res.push(currSlice);\n }\n return res;\n}\n_exports.slice = slice;\nfunction sum(arr, attr, start) {\n if (start === void 0) {\n start = 0;\n }\n if (attr) {\n arr = lib.map(arr, function (v) {\n return v[attr];\n });\n }\n return start + arr.reduce(function (a, b) {\n return a + b;\n }, 0);\n}\n_exports.sum = sum;\n_exports.sort = r.makeMacro(['value', 'reverse', 'case_sensitive', 'attribute'], [], function sortFilter(arr, reversed, caseSens, attr) {\n var _this = this;\n // Copy it\n var array = lib.map(arr, function (v) {\n return v;\n });\n var getAttribute = lib.getAttrGetter(attr);\n array.sort(function (a, b) {\n var x = attr ? getAttribute(a) : a;\n var y = attr ? getAttribute(b) : b;\n if (_this.env.opts.throwOnUndefined && attr && (x === undefined || y === undefined)) {\n throw new TypeError(\"sort: attribute \\\"\" + attr + \"\\\" resolved to undefined\");\n }\n if (!caseSens && lib.isString(x) && lib.isString(y)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n if (x < y) {\n return reversed ? 1 : -1;\n } else if (x > y) {\n return reversed ? -1 : 1;\n } else {\n return 0;\n }\n });\n return array;\n});\nfunction string(obj) {\n return r.copySafeness(obj, obj);\n}\n_exports.string = string;\nfunction striptags(input, preserveLinebreaks) {\n input = normalize(input, '');\n var tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>|<!--[\\s\\S]*?-->/gi;\n var trimmedInput = trim(input.replace(tags, ''));\n var res = '';\n if (preserveLinebreaks) {\n res = trimmedInput.replace(/^ +| +$/gm, '') // remove leading and trailing spaces\n .replace(/ +/g, ' ') // squash adjacent spaces\n .replace(/(\\r\\n)/g, '\\n') // normalize linebreaks (CRLF -> LF)\n .replace(/\\n\\n\\n+/g, '\\n\\n'); // squash abnormal adjacent linebreaks\n } else {\n res = trimmedInput.replace(/\\s+/gi, ' ');\n }\n return r.copySafeness(input, res);\n}\n_exports.striptags = striptags;\nfunction title(str) {\n str = normalize(str, '');\n var words = str.split(' ').map(function (word) {\n return capitalize(word);\n });\n return r.copySafeness(str, words.join(' '));\n}\n_exports.title = title;\nfunction trim(str) {\n return r.copySafeness(str, str.replace(/^\\s*|\\s*$/g, ''));\n}\n_exports.trim = trim;\nfunction truncate(input, length, killwords, end) {\n var orig = input;\n input = normalize(input, '');\n length = length || 255;\n if (input.length <= length) {\n return input;\n }\n if (killwords) {\n input = input.substring(0, length);\n } else {\n var idx = input.lastIndexOf(' ', length);\n if (idx === -1) {\n idx = length;\n }\n input = input.substring(0, idx);\n }\n input += end !== undefined && end !== null ? end : '...';\n return r.copySafeness(orig, input);\n}\n_exports.truncate = truncate;\nfunction upper(str) {\n str = normalize(str, '');\n return str.toUpperCase();\n}\n_exports.upper = upper;\nfunction urlencode(obj) {\n var enc = encodeURIComponent;\n if (lib.isString(obj)) {\n return enc(obj);\n } else {\n var keyvals = lib.isArray(obj) ? obj : lib._entries(obj);\n return keyvals.map(function (_ref2) {\n var k = _ref2[0],\n v = _ref2[1];\n return enc(k) + \"=\" + enc(v);\n }).join('&');\n }\n}\n_exports.urlencode = urlencode;\n\n// For the jinja regexp, see\n// https://github.com/mitsuhiko/jinja2/blob/f15b814dcba6aa12bc74d1f7d0c881d55f7126be/jinja2/utils.py#L20-L23\nvar puncRe = /^(?:\\(|<|&lt;)?(.*?)(?:\\.|,|\\)|\\n|&gt;)?$/;\n// from http://blog.gerv.net/2011/05/html5_email_address_regexp/\nvar emailRe = /^[\\w.!#$%&'*+\\-\\/=?\\^`{|}~]+@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)+$/i;\nvar httpHttpsRe = /^https?:\\/\\/.*$/;\nvar wwwRe = /^www\\./;\nvar tldRe = /\\.(?:org|net|com)(?:\\:|\\/|$)/;\nfunction urlize(str, length, nofollow) {\n if (isNaN(length)) {\n length = Infinity;\n }\n var noFollowAttr = nofollow === true ? ' rel=\"nofollow\"' : '';\n var words = str.split(/(\\s+)/).filter(function (word) {\n // If the word has no length, bail. This can happen for str with\n // trailing whitespace.\n return word && word.length;\n }).map(function (word) {\n var matches = word.match(puncRe);\n var possibleUrl = matches ? matches[1] : word;\n var shortUrl = possibleUrl.substr(0, length);\n\n // url that starts with http or https\n if (httpHttpsRe.test(possibleUrl)) {\n return \"<a href=\\\"\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n }\n\n // url that starts with www.\n if (wwwRe.test(possibleUrl)) {\n return \"<a href=\\\"http://\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n }\n\n // an email address of the form username@domain.tld\n if (emailRe.test(possibleUrl)) {\n return \"<a href=\\\"mailto:\" + possibleUrl + \"\\\">\" + possibleUrl + \"</a>\";\n }\n\n // url that ends in .com, .org or .net that is not an email address\n if (tldRe.test(possibleUrl)) {\n return \"<a href=\\\"http://\" + possibleUrl + \"\\\"\" + noFollowAttr + \">\" + shortUrl + \"</a>\";\n }\n return word;\n });\n return words.join('');\n}\n_exports.urlize = urlize;\nfunction wordcount(str) {\n str = normalize(str, '');\n var words = str ? str.match(/\\w+/g) : null;\n return words ? words.length : null;\n}\n_exports.wordcount = wordcount;\nfunction float(val, def) {\n var res = parseFloat(val);\n return isNaN(res) ? def : res;\n}\n_exports.float = float;\nvar intFilter = r.makeMacro(['value', 'default', 'base'], [], function doInt(value, defaultValue, base) {\n if (base === void 0) {\n base = 10;\n }\n var res = parseInt(value, base);\n return isNaN(res) ? defaultValue : res;\n});\n_exports.int = intFilter;\n\n// Aliases\n_exports.d = _exports.default;\n_exports.e = _exports.escape;","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar path = require('path');\nvar _require = require('./object'),\n EmitterObj = _require.EmitterObj;\nmodule.exports = /*#__PURE__*/function (_EmitterObj) {\n _inheritsLoose(Loader, _EmitterObj);\n function Loader() {\n return _EmitterObj.apply(this, arguments) || this;\n }\n var _proto = Loader.prototype;\n _proto.resolve = function resolve(from, to) {\n return path.resolve(path.dirname(from), to);\n };\n _proto.isRelative = function isRelative(filename) {\n return filename.indexOf('./') === 0 || filename.indexOf('../') === 0;\n };\n return Loader;\n}(EmitterObj);","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar Loader = require('./loader');\nvar PrecompiledLoader = /*#__PURE__*/function (_Loader) {\n _inheritsLoose(PrecompiledLoader, _Loader);\n function PrecompiledLoader(compiledTemplates) {\n var _this;\n _this = _Loader.call(this) || this;\n _this.precompiled = compiledTemplates || {};\n return _this;\n }\n var _proto = PrecompiledLoader.prototype;\n _proto.getSource = function getSource(name) {\n if (this.precompiled[name]) {\n return {\n src: {\n type: 'code',\n obj: this.precompiled[name]\n },\n path: name\n };\n }\n return null;\n };\n return PrecompiledLoader;\n}(Loader);\nmodule.exports = {\n PrecompiledLoader: PrecompiledLoader\n};","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n DOT_LITERAL,\n PLUS_LITERAL,\n QMARK_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n QMARK,\n END_ANCHOR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n ...POSIX_CHARS,\n\n SLASH_LITERAL: `[${WIN_SLASH}]`,\n QMARK: WIN_NO_SLASH,\n STAR: `${WIN_NO_SLASH}*?`,\n DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n NO_DOT: `(?!${DOT_LITERAL})`,\n NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n alnum: 'a-zA-Z0-9',\n alpha: 'a-zA-Z',\n ascii: '\\\\x00-\\\\x7F',\n blank: ' \\\\t',\n cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n digit: '0-9',\n graph: '\\\\x21-\\\\x7E',\n lower: 'a-z',\n print: '\\\\x20-\\\\x7E ',\n punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n upper: 'A-Z',\n word: 'A-Za-z0-9_',\n xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n MAX_LENGTH: 1024 * 64,\n POSIX_REGEX_SOURCE,\n\n // regular expressions\n REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n // Replace globs with equivalent patterns to reduce parsing time.\n REPLACEMENTS: {\n '***': '*',\n '**/**': '**',\n '**/**/**': '**'\n },\n\n // Digits\n CHAR_0: 48, /* 0 */\n CHAR_9: 57, /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 65, /* A */\n CHAR_LOWERCASE_A: 97, /* a */\n CHAR_UPPERCASE_Z: 90, /* Z */\n CHAR_LOWERCASE_Z: 122, /* z */\n\n CHAR_LEFT_PARENTHESES: 40, /* ( */\n CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n CHAR_ASTERISK: 42, /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: 38, /* & */\n CHAR_AT: 64, /* @ */\n CHAR_BACKWARD_SLASH: 92, /* \\ */\n CHAR_CARRIAGE_RETURN: 13, /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n CHAR_COLON: 58, /* : */\n CHAR_COMMA: 44, /* , */\n CHAR_DOT: 46, /* . */\n CHAR_DOUBLE_QUOTE: 34, /* \" */\n CHAR_EQUAL: 61, /* = */\n CHAR_EXCLAMATION_MARK: 33, /* ! */\n CHAR_FORM_FEED: 12, /* \\f */\n CHAR_FORWARD_SLASH: 47, /* / */\n CHAR_GRAVE_ACCENT: 96, /* ` */\n CHAR_HASH: 35, /* # */\n CHAR_HYPHEN_MINUS: 45, /* - */\n CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n CHAR_LEFT_CURLY_BRACE: 123, /* { */\n CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n CHAR_LINE_FEED: 10, /* \\n */\n CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n CHAR_PERCENT: 37, /* % */\n CHAR_PLUS: 43, /* + */\n CHAR_QUESTION_MARK: 63, /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n CHAR_SEMICOLON: 59, /* ; */\n CHAR_SINGLE_QUOTE: 39, /* ' */\n CHAR_SPACE: 32, /* */\n CHAR_TAB: 9, /* \\t */\n CHAR_UNDERSCORE: 95, /* _ */\n CHAR_VERTICAL_LINE: 124, /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n SEP: path.sep,\n\n /**\n * Create EXTGLOB_CHARS\n */\n\n extglobChars(chars) {\n return {\n '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n '?': { type: 'qmark', open: '(?:', close: ')?' },\n '+': { type: 'plus', open: '(?:', close: ')+' },\n '*': { type: 'star', open: '(?:', close: ')*' },\n '@': { type: 'at', open: '(?:', close: ')' }\n };\n },\n\n /**\n * Create GLOB_CHARS\n */\n\n globChars(win32) {\n return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n REGEX_BACKSLASH,\n REGEX_REMOVE_BACKSLASH,\n REGEX_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n return match === '\\\\' ? '' : match;\n });\n};\n\nexports.supportsLookbehinds = () => {\n const segs = process.version.slice(1).split('.').map(Number);\n if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n return true;\n }\n return false;\n};\n\nexports.isWindows = options => {\n if (options && typeof options.windows === 'boolean') {\n return options.windows;\n }\n return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n const idx = input.lastIndexOf(char, lastIdx);\n if (idx === -1) return input;\n if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n let output = input;\n if (output.startsWith('./')) {\n output = output.slice(2);\n state.prefix = './';\n }\n return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n const prepend = options.contains ? '' : '^';\n const append = options.contains ? '' : '$';\n\n let output = `${prepend}(?:${input})${append}`;\n if (state.negated === true) {\n output = `(?:^(?!${output}).*$)`;\n }\n return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n CHAR_ASTERISK, /* * */\n CHAR_AT, /* @ */\n CHAR_BACKWARD_SLASH, /* \\ */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_EXCLAMATION_MARK, /* ! */\n CHAR_FORWARD_SLASH, /* / */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_PLUS, /* + */\n CHAR_QUESTION_MARK, /* ? */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_RIGHT_SQUARE_BRACKET /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n if (token.isPrefix !== true) {\n token.depth = token.isGlobstar ? Infinity : 1;\n }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n const opts = options || {};\n\n const length = input.length - 1;\n const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n const slashes = [];\n const tokens = [];\n const parts = [];\n\n let str = input;\n let index = -1;\n let start = 0;\n let lastIndex = 0;\n let isBrace = false;\n let isBracket = false;\n let isGlob = false;\n let isExtglob = false;\n let isGlobstar = false;\n let braceEscaped = false;\n let backslashes = false;\n let negated = false;\n let negatedExtglob = false;\n let finished = false;\n let braces = 0;\n let prev;\n let code;\n let token = { value: '', depth: 0, isGlob: false };\n\n const eos = () => index >= length;\n const peek = () => str.charCodeAt(index + 1);\n const advance = () => {\n prev = code;\n return str.charCodeAt(++index);\n };\n\n while (index < length) {\n code = advance();\n let next;\n\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braceEscaped = true;\n }\n continue;\n }\n\n if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (code === CHAR_LEFT_CURLY_BRACE) {\n braces++;\n continue;\n }\n\n if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (braceEscaped !== true && code === CHAR_COMMA) {\n isBrace = token.isBrace = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_RIGHT_CURLY_BRACE) {\n braces--;\n\n if (braces === 0) {\n braceEscaped = false;\n isBrace = token.isBrace = true;\n finished = true;\n break;\n }\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (code === CHAR_FORWARD_SLASH) {\n slashes.push(index);\n tokens.push(token);\n token = { value: '', depth: 0, isGlob: false };\n\n if (finished === true) continue;\n if (prev === CHAR_DOT && index === (start + 1)) {\n start += 2;\n continue;\n }\n\n lastIndex = index + 1;\n continue;\n }\n\n if (opts.noext !== true) {\n const isExtglobChar = code === CHAR_PLUS\n || code === CHAR_AT\n || code === CHAR_ASTERISK\n || code === CHAR_QUESTION_MARK\n || code === CHAR_EXCLAMATION_MARK;\n\n if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n isExtglob = token.isExtglob = true;\n finished = true;\n if (code === CHAR_EXCLAMATION_MARK && index === start) {\n negatedExtglob = true;\n }\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n }\n\n if (code === CHAR_ASTERISK) {\n if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_QUESTION_MARK) {\n isGlob = token.isGlob = true;\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n break;\n }\n\n if (code === CHAR_LEFT_SQUARE_BRACKET) {\n while (eos() !== true && (next = advance())) {\n if (next === CHAR_BACKWARD_SLASH) {\n backslashes = token.backslashes = true;\n advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n isBracket = token.isBracket = true;\n isGlob = token.isGlob = true;\n finished = true;\n break;\n }\n }\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n\n if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n negated = token.negated = true;\n start++;\n continue;\n }\n\n if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n isGlob = token.isGlob = true;\n\n if (scanToEnd === true) {\n while (eos() !== true && (code = advance())) {\n if (code === CHAR_LEFT_PARENTHESES) {\n backslashes = token.backslashes = true;\n code = advance();\n continue;\n }\n\n if (code === CHAR_RIGHT_PARENTHESES) {\n finished = true;\n break;\n }\n }\n continue;\n }\n break;\n }\n\n if (isGlob === true) {\n finished = true;\n\n if (scanToEnd === true) {\n continue;\n }\n\n break;\n }\n }\n\n if (opts.noext === true) {\n isExtglob = false;\n isGlob = false;\n }\n\n let base = str;\n let prefix = '';\n let glob = '';\n\n if (start > 0) {\n prefix = str.slice(0, start);\n str = str.slice(start);\n lastIndex -= start;\n }\n\n if (base && isGlob === true && lastIndex > 0) {\n base = str.slice(0, lastIndex);\n glob = str.slice(lastIndex);\n } else if (isGlob === true) {\n base = '';\n glob = str;\n } else {\n base = str;\n }\n\n if (base && base !== '' && base !== '/' && base !== str) {\n if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n base = base.slice(0, -1);\n }\n }\n\n if (opts.unescape === true) {\n if (glob) glob = utils.removeBackslashes(glob);\n\n if (base && backslashes === true) {\n base = utils.removeBackslashes(base);\n }\n }\n\n const state = {\n prefix,\n input,\n start,\n base,\n glob,\n isBrace,\n isBracket,\n isGlob,\n isExtglob,\n isGlobstar,\n negated,\n negatedExtglob\n };\n\n if (opts.tokens === true) {\n state.maxDepth = 0;\n if (!isPathSeparator(code)) {\n tokens.push(token);\n }\n state.tokens = tokens;\n }\n\n if (opts.parts === true || opts.tokens === true) {\n let prevIndex;\n\n for (let idx = 0; idx < slashes.length; idx++) {\n const n = prevIndex ? prevIndex + 1 : start;\n const i = slashes[idx];\n const value = input.slice(n, i);\n if (opts.tokens) {\n if (idx === 0 && start !== 0) {\n tokens[idx].isPrefix = true;\n tokens[idx].value = prefix;\n } else {\n tokens[idx].value = value;\n }\n depth(tokens[idx]);\n state.maxDepth += tokens[idx].depth;\n }\n if (idx !== 0 || value !== '') {\n parts.push(value);\n }\n prevIndex = i;\n }\n\n if (prevIndex && prevIndex + 1 < input.length) {\n const value = input.slice(prevIndex + 1);\n parts.push(value);\n\n if (opts.tokens) {\n tokens[tokens.length - 1].value = value;\n depth(tokens[tokens.length - 1]);\n state.maxDepth += tokens[tokens.length - 1].depth;\n }\n }\n\n state.slashes = slashes;\n state.parts = parts;\n }\n\n return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n POSIX_REGEX_SOURCE,\n REGEX_NON_SPECIAL_CHARS,\n REGEX_SPECIAL_CHARS_BACKREF,\n REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n if (typeof options.expandRange === 'function') {\n return options.expandRange(...args, options);\n }\n\n args.sort();\n const value = `[${args.join('-')}]`;\n\n try {\n /* eslint-disable-next-line no-new */\n new RegExp(value);\n } catch (ex) {\n return args.map(v => utils.escapeRegex(v)).join('..');\n }\n\n return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n input = REPLACEMENTS[input] || input;\n\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n let len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n const tokens = [bos];\n\n const capture = opts.capture ? '' : '?:';\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const PLATFORM_CHARS = constants.globChars(win32);\n const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n const {\n DOT_LITERAL,\n PLUS_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOT_SLASH,\n NO_DOTS_SLASH,\n QMARK,\n QMARK_NO_DOT,\n STAR,\n START_ANCHOR\n } = PLATFORM_CHARS;\n\n const globstar = opts => {\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const nodot = opts.dot ? '' : NO_DOT;\n const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n let star = opts.bash === true ? globstar(opts) : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n // minimatch options support\n if (typeof opts.noext === 'boolean') {\n opts.noextglob = opts.noext;\n }\n\n const state = {\n input,\n index: -1,\n start: 0,\n dot: opts.dot === true,\n consumed: '',\n output: '',\n prefix: '',\n backtrack: false,\n negated: false,\n brackets: 0,\n braces: 0,\n parens: 0,\n quotes: 0,\n globstar: false,\n tokens\n };\n\n input = utils.removePrefix(input, state);\n len = input.length;\n\n const extglobs = [];\n const braces = [];\n const stack = [];\n let prev = bos;\n let value;\n\n /**\n * Tokenizing helpers\n */\n\n const eos = () => state.index === len - 1;\n const peek = state.peek = (n = 1) => input[state.index + n];\n const advance = state.advance = () => input[++state.index] || '';\n const remaining = () => input.slice(state.index + 1);\n const consume = (value = '', num = 0) => {\n state.consumed += value;\n state.index += num;\n };\n\n const append = token => {\n state.output += token.output != null ? token.output : token.value;\n consume(token.value);\n };\n\n const negate = () => {\n let count = 1;\n\n while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n advance();\n state.start++;\n count++;\n }\n\n if (count % 2 === 0) {\n return false;\n }\n\n state.negated = true;\n state.start++;\n return true;\n };\n\n const increment = type => {\n state[type]++;\n stack.push(type);\n };\n\n const decrement = type => {\n state[type]--;\n stack.pop();\n };\n\n /**\n * Push tokens onto the tokens array. This helper speeds up\n * tokenizing by 1) helping us avoid backtracking as much as possible,\n * and 2) helping us avoid creating extra tokens when consecutive\n * characters are plain text. This improves performance and simplifies\n * lookbehinds.\n */\n\n const push = tok => {\n if (prev.type === 'globstar') {\n const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n state.output = state.output.slice(0, -prev.output.length);\n prev.type = 'star';\n prev.value = '*';\n prev.output = star;\n state.output += prev.output;\n }\n }\n\n if (extglobs.length && tok.type !== 'paren') {\n extglobs[extglobs.length - 1].inner += tok.value;\n }\n\n if (tok.value || tok.output) append(tok);\n if (prev && prev.type === 'text' && tok.type === 'text') {\n prev.value += tok.value;\n prev.output = (prev.output || '') + tok.value;\n return;\n }\n\n tok.prev = prev;\n tokens.push(tok);\n prev = tok;\n };\n\n const extglobOpen = (type, value) => {\n const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n token.prev = prev;\n token.parens = state.parens;\n token.output = state.output;\n const output = (opts.capture ? '(' : '') + token.open;\n\n increment('parens');\n push({ type, value, output: state.output ? '' : ONE_CHAR });\n push({ type: 'paren', extglob: true, value: advance(), output });\n extglobs.push(token);\n };\n\n const extglobClose = token => {\n let output = token.close + (opts.capture ? ')' : '');\n let rest;\n\n if (token.type === 'negate') {\n let extglobStar = star;\n\n if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n extglobStar = globstar(opts);\n }\n\n if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n output = token.close = `)$))${extglobStar}`;\n }\n\n if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n // In this case, we need to parse the string and use it in the output of the original pattern.\n // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n //\n // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n output = token.close = `)${expression})${extglobStar})`;\n }\n\n if (token.prev.type === 'bos') {\n state.negatedExtglob = true;\n }\n }\n\n push({ type: 'paren', extglob: true, value, output });\n decrement('parens');\n };\n\n /**\n * Fast paths\n */\n\n if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n let backslashes = false;\n\n let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n if (first === '\\\\') {\n backslashes = true;\n return m;\n }\n\n if (first === '?') {\n if (esc) {\n return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n }\n if (index === 0) {\n return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n }\n return QMARK.repeat(chars.length);\n }\n\n if (first === '.') {\n return DOT_LITERAL.repeat(chars.length);\n }\n\n if (first === '*') {\n if (esc) {\n return esc + first + (rest ? star : '');\n }\n return star;\n }\n return esc ? m : `\\\\${m}`;\n });\n\n if (backslashes === true) {\n if (opts.unescape === true) {\n output = output.replace(/\\\\/g, '');\n } else {\n output = output.replace(/\\\\+/g, m => {\n return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n });\n }\n }\n\n if (output === input && opts.contains === true) {\n state.output = input;\n return state;\n }\n\n state.output = utils.wrapOutput(output, state, options);\n return state;\n }\n\n /**\n * Tokenize input until we reach end-of-string\n */\n\n while (!eos()) {\n value = advance();\n\n if (value === '\\u0000') {\n continue;\n }\n\n /**\n * Escaped characters\n */\n\n if (value === '\\\\') {\n const next = peek();\n\n if (next === '/' && opts.bash !== true) {\n continue;\n }\n\n if (next === '.' || next === ';') {\n continue;\n }\n\n if (!next) {\n value += '\\\\';\n push({ type: 'text', value });\n continue;\n }\n\n // collapse slashes to reduce potential for exploits\n const match = /^\\\\+/.exec(remaining());\n let slashes = 0;\n\n if (match && match[0].length > 2) {\n slashes = match[0].length;\n state.index += slashes;\n if (slashes % 2 !== 0) {\n value += '\\\\';\n }\n }\n\n if (opts.unescape === true) {\n value = advance();\n } else {\n value += advance();\n }\n\n if (state.brackets === 0) {\n push({ type: 'text', value });\n continue;\n }\n }\n\n /**\n * If we're inside a regex character class, continue\n * until we reach the closing bracket.\n */\n\n if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n if (opts.posix !== false && value === ':') {\n const inner = prev.value.slice(1);\n if (inner.includes('[')) {\n prev.posix = true;\n\n if (inner.includes(':')) {\n const idx = prev.value.lastIndexOf('[');\n const pre = prev.value.slice(0, idx);\n const rest = prev.value.slice(idx + 2);\n const posix = POSIX_REGEX_SOURCE[rest];\n if (posix) {\n prev.value = pre + posix;\n state.backtrack = true;\n advance();\n\n if (!bos.output && tokens.indexOf(prev) === 1) {\n bos.output = ONE_CHAR;\n }\n continue;\n }\n }\n }\n }\n\n if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n value = `\\\\${value}`;\n }\n\n if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n value = `\\\\${value}`;\n }\n\n if (opts.posix === true && value === '!' && prev.value === '[') {\n value = '^';\n }\n\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * If we're inside a quoted string, continue\n * until we reach the closing double quote.\n */\n\n if (state.quotes === 1 && value !== '\"') {\n value = utils.escapeRegex(value);\n prev.value += value;\n append({ value });\n continue;\n }\n\n /**\n * Double quotes\n */\n\n if (value === '\"') {\n state.quotes = state.quotes === 1 ? 0 : 1;\n if (opts.keepQuotes === true) {\n push({ type: 'text', value });\n }\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === '(') {\n increment('parens');\n push({ type: 'paren', value });\n continue;\n }\n\n if (value === ')') {\n if (state.parens === 0 && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '('));\n }\n\n const extglob = extglobs[extglobs.length - 1];\n if (extglob && state.parens === extglob.parens + 1) {\n extglobClose(extglobs.pop());\n continue;\n }\n\n push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n decrement('parens');\n continue;\n }\n\n /**\n * Square brackets\n */\n\n if (value === '[') {\n if (opts.nobracket === true || !remaining().includes(']')) {\n if (opts.nobracket !== true && opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('closing', ']'));\n }\n\n value = `\\\\${value}`;\n } else {\n increment('brackets');\n }\n\n push({ type: 'bracket', value });\n continue;\n }\n\n if (value === ']') {\n if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n if (state.brackets === 0) {\n if (opts.strictBrackets === true) {\n throw new SyntaxError(syntaxError('opening', '['));\n }\n\n push({ type: 'text', value, output: `\\\\${value}` });\n continue;\n }\n\n decrement('brackets');\n\n const prevValue = prev.value.slice(1);\n if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n value = `/${value}`;\n }\n\n prev.value += value;\n append({ value });\n\n // when literal brackets are explicitly disabled\n // assume we should match with a regex character class\n if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n continue;\n }\n\n const escaped = utils.escapeRegex(prev.value);\n state.output = state.output.slice(0, -prev.value.length);\n\n // when literal brackets are explicitly enabled\n // assume we should escape the brackets to match literal characters\n if (opts.literalBrackets === true) {\n state.output += escaped;\n prev.value = escaped;\n continue;\n }\n\n // when the user specifies nothing, try to match both\n prev.value = `(${capture}${escaped}|${prev.value})`;\n state.output += prev.value;\n continue;\n }\n\n /**\n * Braces\n */\n\n if (value === '{' && opts.nobrace !== true) {\n increment('braces');\n\n const open = {\n type: 'brace',\n value,\n output: '(',\n outputIndex: state.output.length,\n tokensIndex: state.tokens.length\n };\n\n braces.push(open);\n push(open);\n continue;\n }\n\n if (value === '}') {\n const brace = braces[braces.length - 1];\n\n if (opts.nobrace === true || !brace) {\n push({ type: 'text', value, output: value });\n continue;\n }\n\n let output = ')';\n\n if (brace.dots === true) {\n const arr = tokens.slice();\n const range = [];\n\n for (let i = arr.length - 1; i >= 0; i--) {\n tokens.pop();\n if (arr[i].type === 'brace') {\n break;\n }\n if (arr[i].type !== 'dots') {\n range.unshift(arr[i].value);\n }\n }\n\n output = expandRange(range, opts);\n state.backtrack = true;\n }\n\n if (brace.comma !== true && brace.dots !== true) {\n const out = state.output.slice(0, brace.outputIndex);\n const toks = state.tokens.slice(brace.tokensIndex);\n brace.value = brace.output = '\\\\{';\n value = output = '\\\\}';\n state.output = out;\n for (const t of toks) {\n state.output += (t.output || t.value);\n }\n }\n\n push({ type: 'brace', value, output });\n decrement('braces');\n braces.pop();\n continue;\n }\n\n /**\n * Pipes\n */\n\n if (value === '|') {\n if (extglobs.length > 0) {\n extglobs[extglobs.length - 1].conditions++;\n }\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Commas\n */\n\n if (value === ',') {\n let output = value;\n\n const brace = braces[braces.length - 1];\n if (brace && stack[stack.length - 1] === 'braces') {\n brace.comma = true;\n output = '|';\n }\n\n push({ type: 'comma', value, output });\n continue;\n }\n\n /**\n * Slashes\n */\n\n if (value === '/') {\n // if the beginning of the glob is \"./\", advance the start\n // to the current index, and don't add the \"./\" characters\n // to the state. This greatly simplifies lookbehinds when\n // checking for BOS characters like \"!\" and \".\" (not \"./\")\n if (prev.type === 'dot' && state.index === state.start + 1) {\n state.start = state.index + 1;\n state.consumed = '';\n state.output = '';\n tokens.pop();\n prev = bos; // reset \"prev\" to the first token\n continue;\n }\n\n push({ type: 'slash', value, output: SLASH_LITERAL });\n continue;\n }\n\n /**\n * Dots\n */\n\n if (value === '.') {\n if (state.braces > 0 && prev.type === 'dot') {\n if (prev.value === '.') prev.output = DOT_LITERAL;\n const brace = braces[braces.length - 1];\n prev.type = 'dots';\n prev.output += value;\n prev.value += value;\n brace.dots = true;\n continue;\n }\n\n if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n push({ type: 'text', value, output: DOT_LITERAL });\n continue;\n }\n\n push({ type: 'dot', value, output: DOT_LITERAL });\n continue;\n }\n\n /**\n * Question marks\n */\n\n if (value === '?') {\n const isGroup = prev && prev.value === '(';\n if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('qmark', value);\n continue;\n }\n\n if (prev && prev.type === 'paren') {\n const next = peek();\n let output = value;\n\n if (next === '<' && !utils.supportsLookbehinds()) {\n throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n }\n\n if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n output = `\\\\${value}`;\n }\n\n push({ type: 'text', value, output });\n continue;\n }\n\n if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n push({ type: 'qmark', value, output: QMARK_NO_DOT });\n continue;\n }\n\n push({ type: 'qmark', value, output: QMARK });\n continue;\n }\n\n /**\n * Exclamation\n */\n\n if (value === '!') {\n if (opts.noextglob !== true && peek() === '(') {\n if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n extglobOpen('negate', value);\n continue;\n }\n }\n\n if (opts.nonegate !== true && state.index === 0) {\n negate();\n continue;\n }\n }\n\n /**\n * Plus\n */\n\n if (value === '+') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n extglobOpen('plus', value);\n continue;\n }\n\n if ((prev && prev.value === '(') || opts.regex === false) {\n push({ type: 'plus', value, output: PLUS_LITERAL });\n continue;\n }\n\n if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n push({ type: 'plus', value });\n continue;\n }\n\n push({ type: 'plus', value: PLUS_LITERAL });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value === '@') {\n if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n push({ type: 'at', extglob: true, value, output: '' });\n continue;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Plain text\n */\n\n if (value !== '*') {\n if (value === '$' || value === '^') {\n value = `\\\\${value}`;\n }\n\n const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n if (match) {\n value += match[0];\n state.index += match[0].length;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Stars\n */\n\n if (prev && (prev.type === 'globstar' || prev.star === true)) {\n prev.type = 'star';\n prev.star = true;\n prev.value += value;\n prev.output = star;\n state.backtrack = true;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n let rest = remaining();\n if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n extglobOpen('star', value);\n continue;\n }\n\n if (prev.type === 'star') {\n if (opts.noglobstar === true) {\n consume(value);\n continue;\n }\n\n const prior = prev.prev;\n const before = prior.prev;\n const isStart = prior.type === 'slash' || prior.type === 'bos';\n const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n push({ type: 'star', value, output: '' });\n continue;\n }\n\n // strip consecutive `/**/`\n while (rest.slice(0, 3) === '/**') {\n const after = input[state.index + 4];\n if (after && after !== '/') {\n break;\n }\n rest = rest.slice(3);\n consume('/**', 3);\n }\n\n if (prior.type === 'bos' && eos()) {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = globstar(opts);\n state.output = prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n prev.value += value;\n state.globstar = true;\n state.output += prior.output + prev.output;\n consume(value);\n continue;\n }\n\n if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n const end = rest[1] !== void 0 ? '|$' : '';\n\n state.output = state.output.slice(0, -(prior.output + prev.output).length);\n prior.output = `(?:${prior.output}`;\n\n prev.type = 'globstar';\n prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n prev.value += value;\n\n state.output += prior.output + prev.output;\n state.globstar = true;\n\n consume(value + advance());\n\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n if (prior.type === 'bos' && rest[0] === '/') {\n prev.type = 'globstar';\n prev.value += value;\n prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n state.output = prev.output;\n state.globstar = true;\n consume(value + advance());\n push({ type: 'slash', value: '/', output: '' });\n continue;\n }\n\n // remove single star from output\n state.output = state.output.slice(0, -prev.output.length);\n\n // reset previous token to globstar\n prev.type = 'globstar';\n prev.output = globstar(opts);\n prev.value += value;\n\n // reset output with globstar\n state.output += prev.output;\n state.globstar = true;\n consume(value);\n continue;\n }\n\n const token = { type: 'star', value, output: star };\n\n if (opts.bash === true) {\n token.output = '.*?';\n if (prev.type === 'bos' || prev.type === 'slash') {\n token.output = nodot + token.output;\n }\n push(token);\n continue;\n }\n\n if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n token.output = value;\n push(token);\n continue;\n }\n\n if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n if (prev.type === 'dot') {\n state.output += NO_DOT_SLASH;\n prev.output += NO_DOT_SLASH;\n\n } else if (opts.dot === true) {\n state.output += NO_DOTS_SLASH;\n prev.output += NO_DOTS_SLASH;\n\n } else {\n state.output += nodot;\n prev.output += nodot;\n }\n\n if (peek() !== '*') {\n state.output += ONE_CHAR;\n prev.output += ONE_CHAR;\n }\n }\n\n push(token);\n }\n\n while (state.brackets > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n state.output = utils.escapeLast(state.output, '[');\n decrement('brackets');\n }\n\n while (state.parens > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n state.output = utils.escapeLast(state.output, '(');\n decrement('parens');\n }\n\n while (state.braces > 0) {\n if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n state.output = utils.escapeLast(state.output, '{');\n decrement('braces');\n }\n\n if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n }\n\n // rebuild the output if we had to backtrack at any point\n if (state.backtrack === true) {\n state.output = '';\n\n for (const token of state.tokens) {\n state.output += token.output != null ? token.output : token.value;\n\n if (token.suffix) {\n state.output += token.suffix;\n }\n }\n }\n\n return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n const opts = { ...options };\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n const len = input.length;\n if (len > max) {\n throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n }\n\n input = REPLACEMENTS[input] || input;\n const win32 = utils.isWindows(options);\n\n // create constants based on platform, for windows or posix\n const {\n DOT_LITERAL,\n SLASH_LITERAL,\n ONE_CHAR,\n DOTS_SLASH,\n NO_DOT,\n NO_DOTS,\n NO_DOTS_SLASH,\n STAR,\n START_ANCHOR\n } = constants.globChars(win32);\n\n const nodot = opts.dot ? NO_DOTS : NO_DOT;\n const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n const capture = opts.capture ? '' : '?:';\n const state = { negated: false, prefix: '' };\n let star = opts.bash === true ? '.*?' : STAR;\n\n if (opts.capture) {\n star = `(${star})`;\n }\n\n const globstar = opts => {\n if (opts.noglobstar === true) return star;\n return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n };\n\n const create = str => {\n switch (str) {\n case '*':\n return `${nodot}${ONE_CHAR}${star}`;\n\n case '.*':\n return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*.*':\n return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '*/*':\n return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n case '**':\n return nodot + globstar(opts);\n\n case '**/*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n case '**/*.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n case '**/.*':\n return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n default: {\n const match = /^(.*?)\\.(\\w+)$/.exec(str);\n if (!match) return;\n\n const source = create(match[1]);\n if (!source) return;\n\n return source + DOT_LITERAL + match[2];\n }\n }\n };\n\n const output = utils.removePrefix(input, state);\n let source = create(output);\n\n if (source && opts.strictSlashes !== true) {\n source += `${SLASH_LITERAL}?`;\n }\n\n return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n if (Array.isArray(glob)) {\n const fns = glob.map(input => picomatch(input, options, returnState));\n const arrayMatcher = str => {\n for (const isMatch of fns) {\n const state = isMatch(str);\n if (state) return state;\n }\n return false;\n };\n return arrayMatcher;\n }\n\n const isState = isObject(glob) && glob.tokens && glob.input;\n\n if (glob === '' || (typeof glob !== 'string' && !isState)) {\n throw new TypeError('Expected pattern to be a non-empty string');\n }\n\n const opts = options || {};\n const posix = utils.isWindows(options);\n const regex = isState\n ? picomatch.compileRe(glob, options)\n : picomatch.makeRe(glob, options, false, true);\n\n const state = regex.state;\n delete regex.state;\n\n let isIgnored = () => false;\n if (opts.ignore) {\n const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n }\n\n const matcher = (input, returnObject = false) => {\n const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n if (typeof opts.onResult === 'function') {\n opts.onResult(result);\n }\n\n if (isMatch === false) {\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (isIgnored(input)) {\n if (typeof opts.onIgnore === 'function') {\n opts.onIgnore(result);\n }\n result.isMatch = false;\n return returnObject ? result : false;\n }\n\n if (typeof opts.onMatch === 'function') {\n opts.onMatch(result);\n }\n return returnObject ? result : true;\n };\n\n if (returnState) {\n matcher.state = state;\n }\n\n return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected input to be a string');\n }\n\n if (input === '') {\n return { isMatch: false, output: '' };\n }\n\n const opts = options || {};\n const format = opts.format || (posix ? utils.toPosixSlashes : null);\n let match = input === glob;\n let output = (match && format) ? format(input) : input;\n\n if (match === false) {\n output = format ? format(input) : input;\n match = output === glob;\n }\n\n if (match === false || opts.capture === true) {\n if (opts.matchBase === true || opts.basename === true) {\n match = picomatch.matchBase(input, regex, options, posix);\n } else {\n match = regex.exec(output);\n }\n }\n\n return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n * input: '!./foo/*.js',\n * start: 3,\n * base: 'foo',\n * glob: '*.js',\n * isBrace: false,\n * isBracket: false,\n * isGlob: true,\n * isExtglob: false,\n * isGlobstar: false,\n * negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n if (returnOutput === true) {\n return state.output;\n }\n\n const opts = options || {};\n const prepend = opts.contains ? '' : '^';\n const append = opts.contains ? '' : '$';\n\n let source = `${prepend}(?:${state.output})${append}`;\n if (state && state.negated === true) {\n source = `^(?!${source}).*$`;\n }\n\n const regex = picomatch.toRegex(source, options);\n if (returnState === true) {\n regex.state = state;\n }\n\n return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n if (!input || typeof input !== 'string') {\n throw new TypeError('Expected a non-empty string');\n }\n\n let parsed = { negated: false, fastpaths: true };\n\n if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n parsed.output = parse.fastpaths(input, options);\n }\n\n if (!parsed.output) {\n parsed = parse(input, options);\n }\n\n return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n try {\n const opts = options || {};\n return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n } catch (err) {\n if (options && options.debug === true) throw err;\n return /$^/;\n }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nconst fs = require('fs');\nconst { Readable } = require('stream');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst picomatch = require('picomatch');\n\nconst readdir = promisify(fs.readdir);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\n/**\n * @typedef {Object} EntryInfo\n * @property {String} path\n * @property {String} fullPath\n * @property {fs.Stats=} stats\n * @property {fs.Dirent=} dirent\n * @property {String} basename\n */\n\nconst BANG = '!';\nconst RECURSIVE_ERROR_CODE = 'READDIRP_RECURSIVE_ERROR';\nconst NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP', RECURSIVE_ERROR_CODE]);\nconst FILE_TYPE = 'files';\nconst DIR_TYPE = 'directories';\nconst FILE_DIR_TYPE = 'files_directories';\nconst EVERYTHING_TYPE = 'all';\nconst ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE];\n\nconst isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code);\nconst [maj, min] = process.versions.node.split('.').slice(0, 2).map(n => Number.parseInt(n, 10));\nconst wantBigintFsStats = process.platform === 'win32' && (maj > 10 || (maj === 10 && min >= 5));\n\nconst normalizeFilter = filter => {\n if (filter === undefined) return;\n if (typeof filter === 'function') return filter;\n\n if (typeof filter === 'string') {\n const glob = picomatch(filter.trim());\n return entry => glob(entry.basename);\n }\n\n if (Array.isArray(filter)) {\n const positive = [];\n const negative = [];\n for (const item of filter) {\n const trimmed = item.trim();\n if (trimmed.charAt(0) === BANG) {\n negative.push(picomatch(trimmed.slice(1)));\n } else {\n positive.push(picomatch(trimmed));\n }\n }\n\n if (negative.length > 0) {\n if (positive.length > 0) {\n return entry =>\n positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename));\n }\n return entry => !negative.some(f => f(entry.basename));\n }\n return entry => positive.some(f => f(entry.basename));\n }\n};\n\nclass ReaddirpStream extends Readable {\n static get defaultOptions() {\n return {\n root: '.',\n /* eslint-disable no-unused-vars */\n fileFilter: (path) => true,\n directoryFilter: (path) => true,\n /* eslint-enable no-unused-vars */\n type: FILE_TYPE,\n lstat: false,\n depth: 2147483648,\n alwaysStat: false\n };\n }\n\n constructor(options = {}) {\n super({\n objectMode: true,\n autoDestroy: true,\n highWaterMark: options.highWaterMark || 4096\n });\n const opts = { ...ReaddirpStream.defaultOptions, ...options };\n const { root, type } = opts;\n\n this._fileFilter = normalizeFilter(opts.fileFilter);\n this._directoryFilter = normalizeFilter(opts.directoryFilter);\n\n const statMethod = opts.lstat ? lstat : stat;\n // Use bigint stats if it's windows and stat() supports options (node 10+).\n if (wantBigintFsStats) {\n this._stat = path => statMethod(path, { bigint: true });\n } else {\n this._stat = statMethod;\n }\n\n this._maxDepth = opts.depth;\n this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type);\n this._wantsEverything = type === EVERYTHING_TYPE;\n this._root = sysPath.resolve(root);\n this._isDirent = ('Dirent' in fs) && !opts.alwaysStat;\n this._statsProp = this._isDirent ? 'dirent' : 'stats';\n this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent };\n\n // Launch stream with one parent, the root dir.\n this.parents = [this._exploreDir(root, 1)];\n this.reading = false;\n this.parent = undefined;\n }\n\n async _read(batch) {\n if (this.reading) return;\n this.reading = true;\n\n try {\n while (!this.destroyed && batch > 0) {\n const { path, depth, files = [] } = this.parent || {};\n\n if (files.length > 0) {\n const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path));\n for (const entry of await Promise.all(slice)) {\n if (this.destroyed) return;\n\n const entryType = await this._getEntryType(entry);\n if (entryType === 'directory' && this._directoryFilter(entry)) {\n if (depth <= this._maxDepth) {\n this.parents.push(this._exploreDir(entry.fullPath, depth + 1));\n }\n\n if (this._wantsDir) {\n this.push(entry);\n batch--;\n }\n } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) {\n if (this._wantsFile) {\n this.push(entry);\n batch--;\n }\n }\n }\n } else {\n const parent = this.parents.pop();\n if (!parent) {\n this.push(null);\n break;\n }\n this.parent = await parent;\n if (this.destroyed) return;\n }\n }\n } catch (error) {\n this.destroy(error);\n } finally {\n this.reading = false;\n }\n }\n\n async _exploreDir(path, depth) {\n let files;\n try {\n files = await readdir(path, this._rdOptions);\n } catch (error) {\n this._onError(error);\n }\n return { files, depth, path };\n }\n\n async _formatEntry(dirent, path) {\n let entry;\n try {\n const basename = this._isDirent ? dirent.name : dirent;\n const fullPath = sysPath.resolve(sysPath.join(path, basename));\n entry = { path: sysPath.relative(this._root, fullPath), fullPath, basename };\n entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);\n } catch (err) {\n this._onError(err);\n }\n return entry;\n }\n\n _onError(err) {\n if (isNormalFlowError(err) && !this.destroyed) {\n this.emit('warn', err);\n } else {\n this.destroy(err);\n }\n }\n\n async _getEntryType(entry) {\n // entry may be undefined, because a warning or an error were emitted\n // and the statsProp is undefined\n const stats = entry && entry[this._statsProp];\n if (!stats) {\n return;\n }\n if (stats.isFile()) {\n return 'file';\n }\n if (stats.isDirectory()) {\n return 'directory';\n }\n if (stats && stats.isSymbolicLink()) {\n const full = entry.fullPath;\n try {\n const entryRealPath = await realpath(full);\n const entryRealPathStats = await lstat(entryRealPath);\n if (entryRealPathStats.isFile()) {\n return 'file';\n }\n if (entryRealPathStats.isDirectory()) {\n const len = entryRealPath.length;\n if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath.sep) {\n const recursiveError = new Error(\n `Circular symlink detected: \"${full}\" points to \"${entryRealPath}\"`\n );\n recursiveError.code = RECURSIVE_ERROR_CODE;\n return this._onError(recursiveError);\n }\n return 'directory';\n }\n } catch (error) {\n this._onError(error);\n }\n }\n }\n\n _includeAsFile(entry) {\n const stats = entry && entry[this._statsProp];\n\n return stats && this._wantsEverything && !stats.isDirectory();\n }\n}\n\n/**\n * @typedef {Object} ReaddirpArguments\n * @property {Function=} fileFilter\n * @property {Function=} directoryFilter\n * @property {String=} type\n * @property {Number=} depth\n * @property {String=} root\n * @property {Boolean=} lstat\n * @property {Boolean=} bigint\n */\n\n/**\n * Main function which ends up calling readdirRec and reads all files and directories in given root recursively.\n * @param {String} root Root directory\n * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth\n */\nconst readdirp = (root, options = {}) => {\n let type = options.entryType || options.type;\n if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility\n if (type) options.type = type;\n if (!root) {\n throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)');\n } else if (typeof root !== 'string') {\n throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)');\n } else if (type && !ALL_TYPES.includes(type)) {\n throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`);\n }\n\n options.root = root;\n return new ReaddirpStream(options);\n};\n\nconst readdirpPromise = (root, options = {}) => {\n return new Promise((resolve, reject) => {\n const files = [];\n readdirp(root, options)\n .on('data', entry => files.push(entry))\n .on('end', () => resolve(files))\n .on('error', error => reject(error));\n });\n};\n\nreaddirp.promise = readdirpPromise;\nreaddirp.ReaddirpStream = ReaddirpStream;\nreaddirp.default = readdirp;\n\nmodule.exports = readdirp;\n","/*!\n * normalize-path <https://github.com/jonschlinkert/normalize-path>\n *\n * Copyright (c) 2014-2018, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nmodule.exports = function(path, stripTrailing) {\n if (typeof path !== 'string') {\n throw new TypeError('expected path to be a string');\n }\n\n if (path === '\\\\' || path === '/') return '/';\n\n var len = path.length;\n if (len <= 1) return path;\n\n // ensure that win32 namespaces has two leading slashes, so that the path is\n // handled properly by the win32 version of path.parse() after being normalized\n // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces\n var prefix = '';\n if (len > 4 && path[3] === '\\\\') {\n var ch = path[2];\n if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\\\\\') {\n path = path.slice(2);\n prefix = '//';\n }\n }\n\n var segs = path.split(/[/\\\\]+/);\n if (stripTrailing !== false && segs[segs.length - 1] === '') {\n segs.pop();\n }\n return prefix + segs.join('/');\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\nconst picomatch = require('picomatch');\nconst normalizePath = require('normalize-path');\n\n/**\n * @typedef {(testString: string) => boolean} AnymatchFn\n * @typedef {string|RegExp|AnymatchFn} AnymatchPattern\n * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher\n */\nconst BANG = '!';\nconst DEFAULT_OPTIONS = {returnIndex: false};\nconst arrify = (item) => Array.isArray(item) ? item : [item];\n\n/**\n * @param {AnymatchPattern} matcher\n * @param {object} options\n * @returns {AnymatchFn}\n */\nconst createPattern = (matcher, options) => {\n if (typeof matcher === 'function') {\n return matcher;\n }\n if (typeof matcher === 'string') {\n const glob = picomatch(matcher, options);\n return (string) => matcher === string || glob(string);\n }\n if (matcher instanceof RegExp) {\n return (string) => matcher.test(string);\n }\n return (string) => false;\n};\n\n/**\n * @param {Array<Function>} patterns\n * @param {Array<Function>} negPatterns\n * @param {String|Array} args\n * @param {Boolean} returnIndex\n * @returns {boolean|number}\n */\nconst matchPatterns = (patterns, negPatterns, args, returnIndex) => {\n const isList = Array.isArray(args);\n const _path = isList ? args[0] : args;\n if (!isList && typeof _path !== 'string') {\n throw new TypeError('anymatch: second argument must be a string: got ' +\n Object.prototype.toString.call(_path))\n }\n const path = normalizePath(_path, false);\n\n for (let index = 0; index < negPatterns.length; index++) {\n const nglob = negPatterns[index];\n if (nglob(path)) {\n return returnIndex ? -1 : false;\n }\n }\n\n const applied = isList && [path].concat(args.slice(1));\n for (let index = 0; index < patterns.length; index++) {\n const pattern = patterns[index];\n if (isList ? pattern(...applied) : pattern(path)) {\n return returnIndex ? index : true;\n }\n }\n\n return returnIndex ? -1 : false;\n};\n\n/**\n * @param {AnymatchMatcher} matchers\n * @param {Array|string} testString\n * @param {object} options\n * @returns {boolean|number|Function}\n */\nconst anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => {\n if (matchers == null) {\n throw new TypeError('anymatch: specify first argument');\n }\n const opts = typeof options === 'boolean' ? {returnIndex: options} : options;\n const returnIndex = opts.returnIndex || false;\n\n // Early cache for matchers.\n const mtchers = arrify(matchers);\n const negatedGlobs = mtchers\n .filter(item => typeof item === 'string' && item.charAt(0) === BANG)\n .map(item => item.slice(1))\n .map(item => picomatch(item, opts));\n const patterns = mtchers\n .filter(item => typeof item !== 'string' || (typeof item === 'string' && item.charAt(0) !== BANG))\n .map(matcher => createPattern(matcher, opts));\n\n if (testString == null) {\n return (testString, ri = false) => {\n const returnIndex = typeof ri === 'boolean' ? ri : false;\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n }\n }\n\n return matchPatterns(patterns, negatedGlobs, testString, returnIndex);\n};\n\nanymatch.default = anymatch;\nmodule.exports = anymatch;\n","/*!\n * is-extglob <https://github.com/jonschlinkert/is-extglob>\n *\n * Copyright (c) 2014-2016, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\nmodule.exports = function isExtglob(str) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n var match;\n while ((match = /(\\\\).|([@?!+*]\\(.*\\))/g.exec(str))) {\n if (match[2]) return true;\n str = str.slice(match.index + match[0].length);\n }\n\n return false;\n};\n","/*!\n * is-glob <https://github.com/jonschlinkert/is-glob>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nvar isExtglob = require('is-extglob');\nvar chars = { '{': '}', '(': ')', '[': ']'};\nvar strictCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n var pipeIndex = -2;\n var closeSquareIndex = -2;\n var closeCurlyIndex = -2;\n var closeParenIndex = -2;\n var backSlashIndex = -2;\n while (index < str.length) {\n if (str[index] === '*') {\n return true;\n }\n\n if (str[index + 1] === '?' && /[\\].+)]/.test(str[index])) {\n return true;\n }\n\n if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') {\n if (closeSquareIndex < index) {\n closeSquareIndex = str.indexOf(']', index);\n }\n if (closeSquareIndex > index) {\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) {\n return true;\n }\n }\n }\n\n if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') {\n closeCurlyIndex = str.indexOf('}', index);\n if (closeCurlyIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) {\n return true;\n }\n }\n }\n\n if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') {\n closeParenIndex = str.indexOf(')', index);\n if (closeParenIndex > index) {\n backSlashIndex = str.indexOf('\\\\', index);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n\n if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') {\n if (pipeIndex < index) {\n pipeIndex = str.indexOf('|', index);\n }\n if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') {\n closeParenIndex = str.indexOf(')', pipeIndex);\n if (closeParenIndex > pipeIndex) {\n backSlashIndex = str.indexOf('\\\\', pipeIndex);\n if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) {\n return true;\n }\n }\n }\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nvar relaxedCheck = function(str) {\n if (str[0] === '!') {\n return true;\n }\n var index = 0;\n while (index < str.length) {\n if (/[*?{}()[\\]]/.test(str[index])) {\n return true;\n }\n\n if (str[index] === '\\\\') {\n var open = str[index + 1];\n index += 2;\n var close = chars[open];\n\n if (close) {\n var n = str.indexOf(close, index);\n if (n !== -1) {\n index = n + 1;\n }\n }\n\n if (str[index] === '!') {\n return true;\n }\n } else {\n index++;\n }\n }\n return false;\n};\n\nmodule.exports = function isGlob(str, options) {\n if (typeof str !== 'string' || str === '') {\n return false;\n }\n\n if (isExtglob(str)) {\n return true;\n }\n\n var check = strictCheck;\n\n // optionally relax check\n if (options && options.strict === false) {\n check = relaxedCheck;\n }\n\n return check(str);\n};\n","'use strict';\n\nvar isGlob = require('is-glob');\nvar pathPosixDirname = require('path').posix.dirname;\nvar isWin32 = require('os').platform() === 'win32';\n\nvar slash = '/';\nvar backslash = /\\\\/g;\nvar enclosure = /[\\{\\[].*[\\}\\]]$/;\nvar globby = /(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/;\nvar escaped = /\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;\n\n/**\n * @param {string} str\n * @param {Object} opts\n * @param {boolean} [opts.flipBackslashes=true]\n * @returns {string}\n */\nmodule.exports = function globParent(str, opts) {\n var options = Object.assign({ flipBackslashes: true }, opts);\n\n // flip windows path separators\n if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) {\n str = str.replace(backslash, slash);\n }\n\n // special case for strings ending in enclosure containing path separator\n if (enclosure.test(str)) {\n str += slash;\n }\n\n // preserves full path in case of trailing path separator\n str += 'a';\n\n // remove path parts that are globby\n do {\n str = pathPosixDirname(str);\n } while (isGlob(str) || globby.test(str));\n\n // remove escape chars and return result\n return str.replace(escaped, '$1');\n};\n","'use strict';\n\nexports.isInteger = num => {\n if (typeof num === 'number') {\n return Number.isInteger(num);\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isInteger(Number(num));\n }\n return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n if (limit === false) return false;\n if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n const node = block.nodes[n];\n if (!node) return;\n\n if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n if (node.escaped !== true) {\n node.value = '\\\\' + node.value;\n node.escaped = true;\n }\n }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n if (node.type !== 'brace') return false;\n if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n node.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n if (block.type !== 'brace') return false;\n if (block.invalid === true || block.dollar) return true;\n if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n block.invalid = true;\n return true;\n }\n if (block.open !== true || block.close !== true) {\n block.invalid = true;\n return true;\n }\n return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n if (node.type === 'open' || node.type === 'close') {\n return true;\n }\n return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n if (node.type === 'text') acc.push(node.value);\n if (node.type === 'range') node.type = 'text';\n return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n const result = [];\n\n const flat = arr => {\n for (let i = 0; i < arr.length; i++) {\n const ele = arr[i];\n\n if (Array.isArray(ele)) {\n flat(ele);\n continue;\n }\n\n if (ele !== undefined) {\n result.push(ele);\n }\n }\n return result;\n };\n\n flat(args);\n return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n const stringify = (node, parent = {}) => {\n const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n let output = '';\n\n if (node.value) {\n if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n return '\\\\' + node.value;\n }\n return node.value;\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += stringify(child);\n }\n }\n return output;\n };\n\n return stringify(ast);\n};\n\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n if (typeof num === 'number') {\n return num - num === 0;\n }\n if (typeof num === 'string' && num.trim() !== '') {\n return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n }\n return false;\n};\n","/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n if (isNumber(min) === false) {\n throw new TypeError('toRegexRange: expected the first argument to be a number');\n }\n\n if (max === void 0 || min === max) {\n return String(min);\n }\n\n if (isNumber(max) === false) {\n throw new TypeError('toRegexRange: expected the second argument to be a number.');\n }\n\n let opts = { relaxZeros: true, ...options };\n if (typeof opts.strictZeros === 'boolean') {\n opts.relaxZeros = opts.strictZeros === false;\n }\n\n let relax = String(opts.relaxZeros);\n let shorthand = String(opts.shorthand);\n let capture = String(opts.capture);\n let wrap = String(opts.wrap);\n let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n return toRegexRange.cache[cacheKey].result;\n }\n\n let a = Math.min(min, max);\n let b = Math.max(min, max);\n\n if (Math.abs(a - b) === 1) {\n let result = min + '|' + max;\n if (opts.capture) {\n return `(${result})`;\n }\n if (opts.wrap === false) {\n return result;\n }\n return `(?:${result})`;\n }\n\n let isPadded = hasPadding(min) || hasPadding(max);\n let state = { min, max, a, b };\n let positives = [];\n let negatives = [];\n\n if (isPadded) {\n state.isPadded = isPadded;\n state.maxLen = String(state.max).length;\n }\n\n if (a < 0) {\n let newMin = b < 0 ? Math.abs(b) : 1;\n negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n a = state.a = 0;\n }\n\n if (b >= 0) {\n positives = splitToPatterns(a, b, state, opts);\n }\n\n state.negatives = negatives;\n state.positives = positives;\n state.result = collatePatterns(negatives, positives, opts);\n\n if (opts.capture === true) {\n state.result = `(${state.result})`;\n } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n state.result = `(?:${state.result})`;\n }\n\n toRegexRange.cache[cacheKey] = state;\n return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n let nines = 1;\n let zeros = 1;\n\n let stop = countNines(min, nines);\n let stops = new Set([max]);\n\n while (min <= stop && stop <= max) {\n stops.add(stop);\n nines += 1;\n stop = countNines(min, nines);\n }\n\n stop = countZeros(max + 1, zeros) - 1;\n\n while (min < stop && stop <= max) {\n stops.add(stop);\n zeros += 1;\n stop = countZeros(max + 1, zeros) - 1;\n }\n\n stops = [...stops];\n stops.sort(compare);\n return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n if (start === stop) {\n return { pattern: start, count: [], digits: 0 };\n }\n\n let zipped = zip(start, stop);\n let digits = zipped.length;\n let pattern = '';\n let count = 0;\n\n for (let i = 0; i < digits; i++) {\n let [startDigit, stopDigit] = zipped[i];\n\n if (startDigit === stopDigit) {\n pattern += startDigit;\n\n } else if (startDigit !== '0' || stopDigit !== '9') {\n pattern += toCharacterClass(startDigit, stopDigit, options);\n\n } else {\n count++;\n }\n }\n\n if (count) {\n pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n }\n\n return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n let ranges = splitToRanges(min, max);\n let tokens = [];\n let start = min;\n let prev;\n\n for (let i = 0; i < ranges.length; i++) {\n let max = ranges[i];\n let obj = rangeToPattern(String(start), String(max), options);\n let zeros = '';\n\n if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n if (prev.count.length > 1) {\n prev.count.pop();\n }\n\n prev.count.push(obj.count[0]);\n prev.string = prev.pattern + toQuantifier(prev.count);\n start = max + 1;\n continue;\n }\n\n if (tok.isPadded) {\n zeros = padZeros(max, tok, options);\n }\n\n obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n tokens.push(obj);\n start = max + 1;\n prev = obj;\n }\n\n return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n let result = [];\n\n for (let ele of arr) {\n let { string } = ele;\n\n // only push if _both_ are negative...\n if (!intersection && !contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n\n // or _both_ are positive\n if (intersection && contains(comparison, 'string', string)) {\n result.push(prefix + string);\n }\n }\n return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n let arr = [];\n for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n return arr;\n}\n\nfunction compare(a, b) {\n return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n let [start = 0, stop = ''] = digits;\n if (stop || start > 1) {\n return `{${start + (stop ? ',' + stop : '')}}`;\n }\n return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n if (!tok.isPadded) {\n return value;\n }\n\n let diff = Math.abs(tok.maxLen - String(value).length);\n let relax = options.relaxZeros !== false;\n\n switch (diff) {\n case 0:\n return '';\n case 1:\n return relax ? '0?' : '0';\n case 2:\n return relax ? '0{0,2}' : '00';\n default: {\n return relax ? `0{0,${diff}}` : `0{${diff}}`;\n }\n }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n let value = `${input}`;\n let index = -1;\n if (value[0] === '-') value = value.slice(1);\n if (value === '0') return false;\n while (value[++index] === '0');\n return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n if (typeof start === 'string' || typeof end === 'string') {\n return true;\n }\n return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n if (maxLength > 0) {\n let dash = input[0] === '-' ? '-' : '';\n if (dash) input = input.slice(1);\n input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n }\n if (toNumber === false) {\n return String(input);\n }\n return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n let negative = input[0] === '-' ? '-' : '';\n if (negative) {\n input = input.slice(1);\n maxLength--;\n }\n while (input.length < maxLength) input = '0' + input;\n return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n let prefix = options.capture ? '' : '?:';\n let positives = '';\n let negatives = '';\n let result;\n\n if (parts.positives.length) {\n positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n }\n\n if (parts.negatives.length) {\n negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n }\n\n if (positives && negatives) {\n result = `${positives}|${negatives}`;\n } else {\n result = positives || negatives;\n }\n\n if (options.wrap) {\n return `(${prefix}${result})`;\n }\n\n return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n if (isNumbers) {\n return toRegexRange(a, b, { wrap: false, ...options });\n }\n\n let start = String.fromCharCode(a);\n if (a === b) return start;\n\n let stop = String.fromCharCode(b);\n return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n if (Array.isArray(start)) {\n let wrap = options.wrap === true;\n let prefix = options.capture ? '' : '?:';\n return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n }\n return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n};\n\nconst invalidStep = (step, options) => {\n if (options.strictRanges === true) {\n throw new TypeError(`Expected step \"${step}\" to be a number`);\n }\n return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n let a = Number(start);\n let b = Number(end);\n\n if (!Number.isInteger(a) || !Number.isInteger(b)) {\n if (options.strictRanges === true) throw rangeError([start, end]);\n return [];\n }\n\n // fix negative zero\n if (a === 0) a = 0;\n if (b === 0) b = 0;\n\n let descending = a > b;\n let startString = String(start);\n let endString = String(end);\n let stepString = String(step);\n step = Math.max(Math.abs(step), 1);\n\n let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n let toNumber = padded === false && stringify(start, end, options) === false;\n let format = options.transform || transform(toNumber);\n\n if (options.toRegex && step === 1) {\n return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n }\n\n let parts = { negatives: [], positives: [] };\n let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n if (options.toRegex === true && step > 1) {\n push(a);\n } else {\n range.push(pad(format(a, index), maxLen, toNumber));\n }\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return step > 1\n ? toSequence(parts, options, maxLen)\n : toRegex(range, null, { wrap: false, ...options });\n }\n\n return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n return invalidRange(start, end, options);\n }\n\n let format = options.transform || (val => String.fromCharCode(val));\n let a = `${start}`.charCodeAt(0);\n let b = `${end}`.charCodeAt(0);\n\n let descending = a > b;\n let min = Math.min(a, b);\n let max = Math.max(a, b);\n\n if (options.toRegex && step === 1) {\n return toRange(min, max, false, options);\n }\n\n let range = [];\n let index = 0;\n\n while (descending ? a >= b : a <= b) {\n range.push(format(a, index));\n a = descending ? a - step : a + step;\n index++;\n }\n\n if (options.toRegex === true) {\n return toRegex(range, null, { wrap: false, options });\n }\n\n return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n if (end == null && isValidValue(start)) {\n return [start];\n }\n\n if (!isValidValue(start) || !isValidValue(end)) {\n return invalidRange(start, end, options);\n }\n\n if (typeof step === 'function') {\n return fill(start, end, 1, { transform: step });\n }\n\n if (isObject(step)) {\n return fill(start, end, 0, step);\n }\n\n let opts = { ...options };\n if (opts.capture === true) opts.wrap = true;\n step = step || opts.step || 1;\n\n if (!isNumber(step)) {\n if (step != null && !isObject(step)) return invalidStep(step, opts);\n return fill(start, end, 1, step);\n }\n\n if (isNumber(start) && isNumber(end)) {\n return fillNumbers(start, end, step, opts);\n }\n\n return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n const walk = (node, parent = {}) => {\n const invalidBlock = utils.isInvalidBrace(parent);\n const invalidNode = node.invalid === true && options.escapeInvalid === true;\n const invalid = invalidBlock === true || invalidNode === true;\n const prefix = options.escapeInvalid === true ? '\\\\' : '';\n let output = '';\n\n if (node.isOpen === true) {\n return prefix + node.value;\n }\n\n if (node.isClose === true) {\n console.log('node.isClose', prefix, node.value);\n return prefix + node.value;\n }\n\n if (node.type === 'open') {\n return invalid ? prefix + node.value : '(';\n }\n\n if (node.type === 'close') {\n return invalid ? prefix + node.value : ')';\n }\n\n if (node.type === 'comma') {\n return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n }\n\n if (node.value) {\n return node.value;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n if (range.length !== 0) {\n return args.length > 1 && range.length > 1 ? `(${range})` : range;\n }\n }\n\n if (node.nodes) {\n for (const child of node.nodes) {\n output += walk(child, node);\n }\n }\n\n return output;\n };\n\n return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n const result = [];\n\n queue = [].concat(queue);\n stash = [].concat(stash);\n\n if (!stash.length) return queue;\n if (!queue.length) {\n return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n }\n\n for (const item of queue) {\n if (Array.isArray(item)) {\n for (const value of item) {\n result.push(append(value, stash, enclose));\n }\n } else {\n for (let ele of stash) {\n if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n }\n }\n }\n return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n const walk = (node, parent = {}) => {\n node.queue = [];\n\n let p = parent;\n let q = parent.queue;\n\n while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n p = p.parent;\n q = p.queue;\n }\n\n if (node.invalid || node.dollar) {\n q.push(append(q.pop(), stringify(node, options)));\n return;\n }\n\n if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n q.push(append(q.pop(), ['{}']));\n return;\n }\n\n if (node.nodes && node.ranges > 0) {\n const args = utils.reduce(node.nodes);\n\n if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n }\n\n let range = fill(...args, options);\n if (range.length === 0) {\n range = stringify(node, options);\n }\n\n q.push(append(q.pop(), range));\n node.nodes = [];\n return;\n }\n\n const enclose = utils.encloseBrace(node);\n let queue = node.queue;\n let block = node;\n\n while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n block = block.parent;\n queue = block.queue;\n }\n\n for (let i = 0; i < node.nodes.length; i++) {\n const child = node.nodes[i];\n\n if (child.type === 'comma' && node.type === 'brace') {\n if (i === 1) queue.push('');\n queue.push('');\n continue;\n }\n\n if (child.type === 'close') {\n q.push(append(q.pop(), queue, enclose));\n continue;\n }\n\n if (child.value && child.type !== 'open') {\n queue.push(append(queue.pop(), child.value));\n continue;\n }\n\n if (child.nodes) {\n walk(child, node);\n }\n }\n\n return queue;\n };\n\n return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n MAX_LENGTH: 10000,\n\n // Digits\n CHAR_0: '0', /* 0 */\n CHAR_9: '9', /* 9 */\n\n // Alphabet chars.\n CHAR_UPPERCASE_A: 'A', /* A */\n CHAR_LOWERCASE_A: 'a', /* a */\n CHAR_UPPERCASE_Z: 'Z', /* Z */\n CHAR_LOWERCASE_Z: 'z', /* z */\n\n CHAR_LEFT_PARENTHESES: '(', /* ( */\n CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n CHAR_ASTERISK: '*', /* * */\n\n // Non-alphabetic chars.\n CHAR_AMPERSAND: '&', /* & */\n CHAR_AT: '@', /* @ */\n CHAR_BACKSLASH: '\\\\', /* \\ */\n CHAR_BACKTICK: '`', /* ` */\n CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n CHAR_COLON: ':', /* : */\n CHAR_COMMA: ',', /* , */\n CHAR_DOLLAR: '$', /* . */\n CHAR_DOT: '.', /* . */\n CHAR_DOUBLE_QUOTE: '\"', /* \" */\n CHAR_EQUAL: '=', /* = */\n CHAR_EXCLAMATION_MARK: '!', /* ! */\n CHAR_FORM_FEED: '\\f', /* \\f */\n CHAR_FORWARD_SLASH: '/', /* / */\n CHAR_HASH: '#', /* # */\n CHAR_HYPHEN_MINUS: '-', /* - */\n CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n CHAR_LEFT_CURLY_BRACE: '{', /* { */\n CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n CHAR_LINE_FEED: '\\n', /* \\n */\n CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n CHAR_PERCENT: '%', /* % */\n CHAR_PLUS: '+', /* + */\n CHAR_QUESTION_MARK: '?', /* ? */\n CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n CHAR_SEMICOLON: ';', /* ; */\n CHAR_SINGLE_QUOTE: '\\'', /* ' */\n CHAR_SPACE: ' ', /* */\n CHAR_TAB: '\\t', /* \\t */\n CHAR_UNDERSCORE: '_', /* _ */\n CHAR_VERTICAL_LINE: '|', /* | */\n CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n MAX_LENGTH,\n CHAR_BACKSLASH, /* \\ */\n CHAR_BACKTICK, /* ` */\n CHAR_COMMA, /* , */\n CHAR_DOT, /* . */\n CHAR_LEFT_PARENTHESES, /* ( */\n CHAR_RIGHT_PARENTHESES, /* ) */\n CHAR_LEFT_CURLY_BRACE, /* { */\n CHAR_RIGHT_CURLY_BRACE, /* } */\n CHAR_LEFT_SQUARE_BRACKET, /* [ */\n CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n CHAR_DOUBLE_QUOTE, /* \" */\n CHAR_SINGLE_QUOTE, /* ' */\n CHAR_NO_BREAK_SPACE,\n CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n if (typeof input !== 'string') {\n throw new TypeError('Expected a string');\n }\n\n const opts = options || {};\n const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n if (input.length > max) {\n throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n }\n\n const ast = { type: 'root', input, nodes: [] };\n const stack = [ast];\n let block = ast;\n let prev = ast;\n let brackets = 0;\n const length = input.length;\n let index = 0;\n let depth = 0;\n let value;\n\n /**\n * Helpers\n */\n\n const advance = () => input[index++];\n const push = node => {\n if (node.type === 'text' && prev.type === 'dot') {\n prev.type = 'text';\n }\n\n if (prev && prev.type === 'text' && node.type === 'text') {\n prev.value += node.value;\n return;\n }\n\n block.nodes.push(node);\n node.parent = block;\n node.prev = prev;\n prev = node;\n return node;\n };\n\n push({ type: 'bos' });\n\n while (index < length) {\n block = stack[stack.length - 1];\n value = advance();\n\n /**\n * Invalid chars\n */\n\n if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n continue;\n }\n\n /**\n * Escaped chars\n */\n\n if (value === CHAR_BACKSLASH) {\n push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n continue;\n }\n\n /**\n * Right square bracket (literal): ']'\n */\n\n if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n push({ type: 'text', value: '\\\\' + value });\n continue;\n }\n\n /**\n * Left square bracket: '['\n */\n\n if (value === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n\n let next;\n\n while (index < length && (next = advance())) {\n value += next;\n\n if (next === CHAR_LEFT_SQUARE_BRACKET) {\n brackets++;\n continue;\n }\n\n if (next === CHAR_BACKSLASH) {\n value += advance();\n continue;\n }\n\n if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n brackets--;\n\n if (brackets === 0) {\n break;\n }\n }\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Parentheses\n */\n\n if (value === CHAR_LEFT_PARENTHESES) {\n block = push({ type: 'paren', nodes: [] });\n stack.push(block);\n push({ type: 'text', value });\n continue;\n }\n\n if (value === CHAR_RIGHT_PARENTHESES) {\n if (block.type !== 'paren') {\n push({ type: 'text', value });\n continue;\n }\n block = stack.pop();\n push({ type: 'text', value });\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Quotes: '|\"|`\n */\n\n if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n const open = value;\n let next;\n\n if (options.keepQuotes !== true) {\n value = '';\n }\n\n while (index < length && (next = advance())) {\n if (next === CHAR_BACKSLASH) {\n value += next + advance();\n continue;\n }\n\n if (next === open) {\n if (options.keepQuotes === true) value += next;\n break;\n }\n\n value += next;\n }\n\n push({ type: 'text', value });\n continue;\n }\n\n /**\n * Left curly brace: '{'\n */\n\n if (value === CHAR_LEFT_CURLY_BRACE) {\n depth++;\n\n const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n const brace = {\n type: 'brace',\n open: true,\n close: false,\n dollar,\n depth,\n commas: 0,\n ranges: 0,\n nodes: []\n };\n\n block = push(brace);\n stack.push(block);\n push({ type: 'open', value });\n continue;\n }\n\n /**\n * Right curly brace: '}'\n */\n\n if (value === CHAR_RIGHT_CURLY_BRACE) {\n if (block.type !== 'brace') {\n push({ type: 'text', value });\n continue;\n }\n\n const type = 'close';\n block = stack.pop();\n block.close = true;\n\n push({ type, value });\n depth--;\n\n block = stack[stack.length - 1];\n continue;\n }\n\n /**\n * Comma: ','\n */\n\n if (value === CHAR_COMMA && depth > 0) {\n if (block.ranges > 0) {\n block.ranges = 0;\n const open = block.nodes.shift();\n block.nodes = [open, { type: 'text', value: stringify(block) }];\n }\n\n push({ type: 'comma', value });\n block.commas++;\n continue;\n }\n\n /**\n * Dot: '.'\n */\n\n if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n const siblings = block.nodes;\n\n if (depth === 0 || siblings.length === 0) {\n push({ type: 'text', value });\n continue;\n }\n\n if (prev.type === 'dot') {\n block.range = [];\n prev.value += value;\n prev.type = 'range';\n\n if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n block.invalid = true;\n block.ranges = 0;\n prev.type = 'text';\n continue;\n }\n\n block.ranges++;\n block.args = [];\n continue;\n }\n\n if (prev.type === 'range') {\n siblings.pop();\n\n const before = siblings[siblings.length - 1];\n before.value += prev.value + value;\n prev = before;\n block.ranges--;\n continue;\n }\n\n push({ type: 'dot', value });\n continue;\n }\n\n /**\n * Text\n */\n\n push({ type: 'text', value });\n }\n\n // Mark imbalanced braces and brackets as invalid\n do {\n block = stack.pop();\n\n if (block.type !== 'root') {\n block.nodes.forEach(node => {\n if (!node.nodes) {\n if (node.type === 'open') node.isOpen = true;\n if (node.type === 'close') node.isClose = true;\n if (!node.nodes) node.type = 'text';\n node.invalid = true;\n }\n });\n\n // get the location of the block on parent.nodes (block's siblings)\n const parent = stack[stack.length - 1];\n const index = parent.nodes.indexOf(block);\n // replace the (invalid) block with it's nodes\n parent.nodes.splice(index, 1, ...block.nodes);\n }\n } while (stack.length > 0);\n\n push({ type: 'eos' });\n return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n let output = [];\n\n if (Array.isArray(input)) {\n for (const pattern of input) {\n const result = braces.create(pattern, options);\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n }\n } else {\n output = [].concat(braces.create(input, options));\n }\n\n if (options && options.expand === true && options.nodupes === true) {\n output = [...new Set(output)];\n }\n return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n if (typeof input === 'string') {\n return stringify(braces.parse(input, options), options);\n }\n return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n if (typeof input === 'string') {\n input = braces.parse(input, options);\n }\n\n let result = expand(input, options);\n\n // filter out empty strings if specified\n if (options.noempty === true) {\n result = result.filter(Boolean);\n }\n\n // filter out duplicates if specified\n if (options.nodupes === true) {\n result = [...new Set(result)];\n }\n\n return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n if (input === '' || input.length < 3) {\n return [input];\n }\n\n return options.expand !== true\n ? braces.compile(input, options)\n : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","module.exports = require('./binary-extensions.json');\n","'use strict';\nconst path = require('path');\nconst binaryExtensions = require('binary-extensions');\n\nconst extensions = new Set(binaryExtensions);\n\nmodule.exports = filePath => extensions.has(path.extname(filePath).slice(1).toLowerCase());\n","'use strict';\n\nconst {sep} = require('path');\nconst {platform} = process;\nconst os = require('os');\n\nexports.EV_ALL = 'all';\nexports.EV_READY = 'ready';\nexports.EV_ADD = 'add';\nexports.EV_CHANGE = 'change';\nexports.EV_ADD_DIR = 'addDir';\nexports.EV_UNLINK = 'unlink';\nexports.EV_UNLINK_DIR = 'unlinkDir';\nexports.EV_RAW = 'raw';\nexports.EV_ERROR = 'error';\n\nexports.STR_DATA = 'data';\nexports.STR_END = 'end';\nexports.STR_CLOSE = 'close';\n\nexports.FSEVENT_CREATED = 'created';\nexports.FSEVENT_MODIFIED = 'modified';\nexports.FSEVENT_DELETED = 'deleted';\nexports.FSEVENT_MOVED = 'moved';\nexports.FSEVENT_CLONED = 'cloned';\nexports.FSEVENT_UNKNOWN = 'unknown';\nexports.FSEVENT_FLAG_MUST_SCAN_SUBDIRS = 1;\nexports.FSEVENT_TYPE_FILE = 'file';\nexports.FSEVENT_TYPE_DIRECTORY = 'directory';\nexports.FSEVENT_TYPE_SYMLINK = 'symlink';\n\nexports.KEY_LISTENERS = 'listeners';\nexports.KEY_ERR = 'errHandlers';\nexports.KEY_RAW = 'rawEmitters';\nexports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW];\n\nexports.DOT_SLASH = `.${sep}`;\n\nexports.BACK_SLASH_RE = /\\\\/g;\nexports.DOUBLE_SLASH_RE = /\\/\\//;\nexports.SLASH_OR_BACK_SLASH_RE = /[/\\\\]/;\nexports.DOT_RE = /\\..*\\.(sw[px])$|~$|\\.subl.*\\.tmp/;\nexports.REPLACER_RE = /^\\.[/\\\\]/;\n\nexports.SLASH = '/';\nexports.SLASH_SLASH = '//';\nexports.BRACE_START = '{';\nexports.BANG = '!';\nexports.ONE_DOT = '.';\nexports.TWO_DOTS = '..';\nexports.STAR = '*';\nexports.GLOBSTAR = '**';\nexports.ROOT_GLOBSTAR = '/**/*';\nexports.SLASH_GLOBSTAR = '/**';\nexports.DIR_SUFFIX = 'Dir';\nexports.ANYMATCH_OPTS = {dot: true};\nexports.STRING_TYPE = 'string';\nexports.FUNCTION_TYPE = 'function';\nexports.EMPTY_STR = '';\nexports.EMPTY_FN = () => {};\nexports.IDENTITY_FN = val => val;\n\nexports.isWindows = platform === 'win32';\nexports.isMacos = platform === 'darwin';\nexports.isLinux = platform === 'linux';\nexports.isIBMi = os.type() === 'OS400';\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst isBinaryPath = require('is-binary-path');\nconst {\n isWindows,\n isLinux,\n EMPTY_FN,\n EMPTY_STR,\n KEY_LISTENERS,\n KEY_ERR,\n KEY_RAW,\n HANDLER_KEYS,\n EV_CHANGE,\n EV_ADD,\n EV_ADD_DIR,\n EV_ERROR,\n STR_DATA,\n STR_END,\n BRACE_START,\n STAR\n} = require('./constants');\n\nconst THROTTLE_MODE_WATCH = 'watch';\n\nconst open = promisify(fs.open);\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst close = promisify(fs.close);\nconst fsrealpath = promisify(fs.realpath);\n\nconst statMethods = { lstat, stat };\n\n// TODO: emit errors properly. Example: EMFILE on Macos.\nconst foreach = (val, fn) => {\n if (val instanceof Set) {\n val.forEach(fn);\n } else {\n fn(val);\n }\n};\n\nconst addAndConvert = (main, prop, item) => {\n let container = main[prop];\n if (!(container instanceof Set)) {\n main[prop] = container = new Set([container]);\n }\n container.add(item);\n};\n\nconst clearItem = cont => key => {\n const set = cont[key];\n if (set instanceof Set) {\n set.clear();\n } else {\n delete cont[key];\n }\n};\n\nconst delFromSet = (main, prop, item) => {\n const container = main[prop];\n if (container instanceof Set) {\n container.delete(item);\n } else if (container === item) {\n delete main[prop];\n }\n};\n\nconst isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val;\n\n/**\n * @typedef {String} Path\n */\n\n// fs_watch helpers\n\n// object to hold per-process fs_watch instances\n// (may be shared across chokidar FSWatcher instances)\n\n/**\n * @typedef {Object} FsWatchContainer\n * @property {Set} listeners\n * @property {Set} errHandlers\n * @property {Set} rawEmitters\n * @property {fs.FSWatcher=} watcher\n * @property {Boolean=} watcherUnusable\n */\n\n/**\n * @type {Map<String,FsWatchContainer>}\n */\nconst FsWatchInstances = new Map();\n\n/**\n * Instantiates the fs_watch interface\n * @param {String} path to be watched\n * @param {Object} options to be passed to fs_watch\n * @param {Function} listener main event handler\n * @param {Function} errHandler emits info about errors\n * @param {Function} emitRaw emits raw event data\n * @returns {fs.FSWatcher} new fsevents instance\n */\nfunction createFsWatchInstance(path, options, listener, errHandler, emitRaw) {\n const handleEvent = (rawEvent, evPath) => {\n listener(path);\n emitRaw(rawEvent, evPath, {watchedPath: path});\n\n // emit based on events occurring for files from a directory's watcher in\n // case the file's watcher misses it (and rely on throttling to de-dupe)\n if (evPath && path !== evPath) {\n fsWatchBroadcast(\n sysPath.resolve(path, evPath), KEY_LISTENERS, sysPath.join(path, evPath)\n );\n }\n };\n try {\n return fs.watch(path, options, handleEvent);\n } catch (error) {\n errHandler(error);\n }\n}\n\n/**\n * Helper for passing fs_watch event data to a collection of listeners\n * @param {Path} fullPath absolute path bound to fs_watch instance\n * @param {String} type listener type\n * @param {*=} val1 arguments to be passed to listeners\n * @param {*=} val2\n * @param {*=} val3\n */\nconst fsWatchBroadcast = (fullPath, type, val1, val2, val3) => {\n const cont = FsWatchInstances.get(fullPath);\n if (!cont) return;\n foreach(cont[type], (listener) => {\n listener(val1, val2, val3);\n });\n};\n\n/**\n * Instantiates the fs_watch interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path\n * @param {String} fullPath absolute path\n * @param {Object} options to be passed to fs_watch\n * @param {Object} handlers container for event listener functions\n */\nconst setFsWatchListener = (path, fullPath, options, handlers) => {\n const {listener, errHandler, rawEmitter} = handlers;\n let cont = FsWatchInstances.get(fullPath);\n\n /** @type {fs.FSWatcher=} */\n let watcher;\n if (!options.persistent) {\n watcher = createFsWatchInstance(\n path, options, listener, errHandler, rawEmitter\n );\n return watcher.close.bind(watcher);\n }\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_ERR, errHandler);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n watcher = createFsWatchInstance(\n path,\n options,\n fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS),\n errHandler, // no need to use broadcast here\n fsWatchBroadcast.bind(null, fullPath, KEY_RAW)\n );\n if (!watcher) return;\n watcher.on(EV_ERROR, async (error) => {\n const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);\n cont.watcherUnusable = true; // documented since Node 10.4.1\n // Workaround for https://github.com/joyent/node/issues/4337\n if (isWindows && error.code === 'EPERM') {\n try {\n const fd = await open(path, 'r');\n await close(fd);\n broadcastErr(error);\n } catch (err) {}\n } else {\n broadcastErr(error);\n }\n });\n cont = {\n listeners: listener,\n errHandlers: errHandler,\n rawEmitters: rawEmitter,\n watcher\n };\n FsWatchInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // removes this instance's listeners and closes the underlying fs_watch\n // instance if there are no more listeners left\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_ERR, errHandler);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n // Check to protect against issue gh-730.\n // if (cont.watcherUnusable) {\n cont.watcher.close();\n // }\n FsWatchInstances.delete(fullPath);\n HANDLER_KEYS.forEach(clearItem(cont));\n cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n// fs_watchFile helpers\n\n// object to hold per-process fs_watchFile instances\n// (may be shared across chokidar FSWatcher instances)\nconst FsWatchFileInstances = new Map();\n\n/**\n * Instantiates the fs_watchFile interface or binds listeners\n * to an existing one covering the same file system entry\n * @param {String} path to be watched\n * @param {String} fullPath absolute path\n * @param {Object} options options to be passed to fs_watchFile\n * @param {Object} handlers container for event listener functions\n * @returns {Function} closer\n */\nconst setFsWatchFileListener = (path, fullPath, options, handlers) => {\n const {listener, rawEmitter} = handlers;\n let cont = FsWatchFileInstances.get(fullPath);\n\n /* eslint-disable no-unused-vars, prefer-destructuring */\n let listeners = new Set();\n let rawEmitters = new Set();\n\n const copts = cont && cont.options;\n if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) {\n // \"Upgrade\" the watcher to persistence or a quicker interval.\n // This creates some unlikely edge case issues if the user mixes\n // settings in a very weird way, but solving for those cases\n // doesn't seem worthwhile for the added complexity.\n listeners = cont.listeners;\n rawEmitters = cont.rawEmitters;\n fs.unwatchFile(fullPath);\n cont = undefined;\n }\n\n /* eslint-enable no-unused-vars, prefer-destructuring */\n\n if (cont) {\n addAndConvert(cont, KEY_LISTENERS, listener);\n addAndConvert(cont, KEY_RAW, rawEmitter);\n } else {\n // TODO\n // listeners.add(listener);\n // rawEmitters.add(rawEmitter);\n cont = {\n listeners: listener,\n rawEmitters: rawEmitter,\n options,\n watcher: fs.watchFile(fullPath, options, (curr, prev) => {\n foreach(cont.rawEmitters, (rawEmitter) => {\n rawEmitter(EV_CHANGE, fullPath, {curr, prev});\n });\n const currmtime = curr.mtimeMs;\n if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) {\n foreach(cont.listeners, (listener) => listener(path, curr));\n }\n })\n };\n FsWatchFileInstances.set(fullPath, cont);\n }\n // const index = cont.listeners.indexOf(listener);\n\n // Removes this instance's listeners and closes the underlying fs_watchFile\n // instance if there are no more listeners left.\n return () => {\n delFromSet(cont, KEY_LISTENERS, listener);\n delFromSet(cont, KEY_RAW, rawEmitter);\n if (isEmptySet(cont.listeners)) {\n FsWatchFileInstances.delete(fullPath);\n fs.unwatchFile(fullPath);\n cont.options = cont.watcher = undefined;\n Object.freeze(cont);\n }\n };\n};\n\n/**\n * @mixin\n */\nclass NodeFsHandler {\n\n/**\n * @param {import(\"../index\").FSWatcher} fsW\n */\nconstructor(fsW) {\n this.fsw = fsW;\n this._boundHandleError = (error) => fsW._handleError(error);\n}\n\n/**\n * Watch file for changes with fs_watchFile or fs_watch.\n * @param {String} path to file or dir\n * @param {Function} listener on fs change\n * @returns {Function} closer for the watcher instance\n */\n_watchWithNodeFs(path, listener) {\n const opts = this.fsw.options;\n const directory = sysPath.dirname(path);\n const basename = sysPath.basename(path);\n const parent = this.fsw._getWatchedDir(directory);\n parent.add(basename);\n const absolutePath = sysPath.resolve(path);\n const options = {persistent: opts.persistent};\n if (!listener) listener = EMPTY_FN;\n\n let closer;\n if (opts.usePolling) {\n options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ?\n opts.binaryInterval : opts.interval;\n closer = setFsWatchFileListener(path, absolutePath, options, {\n listener,\n rawEmitter: this.fsw._emitRaw\n });\n } else {\n closer = setFsWatchListener(path, absolutePath, options, {\n listener,\n errHandler: this._boundHandleError,\n rawEmitter: this.fsw._emitRaw\n });\n }\n return closer;\n}\n\n/**\n * Watch a file and emit add event if warranted.\n * @param {Path} file Path\n * @param {fs.Stats} stats result of fs_stat\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @returns {Function} closer for the watcher instance\n */\n_handleFile(file, stats, initialAdd) {\n if (this.fsw.closed) {\n return;\n }\n const dirname = sysPath.dirname(file);\n const basename = sysPath.basename(file);\n const parent = this.fsw._getWatchedDir(dirname);\n // stats is always present\n let prevStats = stats;\n\n // if the file is already being watched, do nothing\n if (parent.has(basename)) return;\n\n const listener = async (path, newStats) => {\n if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return;\n if (!newStats || newStats.mtimeMs === 0) {\n try {\n const newStats = await stat(file);\n if (this.fsw.closed) return;\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n if (isLinux && prevStats.ino !== newStats.ino) {\n this.fsw._closeFile(path)\n prevStats = newStats;\n this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener));\n } else {\n prevStats = newStats;\n }\n } catch (error) {\n // Fix issues where mtime is null but file is still present\n this.fsw._remove(dirname, basename);\n }\n // add is about to be emitted if file not already tracked in parent\n } else if (parent.has(basename)) {\n // Check that change event was not fired because of changed only accessTime.\n const at = newStats.atimeMs;\n const mt = newStats.mtimeMs;\n if (!at || at <= mt || mt !== prevStats.mtimeMs) {\n this.fsw._emit(EV_CHANGE, file, newStats);\n }\n prevStats = newStats;\n }\n }\n // kick off the watcher\n const closer = this._watchWithNodeFs(file, listener);\n\n // emit an add event if we're supposed to\n if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) {\n if (!this.fsw._throttle(EV_ADD, file, 0)) return;\n this.fsw._emit(EV_ADD, file, stats);\n }\n\n return closer;\n}\n\n/**\n * Handle symlinks encountered while reading a dir.\n * @param {Object} entry returned by readdirp\n * @param {String} directory path of dir being read\n * @param {String} path of this item\n * @param {String} item basename of this item\n * @returns {Promise<Boolean>} true if no more processing is needed for this entry.\n */\nasync _handleSymlink(entry, directory, path, item) {\n if (this.fsw.closed) {\n return;\n }\n const full = entry.fullPath;\n const dir = this.fsw._getWatchedDir(directory);\n\n if (!this.fsw.options.followSymlinks) {\n // watch symlink directly (don't follow) and detect changes\n this.fsw._incrReadyCount();\n\n let linkPath;\n try {\n linkPath = await fsrealpath(path);\n } catch (e) {\n this.fsw._emitReady();\n return true;\n }\n\n if (this.fsw.closed) return;\n if (dir.has(item)) {\n if (this.fsw._symlinkPaths.get(full) !== linkPath) {\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_CHANGE, path, entry.stats);\n }\n } else {\n dir.add(item);\n this.fsw._symlinkPaths.set(full, linkPath);\n this.fsw._emit(EV_ADD, path, entry.stats);\n }\n this.fsw._emitReady();\n return true;\n }\n\n // don't follow the same symlink more than once\n if (this.fsw._symlinkPaths.has(full)) {\n return true;\n }\n\n this.fsw._symlinkPaths.set(full, true);\n}\n\n_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) {\n // Normalize the directory name on Windows\n directory = sysPath.join(directory, EMPTY_STR);\n\n if (!wh.hasGlob) {\n throttler = this.fsw._throttle('readdir', directory, 1000);\n if (!throttler) return;\n }\n\n const previous = this.fsw._getWatchedDir(wh.path);\n const current = new Set();\n\n let stream = this.fsw._readdirp(directory, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n depth: 0\n }).on(STR_DATA, async (entry) => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const item = entry.path;\n let path = sysPath.join(directory, item);\n current.add(item);\n\n if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) {\n return;\n }\n\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n // Files that present in current directory snapshot\n // but absent in previous are added to watch list and\n // emit `add` event.\n if (item === target || !target && !previous.has(item)) {\n this.fsw._incrReadyCount();\n\n // ensure relativeness of path is preserved in case of watcher reuse\n path = sysPath.join(dir, sysPath.relative(dir, path));\n\n this._addToNodeFs(path, initialAdd, wh, depth + 1);\n }\n }).on(EV_ERROR, this._boundHandleError);\n\n return new Promise(resolve =>\n stream.once(STR_END, () => {\n if (this.fsw.closed) {\n stream = undefined;\n return;\n }\n const wasThrottled = throttler ? throttler.clear() : false;\n\n resolve();\n\n // Files that absent in current directory snapshot\n // but present in previous emit `remove` event\n // and are removed from @watched[directory].\n previous.getChildren().filter((item) => {\n return item !== directory &&\n !current.has(item) &&\n // in case of intersecting globs;\n // a path may have been filtered out of this readdir, but\n // shouldn't be removed because it matches a different glob\n (!wh.hasGlob || wh.filterPath({\n fullPath: sysPath.resolve(directory, item)\n }));\n }).forEach((item) => {\n this.fsw._remove(directory, item);\n });\n\n stream = undefined;\n\n // one more time for any missed in case changes came in extremely quickly\n if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler);\n })\n );\n}\n\n/**\n * Read directory to add / remove files from `@watched` list and re-read it on change.\n * @param {String} dir fs path\n * @param {fs.Stats} stats\n * @param {Boolean} initialAdd\n * @param {Number} depth relative to user-supplied path\n * @param {String} target child path targeted for watch\n * @param {Object} wh Common watch helpers for this path\n * @param {String} realpath\n * @returns {Promise<Function>} closer for the watcher instance.\n */\nasync _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) {\n const parentDir = this.fsw._getWatchedDir(sysPath.dirname(dir));\n const tracked = parentDir.has(sysPath.basename(dir));\n if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) {\n if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats);\n }\n\n // ensure dir is tracked (harmless if redundant)\n parentDir.add(sysPath.basename(dir));\n this.fsw._getWatchedDir(dir);\n let throttler;\n let closer;\n\n const oDepth = this.fsw.options.depth;\n if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) {\n if (!target) {\n await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler);\n if (this.fsw.closed) return;\n }\n\n closer = this._watchWithNodeFs(dir, (dirPath, stats) => {\n // if current directory is removed, do nothing\n if (stats && stats.mtimeMs === 0) return;\n\n this._handleRead(dirPath, false, wh, target, dir, depth, throttler);\n });\n }\n return closer;\n}\n\n/**\n * Handle added file, directory, or glob pattern.\n * Delegates call to _handleFile / _handleDir after checks.\n * @param {String} path to file or ir\n * @param {Boolean} initialAdd was the file added at watch instantiation?\n * @param {Object} priorWh depth relative to user-supplied path\n * @param {Number} depth Child path actually targeted for watch\n * @param {String=} target Child path actually targeted for watch\n * @returns {Promise}\n */\nasync _addToNodeFs(path, initialAdd, priorWh, depth, target) {\n const ready = this.fsw._emitReady;\n if (this.fsw._isIgnored(path) || this.fsw.closed) {\n ready();\n return false;\n }\n\n const wh = this.fsw._getWatchHelpers(path, depth);\n if (!wh.hasGlob && priorWh) {\n wh.hasGlob = priorWh.hasGlob;\n wh.globFilter = priorWh.globFilter;\n wh.filterPath = entry => priorWh.filterPath(entry);\n wh.filterDir = entry => priorWh.filterDir(entry);\n }\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n ready();\n return false;\n }\n\n const follow = this.fsw.options.followSymlinks && !path.includes(STAR) && !path.includes(BRACE_START);\n let closer;\n if (stats.isDirectory()) {\n const absPath = sysPath.resolve(path);\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath);\n if (this.fsw.closed) return;\n // preserve this symlink's target path\n if (absPath !== targetPath && targetPath !== undefined) {\n this.fsw._symlinkPaths.set(absPath, targetPath);\n }\n } else if (stats.isSymbolicLink()) {\n const targetPath = follow ? await fsrealpath(path) : path;\n if (this.fsw.closed) return;\n const parent = sysPath.dirname(wh.watchPath);\n this.fsw._getWatchedDir(parent).add(wh.watchPath);\n this.fsw._emit(EV_ADD, wh.watchPath, stats);\n closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath);\n if (this.fsw.closed) return;\n\n // preserve this symlink's target path\n if (targetPath !== undefined) {\n this.fsw._symlinkPaths.set(sysPath.resolve(path), targetPath);\n }\n } else {\n closer = this._handleFile(wh.watchPath, stats, initialAdd);\n }\n ready();\n\n this.fsw._addPathCloser(path, closer);\n return false;\n\n } catch (error) {\n if (this.fsw._handleError(error)) {\n ready();\n return path;\n }\n }\n}\n\n}\n\nmodule.exports = NodeFsHandler;\n","'use strict';\n\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\n\nlet fsevents;\ntry {\n fsevents = require('fsevents');\n} catch (error) {\n if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error);\n}\n\nif (fsevents) {\n // TODO: real check\n const mtch = process.version.match(/v(\\d+)\\.(\\d+)/);\n if (mtch && mtch[1] && mtch[2]) {\n const maj = Number.parseInt(mtch[1], 10);\n const min = Number.parseInt(mtch[2], 10);\n if (maj === 8 && min < 16) {\n fsevents = undefined;\n }\n }\n}\n\nconst {\n EV_ADD,\n EV_CHANGE,\n EV_ADD_DIR,\n EV_UNLINK,\n EV_ERROR,\n STR_DATA,\n STR_END,\n FSEVENT_CREATED,\n FSEVENT_MODIFIED,\n FSEVENT_DELETED,\n FSEVENT_MOVED,\n // FSEVENT_CLONED,\n FSEVENT_UNKNOWN,\n FSEVENT_FLAG_MUST_SCAN_SUBDIRS,\n FSEVENT_TYPE_FILE,\n FSEVENT_TYPE_DIRECTORY,\n FSEVENT_TYPE_SYMLINK,\n\n ROOT_GLOBSTAR,\n DIR_SUFFIX,\n DOT_SLASH,\n FUNCTION_TYPE,\n EMPTY_FN,\n IDENTITY_FN\n} = require('./constants');\n\nconst Depth = (value) => isNaN(value) ? {} : {depth: value};\n\nconst stat = promisify(fs.stat);\nconst lstat = promisify(fs.lstat);\nconst realpath = promisify(fs.realpath);\n\nconst statMethods = { stat, lstat };\n\n/**\n * @typedef {String} Path\n */\n\n/**\n * @typedef {Object} FsEventsWatchContainer\n * @property {Set<Function>} listeners\n * @property {Function} rawEmitter\n * @property {{stop: Function}} watcher\n */\n\n// fsevents instance helper functions\n/**\n * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances)\n * @type {Map<Path,FsEventsWatchContainer>}\n */\nconst FSEventsWatchers = new Map();\n\n// Threshold of duplicate path prefixes at which to start\n// consolidating going forward\nconst consolidateThreshhold = 10;\n\nconst wrongEventFlags = new Set([\n 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912\n]);\n\n/**\n * Instantiates the fsevents interface\n * @param {Path} path path to be watched\n * @param {Function} callback called when fsevents is bound and ready\n * @returns {{stop: Function}} new fsevents instance\n */\nconst createFSEventsInstance = (path, callback) => {\n const stop = fsevents.watch(path, callback);\n return {stop};\n};\n\n/**\n * Instantiates the fsevents interface or binds listeners to an existing one covering\n * the same file tree.\n * @param {Path} path - to be watched\n * @param {Path} realPath - real path for symlinks\n * @param {Function} listener - called when fsevents emits events\n * @param {Function} rawEmitter - passes data to listeners of the 'raw' event\n * @returns {Function} closer\n */\nfunction setFSEventsListener(path, realPath, listener, rawEmitter) {\n let watchPath = sysPath.extname(realPath) ? sysPath.dirname(realPath) : realPath;\n\n const parentPath = sysPath.dirname(watchPath);\n let cont = FSEventsWatchers.get(watchPath);\n\n // If we've accumulated a substantial number of paths that\n // could have been consolidated by watching one directory\n // above the current one, create a watcher on the parent\n // path instead, so that we do consolidate going forward.\n if (couldConsolidate(parentPath)) {\n watchPath = parentPath;\n }\n\n const resolvedPath = sysPath.resolve(path);\n const hasSymlink = resolvedPath !== realPath;\n\n const filteredListener = (fullPath, flags, info) => {\n if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath);\n if (\n fullPath === resolvedPath ||\n !fullPath.indexOf(resolvedPath + sysPath.sep)\n ) listener(fullPath, flags, info);\n };\n\n // check if there is already a watcher on a parent path\n // modifies `watchPath` to the parent path when it finds a match\n let watchedParent = false;\n for (const watchedPath of FSEventsWatchers.keys()) {\n if (realPath.indexOf(sysPath.resolve(watchedPath) + sysPath.sep) === 0) {\n watchPath = watchedPath;\n cont = FSEventsWatchers.get(watchPath);\n watchedParent = true;\n break;\n }\n }\n\n if (cont || watchedParent) {\n cont.listeners.add(filteredListener);\n } else {\n cont = {\n listeners: new Set([filteredListener]),\n rawEmitter,\n watcher: createFSEventsInstance(watchPath, (fullPath, flags) => {\n if (!cont.listeners.size) return;\n if (flags & FSEVENT_FLAG_MUST_SCAN_SUBDIRS) return;\n const info = fsevents.getInfo(fullPath, flags);\n cont.listeners.forEach(list => {\n list(fullPath, flags, info);\n });\n\n cont.rawEmitter(info.event, fullPath, info);\n })\n };\n FSEventsWatchers.set(watchPath, cont);\n }\n\n // removes this instance's listeners and closes the underlying fsevents\n // instance if there are no more listeners left\n return () => {\n const lst = cont.listeners;\n\n lst.delete(filteredListener);\n if (!lst.size) {\n FSEventsWatchers.delete(watchPath);\n if (cont.watcher) return cont.watcher.stop().then(() => {\n cont.rawEmitter = cont.watcher = undefined;\n Object.freeze(cont);\n });\n }\n };\n}\n\n// Decide whether or not we should start a new higher-level\n// parent watcher\nconst couldConsolidate = (path) => {\n let count = 0;\n for (const watchPath of FSEventsWatchers.keys()) {\n if (watchPath.indexOf(path) === 0) {\n count++;\n if (count >= consolidateThreshhold) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n// returns boolean indicating whether fsevents can be used\nconst canUse = () => fsevents && FSEventsWatchers.size < 128;\n\n// determines subdirectory traversal levels from root to path\nconst calcDepth = (path, root) => {\n let i = 0;\n while (!path.indexOf(root) && (path = sysPath.dirname(path)) !== root) i++;\n return i;\n};\n\n// returns boolean indicating whether the fsevents' event info has the same type\n// as the one returned by fs.stat\nconst sameTypes = (info, stats) => (\n info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() ||\n info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() ||\n info.type === FSEVENT_TYPE_FILE && stats.isFile()\n)\n\n/**\n * @mixin\n */\nclass FsEventsHandler {\n\n/**\n * @param {import('../index').FSWatcher} fsw\n */\nconstructor(fsw) {\n this.fsw = fsw;\n}\ncheckIgnored(path, stats) {\n const ipaths = this.fsw._ignoredPaths;\n if (this.fsw._isIgnored(path, stats)) {\n ipaths.add(path);\n if (stats && stats.isDirectory()) {\n ipaths.add(path + ROOT_GLOBSTAR);\n }\n return true;\n }\n\n ipaths.delete(path);\n ipaths.delete(path + ROOT_GLOBSTAR);\n}\n\naddOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n const event = watchedDir.has(item) ? EV_CHANGE : EV_ADD;\n this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n}\n\nasync checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n try {\n const stats = await stat(path)\n if (this.fsw.closed) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } catch (error) {\n if (error.code === 'EACCES') {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n}\n\nhandleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) {\n if (this.fsw.closed || this.checkIgnored(path)) return;\n\n if (event === EV_UNLINK) {\n const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY\n // suppress unlink events on never before seen files\n if (isDirectory || watchedDir.has(item)) {\n this.fsw._remove(parent, item, isDirectory);\n }\n } else {\n if (event === EV_ADD) {\n // track new directories\n if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path);\n\n if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) {\n // push symlinks back to the top of the stack to get handled\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(fullPath, realPath) + 1;\n return this._addToFsEvents(path, false, true, curDepth);\n }\n\n // track new paths\n // (other than symlinks being followed, which will be tracked soon)\n this.fsw._getWatchedDir(parent).add(item);\n }\n /**\n * @type {'add'|'addDir'|'unlink'|'unlinkDir'}\n */\n const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event;\n this.fsw._emit(eventName, path);\n if (eventName === EV_ADD_DIR) this._addToFsEvents(path, false, true);\n }\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} watchPath - file/dir path to be watched with fsevents\n * @param {String} realPath - real path (in case of symlinks)\n * @param {Function} transform - path transformer\n * @param {Function} globFilter - path filter in case a glob pattern was provided\n * @returns {Function} closer for the watcher instance\n*/\n_watchWithFsEvents(watchPath, realPath, transform, globFilter) {\n if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return;\n const opts = this.fsw.options;\n const watchCallback = async (fullPath, flags, info) => {\n if (this.fsw.closed) return;\n if (\n opts.depth !== undefined &&\n calcDepth(fullPath, realPath) > opts.depth\n ) return;\n const path = transform(sysPath.join(\n watchPath, sysPath.relative(watchPath, fullPath)\n ));\n if (globFilter && !globFilter(path)) return;\n // ensure directories are tracked\n const parent = sysPath.dirname(path);\n const item = sysPath.basename(path);\n const watchedDir = this.fsw._getWatchedDir(\n info.type === FSEVENT_TYPE_DIRECTORY ? path : parent\n );\n\n // correct for wrong events emitted\n if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) {\n if (typeof opts.ignored === FUNCTION_TYPE) {\n let stats;\n try {\n stats = await stat(path);\n } catch (error) {}\n if (this.fsw.closed) return;\n if (this.checkIgnored(path, stats)) return;\n if (sameTypes(info, stats)) {\n this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n } else {\n this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n } else {\n switch (info.event) {\n case FSEVENT_CREATED:\n case FSEVENT_MODIFIED:\n return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n case FSEVENT_DELETED:\n case FSEVENT_MOVED:\n return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts);\n }\n }\n };\n\n const closer = setFSEventsListener(\n watchPath,\n realPath,\n watchCallback,\n this.fsw._emitRaw\n );\n\n this.fsw._emitReady();\n return closer;\n}\n\n/**\n * Handle symlinks encountered during directory scan\n * @param {String} linkPath path to symlink\n * @param {String} fullPath absolute path to the symlink\n * @param {Function} transform pre-existing path transformer\n * @param {Number} curDepth level of subdirectories traversed to where symlink is\n * @returns {Promise<void>}\n */\nasync _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) {\n // don't follow the same symlink more than once\n if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return;\n\n this.fsw._symlinkPaths.set(fullPath, true);\n this.fsw._incrReadyCount();\n\n try {\n const linkTarget = await realpath(linkPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(linkTarget)) {\n return this.fsw._emitReady();\n }\n\n this.fsw._incrReadyCount();\n\n // add the linkTarget for watching with a wrapper for transform\n // that causes emitted paths to incorporate the link's path\n this._addToFsEvents(linkTarget || linkPath, (path) => {\n let aliasedPath = linkPath;\n if (linkTarget && linkTarget !== DOT_SLASH) {\n aliasedPath = path.replace(linkTarget, linkPath);\n } else if (path !== DOT_SLASH) {\n aliasedPath = sysPath.join(linkPath, path);\n }\n return transform(aliasedPath);\n }, false, curDepth);\n } catch(error) {\n if (this.fsw._handleError(error)) {\n return this.fsw._emitReady();\n }\n }\n}\n\n/**\n *\n * @param {Path} newPath\n * @param {fs.Stats} stats\n */\nemitAdd(newPath, stats, processPath, opts, forceAdd) {\n const pp = processPath(newPath);\n const isDir = stats.isDirectory();\n const dirObj = this.fsw._getWatchedDir(sysPath.dirname(pp));\n const base = sysPath.basename(pp);\n\n // ensure empty dirs get tracked\n if (isDir) this.fsw._getWatchedDir(pp);\n if (dirObj.has(base)) return;\n dirObj.add(base);\n\n if (!opts.ignoreInitial || forceAdd === true) {\n this.fsw._emit(isDir ? EV_ADD_DIR : EV_ADD, pp, stats);\n }\n}\n\ninitWatch(realPath, path, wh, processPath) {\n if (this.fsw.closed) return;\n const closer = this._watchWithFsEvents(\n wh.watchPath,\n sysPath.resolve(realPath || wh.watchPath),\n processPath,\n wh.globFilter\n );\n this.fsw._addPathCloser(path, closer);\n}\n\n/**\n * Handle added path with fsevents\n * @param {String} path file/dir path or glob pattern\n * @param {Function|Boolean=} transform converts working path to what the user expects\n * @param {Boolean=} forceAdd ensure add is emitted\n * @param {Number=} priorDepth Level of subdirectories already traversed.\n * @returns {Promise<void>}\n */\nasync _addToFsEvents(path, transform, forceAdd, priorDepth) {\n if (this.fsw.closed) {\n return;\n }\n const opts = this.fsw.options;\n const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN;\n\n const wh = this.fsw._getWatchHelpers(path);\n\n // evaluate what is at the path we're being asked to watch\n try {\n const stats = await statMethods[wh.statMethod](wh.watchPath);\n if (this.fsw.closed) return;\n if (this.fsw._isIgnored(wh.watchPath, stats)) {\n throw null;\n }\n if (stats.isDirectory()) {\n // emit addDir unless this is a glob parent\n if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd);\n\n // don't recurse further if it would exceed depth setting\n if (priorDepth && priorDepth > opts.depth) return;\n\n // scan the contents of the dir\n this.fsw._readdirp(wh.watchPath, {\n fileFilter: entry => wh.filterPath(entry),\n directoryFilter: entry => wh.filterDir(entry),\n ...Depth(opts.depth - (priorDepth || 0))\n }).on(STR_DATA, (entry) => {\n // need to check filterPath on dirs b/c filterDir is less restrictive\n if (this.fsw.closed) {\n return;\n }\n if (entry.stats.isDirectory() && !wh.filterPath(entry)) return;\n\n const joinedPath = sysPath.join(wh.watchPath, entry.path);\n const {fullPath} = entry;\n\n if (wh.followSymlinks && entry.stats.isSymbolicLink()) {\n // preserve the current depth here since it can't be derived from\n // real paths past the symlink\n const curDepth = opts.depth === undefined ?\n undefined : calcDepth(joinedPath, sysPath.resolve(wh.watchPath)) + 1;\n\n this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth);\n } else {\n this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd);\n }\n }).on(EV_ERROR, EMPTY_FN).on(STR_END, () => {\n this.fsw._emitReady();\n });\n } else {\n this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd);\n this.fsw._emitReady();\n }\n } catch (error) {\n if (!error || this.fsw._handleError(error)) {\n // TODO: Strange thing: \"should not choke on an ignored watch path\" will be failed without 2 ready calls -__-\n this.fsw._emitReady();\n this.fsw._emitReady();\n }\n }\n\n if (opts.persistent && forceAdd !== true) {\n if (typeof transform === FUNCTION_TYPE) {\n // realpath has already been resolved\n this.initWatch(undefined, path, wh, processPath);\n } else {\n let realPath;\n try {\n realPath = await realpath(wh.watchPath);\n } catch (e) {}\n this.initWatch(realPath, path, wh, processPath);\n }\n }\n}\n\n}\n\nmodule.exports = FsEventsHandler;\nmodule.exports.canUse = canUse;\n","'use strict';\n\nconst { EventEmitter } = require('events');\nconst fs = require('fs');\nconst sysPath = require('path');\nconst { promisify } = require('util');\nconst readdirp = require('readdirp');\nconst anymatch = require('anymatch').default;\nconst globParent = require('glob-parent');\nconst isGlob = require('is-glob');\nconst braces = require('braces');\nconst normalizePath = require('normalize-path');\n\nconst NodeFsHandler = require('./lib/nodefs-handler');\nconst FsEventsHandler = require('./lib/fsevents-handler');\nconst {\n EV_ALL,\n EV_READY,\n EV_ADD,\n EV_CHANGE,\n EV_UNLINK,\n EV_ADD_DIR,\n EV_UNLINK_DIR,\n EV_RAW,\n EV_ERROR,\n\n STR_CLOSE,\n STR_END,\n\n BACK_SLASH_RE,\n DOUBLE_SLASH_RE,\n SLASH_OR_BACK_SLASH_RE,\n DOT_RE,\n REPLACER_RE,\n\n SLASH,\n SLASH_SLASH,\n BRACE_START,\n BANG,\n ONE_DOT,\n TWO_DOTS,\n GLOBSTAR,\n SLASH_GLOBSTAR,\n ANYMATCH_OPTS,\n STRING_TYPE,\n FUNCTION_TYPE,\n EMPTY_STR,\n EMPTY_FN,\n\n isWindows,\n isMacos,\n isIBMi\n} = require('./lib/constants');\n\nconst stat = promisify(fs.stat);\nconst readdir = promisify(fs.readdir);\n\n/**\n * @typedef {String} Path\n * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName\n * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType\n */\n\n/**\n *\n * @typedef {Object} WatchHelpers\n * @property {Boolean} followSymlinks\n * @property {'stat'|'lstat'} statMethod\n * @property {Path} path\n * @property {Path} watchPath\n * @property {Function} entryPath\n * @property {Boolean} hasGlob\n * @property {Object} globFilter\n * @property {Function} filterPath\n * @property {Function} filterDir\n */\n\nconst arrify = (value = []) => Array.isArray(value) ? value : [value];\nconst flatten = (list, result = []) => {\n list.forEach(item => {\n if (Array.isArray(item)) {\n flatten(item, result);\n } else {\n result.push(item);\n }\n });\n return result;\n};\n\nconst unifyPaths = (paths_) => {\n /**\n * @type {Array<String>}\n */\n const paths = flatten(arrify(paths_));\n if (!paths.every(p => typeof p === STRING_TYPE)) {\n throw new TypeError(`Non-string provided as watch path: ${paths}`);\n }\n return paths.map(normalizePathToUnix);\n};\n\n// If SLASH_SLASH occurs at the beginning of path, it is not replaced\n// because \"//StoragePC/DrivePool/Movies\" is a valid network path\nconst toUnix = (string) => {\n let str = string.replace(BACK_SLASH_RE, SLASH);\n let prepend = false;\n if (str.startsWith(SLASH_SLASH)) {\n prepend = true;\n }\n while (str.match(DOUBLE_SLASH_RE)) {\n str = str.replace(DOUBLE_SLASH_RE, SLASH);\n }\n if (prepend) {\n str = SLASH + str;\n }\n return str;\n};\n\n// Our version of upath.normalize\n// TODO: this is not equal to path-normalize module - investigate why\nconst normalizePathToUnix = (path) => toUnix(sysPath.normalize(toUnix(path)));\n\nconst normalizeIgnored = (cwd = EMPTY_STR) => (path) => {\n if (typeof path !== STRING_TYPE) return path;\n return normalizePathToUnix(sysPath.isAbsolute(path) ? path : sysPath.join(cwd, path));\n};\n\nconst getAbsolutePath = (path, cwd) => {\n if (sysPath.isAbsolute(path)) {\n return path;\n }\n if (path.startsWith(BANG)) {\n return BANG + sysPath.join(cwd, path.slice(1));\n }\n return sysPath.join(cwd, path);\n};\n\nconst undef = (opts, key) => opts[key] === undefined;\n\n/**\n * Directory entry.\n * @property {Path} path\n * @property {Set<Path>} items\n */\nclass DirEntry {\n /**\n * @param {Path} dir\n * @param {Function} removeWatcher\n */\n constructor(dir, removeWatcher) {\n this.path = dir;\n this._removeWatcher = removeWatcher;\n /** @type {Set<Path>} */\n this.items = new Set();\n }\n\n add(item) {\n const {items} = this;\n if (!items) return;\n if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item);\n }\n\n async remove(item) {\n const {items} = this;\n if (!items) return;\n items.delete(item);\n if (items.size > 0) return;\n\n const dir = this.path;\n try {\n await readdir(dir);\n } catch (err) {\n if (this._removeWatcher) {\n this._removeWatcher(sysPath.dirname(dir), sysPath.basename(dir));\n }\n }\n }\n\n has(item) {\n const {items} = this;\n if (!items) return;\n return items.has(item);\n }\n\n /**\n * @returns {Array<String>}\n */\n getChildren() {\n const {items} = this;\n if (!items) return;\n return [...items.values()];\n }\n\n dispose() {\n this.items.clear();\n delete this.path;\n delete this._removeWatcher;\n delete this.items;\n Object.freeze(this);\n }\n}\n\nconst STAT_METHOD_F = 'stat';\nconst STAT_METHOD_L = 'lstat';\nclass WatchHelper {\n constructor(path, watchPath, follow, fsw) {\n this.fsw = fsw;\n this.path = path = path.replace(REPLACER_RE, EMPTY_STR);\n this.watchPath = watchPath;\n this.fullWatchPath = sysPath.resolve(watchPath);\n this.hasGlob = watchPath !== path;\n /** @type {object|boolean} */\n if (path === EMPTY_STR) this.hasGlob = false;\n this.globSymlink = this.hasGlob && follow ? undefined : false;\n this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false;\n this.dirParts = this.getDirParts(path);\n this.dirParts.forEach((parts) => {\n if (parts.length > 1) parts.pop();\n });\n this.followSymlinks = follow;\n this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L;\n }\n\n checkGlobSymlink(entry) {\n // only need to resolve once\n // first entry should always have entry.parentDir === EMPTY_STR\n if (this.globSymlink === undefined) {\n this.globSymlink = entry.fullParentDir === this.fullWatchPath ?\n false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath};\n }\n\n if (this.globSymlink) {\n return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath);\n }\n\n return entry.fullPath;\n }\n\n entryPath(entry) {\n return sysPath.join(this.watchPath,\n sysPath.relative(this.watchPath, this.checkGlobSymlink(entry))\n );\n }\n\n filterPath(entry) {\n const {stats} = entry;\n if (stats && stats.isSymbolicLink()) return this.filterDir(entry);\n const resolvedPath = this.entryPath(entry);\n const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE ?\n this.globFilter(resolvedPath) : true;\n return matchesGlob &&\n this.fsw._isntIgnored(resolvedPath, stats) &&\n this.fsw._hasReadPermissions(stats);\n }\n\n getDirParts(path) {\n if (!this.hasGlob) return [];\n const parts = [];\n const expandedPath = path.includes(BRACE_START) ? braces.expand(path) : [path];\n expandedPath.forEach((path) => {\n parts.push(sysPath.relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE));\n });\n return parts;\n }\n\n filterDir(entry) {\n if (this.hasGlob) {\n const entryParts = this.getDirParts(this.checkGlobSymlink(entry));\n let globstar = false;\n this.unmatchedGlob = !this.dirParts.some((parts) => {\n return parts.every((part, i) => {\n if (part === GLOBSTAR) globstar = true;\n return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS);\n });\n });\n }\n return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats);\n }\n}\n\n/**\n * Watches files & directories for changes. Emitted events:\n * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error`\n *\n * new FSWatcher()\n * .add(directories)\n * .on('add', path => log('File', path, 'was added'))\n */\nclass FSWatcher extends EventEmitter {\n// Not indenting methods for history sake; for now.\nconstructor(_opts) {\n super();\n\n const opts = {};\n if (_opts) Object.assign(opts, _opts); // for frozen objects\n\n /** @type {Map<String, DirEntry>} */\n this._watched = new Map();\n /** @type {Map<String, Array>} */\n this._closers = new Map();\n /** @type {Set<String>} */\n this._ignoredPaths = new Set();\n\n /** @type {Map<ThrottleType, Map>} */\n this._throttled = new Map();\n\n /** @type {Map<Path, String|Boolean>} */\n this._symlinkPaths = new Map();\n\n this._streams = new Set();\n this.closed = false;\n\n // Set up default options.\n if (undef(opts, 'persistent')) opts.persistent = true;\n if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false;\n if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false;\n if (undef(opts, 'interval')) opts.interval = 100;\n if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300;\n if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false;\n opts.enableBinaryInterval = opts.binaryInterval !== opts.interval;\n\n // Enable fsevents on OS X when polling isn't explicitly enabled.\n if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling;\n\n // If we can't use fsevents, ensure the options reflect it's disabled.\n const canUseFsEvents = FsEventsHandler.canUse();\n if (!canUseFsEvents) opts.useFsEvents = false;\n\n // Use polling on Mac if not using fsevents.\n // Other platforms use non-polling fs_watch.\n if (undef(opts, 'usePolling') && !opts.useFsEvents) {\n opts.usePolling = isMacos;\n }\n\n // Always default to polling on IBM i because fs.watch() is not available on IBM i.\n if(isIBMi) {\n opts.usePolling = true;\n }\n\n // Global override (useful for end-developers that need to force polling for all\n // instances of chokidar, regardless of usage/dependency depth)\n const envPoll = process.env.CHOKIDAR_USEPOLLING;\n if (envPoll !== undefined) {\n const envLower = envPoll.toLowerCase();\n\n if (envLower === 'false' || envLower === '0') {\n opts.usePolling = false;\n } else if (envLower === 'true' || envLower === '1') {\n opts.usePolling = true;\n } else {\n opts.usePolling = !!envLower;\n }\n }\n const envInterval = process.env.CHOKIDAR_INTERVAL;\n if (envInterval) {\n opts.interval = Number.parseInt(envInterval, 10);\n }\n\n // Editor atomic write normalization enabled by default with fs.watch\n if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents;\n if (opts.atomic) this._pendingUnlinks = new Map();\n\n if (undef(opts, 'followSymlinks')) opts.followSymlinks = true;\n\n if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false;\n if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {};\n const awf = opts.awaitWriteFinish;\n if (awf) {\n if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000;\n if (!awf.pollInterval) awf.pollInterval = 100;\n this._pendingWrites = new Map();\n }\n if (opts.ignored) opts.ignored = arrify(opts.ignored);\n\n let readyCalls = 0;\n this._emitReady = () => {\n readyCalls++;\n if (readyCalls >= this._readyCount) {\n this._emitReady = EMPTY_FN;\n this._readyEmitted = true;\n // use process.nextTick to allow time for listener to be bound\n process.nextTick(() => this.emit(EV_READY));\n }\n };\n this._emitRaw = (...args) => this.emit(EV_RAW, ...args);\n this._readyEmitted = false;\n this.options = opts;\n\n // Initialize with proper watcher.\n if (opts.useFsEvents) {\n this._fsEventsHandler = new FsEventsHandler(this);\n } else {\n this._nodeFsHandler = new NodeFsHandler(this);\n }\n\n // You’re frozen when your heart’s not open.\n Object.freeze(opts);\n}\n\n// Public methods\n\n/**\n * Adds paths to be watched on an existing FSWatcher instance\n * @param {Path|Array<Path>} paths_\n * @param {String=} _origAdd private; for handling non-existent paths to be watched\n * @param {Boolean=} _internal private; indicates a non-user add\n * @returns {FSWatcher} for chaining\n */\nadd(paths_, _origAdd, _internal) {\n const {cwd, disableGlobbing} = this.options;\n this.closed = false;\n let paths = unifyPaths(paths_);\n if (cwd) {\n paths = paths.map((path) => {\n const absPath = getAbsolutePath(path, cwd);\n\n // Check `path` instead of `absPath` because the cwd portion can't be a glob\n if (disableGlobbing || !isGlob(path)) {\n return absPath;\n }\n return normalizePath(absPath);\n });\n }\n\n // set aside negated glob strings\n paths = paths.filter((path) => {\n if (path.startsWith(BANG)) {\n this._ignoredPaths.add(path.slice(1));\n return false;\n }\n\n // if a path is being added that was previously ignored, stop ignoring it\n this._ignoredPaths.delete(path);\n this._ignoredPaths.delete(path + SLASH_GLOBSTAR);\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n\n return true;\n });\n\n if (this.options.useFsEvents && this._fsEventsHandler) {\n if (!this._readyCount) this._readyCount = paths.length;\n if (this.options.persistent) this._readyCount += paths.length;\n paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path));\n } else {\n if (!this._readyCount) this._readyCount = 0;\n this._readyCount += paths.length;\n Promise.all(\n paths.map(async path => {\n const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd);\n if (res) this._emitReady();\n return res;\n })\n ).then(results => {\n if (this.closed) return;\n results.filter(item => item).forEach(item => {\n this.add(sysPath.dirname(item), sysPath.basename(_origAdd || item));\n });\n });\n }\n\n return this;\n}\n\n/**\n * Close watchers or start ignoring events from specified paths.\n * @param {Path|Array<Path>} paths_ - string or array of strings, file/directory paths and/or globs\n * @returns {FSWatcher} for chaining\n*/\nunwatch(paths_) {\n if (this.closed) return this;\n const paths = unifyPaths(paths_);\n const {cwd} = this.options;\n\n paths.forEach((path) => {\n // convert to absolute path unless relative path already matches\n if (!sysPath.isAbsolute(path) && !this._closers.has(path)) {\n if (cwd) path = sysPath.join(cwd, path);\n path = sysPath.resolve(path);\n }\n\n this._closePath(path);\n\n this._ignoredPaths.add(path);\n if (this._watched.has(path)) {\n this._ignoredPaths.add(path + SLASH_GLOBSTAR);\n }\n\n // reset the cached userIgnored anymatch fn\n // to make ignoredPaths changes effective\n this._userIgnored = undefined;\n });\n\n return this;\n}\n\n/**\n * Close watchers and remove all listeners from watched paths.\n * @returns {Promise<void>}.\n*/\nclose() {\n if (this.closed) return this._closePromise;\n this.closed = true;\n\n // Memory management.\n this.removeAllListeners();\n const closers = [];\n this._closers.forEach(closerList => closerList.forEach(closer => {\n const promise = closer();\n if (promise instanceof Promise) closers.push(promise);\n }));\n this._streams.forEach(stream => stream.destroy());\n this._userIgnored = undefined;\n this._readyCount = 0;\n this._readyEmitted = false;\n this._watched.forEach(dirent => dirent.dispose());\n ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => {\n this[`_${key}`].clear();\n });\n\n this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve();\n return this._closePromise;\n}\n\n/**\n * Expose list of watched paths\n * @returns {Object} for chaining\n*/\ngetWatched() {\n const watchList = {};\n this._watched.forEach((entry, dir) => {\n const key = this.options.cwd ? sysPath.relative(this.options.cwd, dir) : dir;\n watchList[key || ONE_DOT] = entry.getChildren().sort();\n });\n return watchList;\n}\n\nemitWithAll(event, args) {\n this.emit(...args);\n if (event !== EV_ERROR) this.emit(EV_ALL, ...args);\n}\n\n// Common helpers\n// --------------\n\n/**\n * Normalize and emit events.\n * Calling _emit DOES NOT MEAN emit() would be called!\n * @param {EventName} event Type of event\n * @param {Path} path File or directory path\n * @param {*=} val1 arguments to be passed with event\n * @param {*=} val2\n * @param {*=} val3\n * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\nasync _emit(event, path, val1, val2, val3) {\n if (this.closed) return;\n\n const opts = this.options;\n if (isWindows) path = sysPath.normalize(path);\n if (opts.cwd) path = sysPath.relative(opts.cwd, path);\n /** @type Array<any> */\n const args = [event, path];\n if (val3 !== undefined) args.push(val1, val2, val3);\n else if (val2 !== undefined) args.push(val1, val2);\n else if (val1 !== undefined) args.push(val1);\n\n const awf = opts.awaitWriteFinish;\n let pw;\n if (awf && (pw = this._pendingWrites.get(path))) {\n pw.lastChange = new Date();\n return this;\n }\n\n if (opts.atomic) {\n if (event === EV_UNLINK) {\n this._pendingUnlinks.set(path, args);\n setTimeout(() => {\n this._pendingUnlinks.forEach((entry, path) => {\n this.emit(...entry);\n this.emit(EV_ALL, ...entry);\n this._pendingUnlinks.delete(path);\n });\n }, typeof opts.atomic === 'number' ? opts.atomic : 100);\n return this;\n }\n if (event === EV_ADD && this._pendingUnlinks.has(path)) {\n event = args[0] = EV_CHANGE;\n this._pendingUnlinks.delete(path);\n }\n }\n\n if (awf && (event === EV_ADD || event === EV_CHANGE) && this._readyEmitted) {\n const awfEmit = (err, stats) => {\n if (err) {\n event = args[0] = EV_ERROR;\n args[1] = err;\n this.emitWithAll(event, args);\n } else if (stats) {\n // if stats doesn't exist the file must have been deleted\n if (args.length > 2) {\n args[2] = stats;\n } else {\n args.push(stats);\n }\n this.emitWithAll(event, args);\n }\n };\n\n this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit);\n return this;\n }\n\n if (event === EV_CHANGE) {\n const isThrottled = !this._throttle(EV_CHANGE, path, 50);\n if (isThrottled) return this;\n }\n\n if (opts.alwaysStat && val1 === undefined &&\n (event === EV_ADD || event === EV_ADD_DIR || event === EV_CHANGE)\n ) {\n const fullPath = opts.cwd ? sysPath.join(opts.cwd, path) : path;\n let stats;\n try {\n stats = await stat(fullPath);\n } catch (err) {}\n // Suppress event when fs_stat fails, to avoid sending undefined 'stat'\n if (!stats || this.closed) return;\n args.push(stats);\n }\n this.emitWithAll(event, args);\n\n return this;\n}\n\n/**\n * Common handler for errors\n * @param {Error} error\n * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag\n */\n_handleError(error) {\n const code = error && error.code;\n if (error && code !== 'ENOENT' && code !== 'ENOTDIR' &&\n (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES'))\n ) {\n this.emit(EV_ERROR, error);\n }\n return error || this.closed;\n}\n\n/**\n * Helper utility for throttling\n * @param {ThrottleType} actionType type being throttled\n * @param {Path} path being acted upon\n * @param {Number} timeout duration of time to suppress duplicate actions\n * @returns {Object|false} tracking object or false if action should be suppressed\n */\n_throttle(actionType, path, timeout) {\n if (!this._throttled.has(actionType)) {\n this._throttled.set(actionType, new Map());\n }\n\n /** @type {Map<Path, Object>} */\n const action = this._throttled.get(actionType);\n /** @type {Object} */\n const actionPath = action.get(path);\n\n if (actionPath) {\n actionPath.count++;\n return false;\n }\n\n let timeoutObject;\n const clear = () => {\n const item = action.get(path);\n const count = item ? item.count : 0;\n action.delete(path);\n clearTimeout(timeoutObject);\n if (item) clearTimeout(item.timeoutObject);\n return count;\n };\n timeoutObject = setTimeout(clear, timeout);\n const thr = {timeoutObject, clear, count: 0};\n action.set(path, thr);\n return thr;\n}\n\n_incrReadyCount() {\n return this._readyCount++;\n}\n\n/**\n * Awaits write operation to finish.\n * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback.\n * @param {Path} path being acted upon\n * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished\n * @param {EventName} event\n * @param {Function} awfEmit Callback to be called when ready for event to be emitted.\n */\n_awaitWriteFinish(path, threshold, event, awfEmit) {\n let timeoutHandler;\n\n let fullPath = path;\n if (this.options.cwd && !sysPath.isAbsolute(path)) {\n fullPath = sysPath.join(this.options.cwd, path);\n }\n\n const now = new Date();\n\n const awaitWriteFinish = (prevStat) => {\n fs.stat(fullPath, (err, curStat) => {\n if (err || !this._pendingWrites.has(path)) {\n if (err && err.code !== 'ENOENT') awfEmit(err);\n return;\n }\n\n const now = Number(new Date());\n\n if (prevStat && curStat.size !== prevStat.size) {\n this._pendingWrites.get(path).lastChange = now;\n }\n const pw = this._pendingWrites.get(path);\n const df = now - pw.lastChange;\n\n if (df >= threshold) {\n this._pendingWrites.delete(path);\n awfEmit(undefined, curStat);\n } else {\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval,\n curStat\n );\n }\n });\n };\n\n if (!this._pendingWrites.has(path)) {\n this._pendingWrites.set(path, {\n lastChange: now,\n cancelWait: () => {\n this._pendingWrites.delete(path);\n clearTimeout(timeoutHandler);\n return event;\n }\n });\n timeoutHandler = setTimeout(\n awaitWriteFinish,\n this.options.awaitWriteFinish.pollInterval\n );\n }\n}\n\n_getGlobIgnored() {\n return [...this._ignoredPaths.values()];\n}\n\n/**\n * Determines whether user has asked to ignore this path.\n * @param {Path} path filepath or dir\n * @param {fs.Stats=} stats result of fs.stat\n * @returns {Boolean}\n */\n_isIgnored(path, stats) {\n if (this.options.atomic && DOT_RE.test(path)) return true;\n if (!this._userIgnored) {\n const {cwd} = this.options;\n const ign = this.options.ignored;\n\n const ignored = ign && ign.map(normalizeIgnored(cwd));\n const paths = arrify(ignored)\n .filter((path) => typeof path === STRING_TYPE && !isGlob(path))\n .map((path) => path + SLASH_GLOBSTAR);\n const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths);\n this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS);\n }\n\n return this._userIgnored([path, stats]);\n}\n\n_isntIgnored(path, stat) {\n return !this._isIgnored(path, stat);\n}\n\n/**\n * Provides a set of common helpers and properties relating to symlink and glob handling.\n * @param {Path} path file, directory, or glob pattern being watched\n * @param {Number=} depth at any depth > 0, this isn't a glob\n * @returns {WatchHelper} object containing helpers for this path\n */\n_getWatchHelpers(path, depth) {\n const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path);\n const follow = this.options.followSymlinks;\n\n return new WatchHelper(path, watchPath, follow, this);\n}\n\n// Directory helpers\n// -----------------\n\n/**\n * Provides directory tracking objects\n * @param {String} directory path of the directory\n * @returns {DirEntry} the directory's tracking object\n */\n_getWatchedDir(directory) {\n if (!this._boundRemove) this._boundRemove = this._remove.bind(this);\n const dir = sysPath.resolve(directory);\n if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove));\n return this._watched.get(dir);\n}\n\n// File helpers\n// ------------\n\n/**\n * Check for read permissions.\n * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405\n * @param {fs.Stats} stats - object, result of fs_stat\n * @returns {Boolean} indicates whether the file can be read\n*/\n_hasReadPermissions(stats) {\n if (this.options.ignorePermissionErrors) return true;\n\n // stats.mode may be bigint\n const md = stats && Number.parseInt(stats.mode, 10);\n const st = md & 0o777;\n const it = Number.parseInt(st.toString(8)[0], 10);\n return Boolean(4 & it);\n}\n\n/**\n * Handles emitting unlink events for\n * files and directories, and via recursion, for\n * files and directories within directories that are unlinked\n * @param {String} directory within which the following item is located\n * @param {String} item base path of item/directory\n * @returns {void}\n*/\n_remove(directory, item, isDirectory) {\n // if what is being deleted is a directory, get that directory's paths\n // for recursive deleting and cleaning of watched object\n // if it is not a directory, nestedDirectoryChildren will be empty array\n const path = sysPath.join(directory, item);\n const fullPath = sysPath.resolve(path);\n isDirectory = isDirectory != null\n ? isDirectory\n : this._watched.has(path) || this._watched.has(fullPath);\n\n // prevent duplicate handling in case of arriving here nearly simultaneously\n // via multiple paths (such as _handleFile and _handleDir)\n if (!this._throttle('remove', path, 100)) return;\n\n // if the only watched file is removed, watch for its return\n if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) {\n this.add(directory, item, true);\n }\n\n // This will create a new entry in the watched object in either case\n // so we got to do the directory check beforehand\n const wp = this._getWatchedDir(path);\n const nestedDirectoryChildren = wp.getChildren();\n\n // Recursively remove children directories / files.\n nestedDirectoryChildren.forEach(nested => this._remove(path, nested));\n\n // Check if item was on the watched list and remove it\n const parent = this._getWatchedDir(directory);\n const wasTracked = parent.has(item);\n parent.remove(item);\n\n // Fixes issue #1042 -> Relative paths were detected and added as symlinks\n // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612),\n // but never removed from the map in case the path was deleted.\n // This leads to an incorrect state if the path was recreated:\n // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553\n if (this._symlinkPaths.has(fullPath)) {\n this._symlinkPaths.delete(fullPath);\n }\n\n // If we wait for this file to be fully written, cancel the wait.\n let relPath = path;\n if (this.options.cwd) relPath = sysPath.relative(this.options.cwd, path);\n if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) {\n const event = this._pendingWrites.get(relPath).cancelWait();\n if (event === EV_ADD) return;\n }\n\n // The Entry will either be a directory that just got removed\n // or a bogus entry to a file, in either case we have to remove it\n this._watched.delete(path);\n this._watched.delete(fullPath);\n const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK;\n if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path);\n\n // Avoid conflicts if we later create another file with the same name\n if (!this.options.useFsEvents) {\n this._closePath(path);\n }\n}\n\n/**\n * Closes all watchers for a path\n * @param {Path} path\n */\n_closePath(path) {\n this._closeFile(path)\n const dir = sysPath.dirname(path);\n this._getWatchedDir(dir).remove(sysPath.basename(path));\n}\n\n/**\n * Closes only file-specific watchers\n * @param {Path} path\n */\n_closeFile(path) {\n const closers = this._closers.get(path);\n if (!closers) return;\n closers.forEach(closer => closer());\n this._closers.delete(path);\n}\n\n/**\n *\n * @param {Path} path\n * @param {Function} closer\n */\n_addPathCloser(path, closer) {\n if (!closer) return;\n let list = this._closers.get(path);\n if (!list) {\n list = [];\n this._closers.set(path, list);\n }\n list.push(closer);\n}\n\n_readdirp(root, opts) {\n if (this.closed) return;\n const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts};\n let stream = readdirp(root, options);\n this._streams.add(stream);\n stream.once(STR_CLOSE, () => {\n stream = undefined;\n });\n stream.once(STR_END, () => {\n if (stream) {\n this._streams.delete(stream);\n stream = undefined;\n }\n });\n return stream;\n}\n\n}\n\n// Export FSWatcher class\nexports.FSWatcher = FSWatcher;\n\n/**\n * Instantiates watcher with paths to be tracked.\n * @param {String|Array<String>} paths file/directory paths and/or globs\n * @param {Object=} options chokidar opts\n * @returns an instance of FSWatcher for chaining.\n */\nconst watch = (paths, options) => {\n const watcher = new FSWatcher(options);\n watcher.add(paths);\n return watcher;\n};\n\nexports.watch = watch;\n","/* eslint-disable no-console */\n\n'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar fs = require('fs');\nvar path = require('path');\nvar Loader = require('./loader');\nvar _require = require('./precompiled-loader.js'),\n PrecompiledLoader = _require.PrecompiledLoader;\nvar chokidar;\nvar FileSystemLoader = /*#__PURE__*/function (_Loader) {\n _inheritsLoose(FileSystemLoader, _Loader);\n function FileSystemLoader(searchPaths, opts) {\n var _this;\n _this = _Loader.call(this) || this;\n if (typeof opts === 'boolean') {\n console.log('[nunjucks] Warning: you passed a boolean as the second ' + 'argument to FileSystemLoader, but it now takes an options ' + 'object. See http://mozilla.github.io/nunjucks/api.html#filesystemloader');\n }\n opts = opts || {};\n _this.pathsToNames = {};\n _this.noCache = !!opts.noCache;\n if (searchPaths) {\n searchPaths = Array.isArray(searchPaths) ? searchPaths : [searchPaths];\n // For windows, convert to forward slashes\n _this.searchPaths = searchPaths.map(path.normalize);\n } else {\n _this.searchPaths = ['.'];\n }\n if (opts.watch) {\n // Watch all the templates in the paths and fire an event when\n // they change\n try {\n chokidar = require('chokidar'); // eslint-disable-line global-require\n } catch (e) {\n throw new Error('watch requires chokidar to be installed');\n }\n var paths = _this.searchPaths.filter(fs.existsSync);\n var watcher = chokidar.watch(paths);\n watcher.on('all', function (event, fullname) {\n fullname = path.resolve(fullname);\n if (event === 'change' && fullname in _this.pathsToNames) {\n _this.emit('update', _this.pathsToNames[fullname], fullname);\n }\n });\n watcher.on('error', function (error) {\n console.log('Watcher error: ' + error);\n });\n }\n return _this;\n }\n var _proto = FileSystemLoader.prototype;\n _proto.getSource = function getSource(name) {\n var fullpath = null;\n var paths = this.searchPaths;\n for (var i = 0; i < paths.length; i++) {\n var basePath = path.resolve(paths[i]);\n var p = path.resolve(paths[i], name);\n\n // Only allow the current directory and anything\n // underneath it to be searched\n if (p.indexOf(basePath) === 0 && fs.existsSync(p)) {\n fullpath = p;\n break;\n }\n }\n if (!fullpath) {\n return null;\n }\n this.pathsToNames[fullpath] = name;\n var source = {\n src: fs.readFileSync(fullpath, 'utf-8'),\n path: fullpath,\n noCache: this.noCache\n };\n this.emit('load', name, source);\n return source;\n };\n return FileSystemLoader;\n}(Loader);\nvar NodeResolveLoader = /*#__PURE__*/function (_Loader2) {\n _inheritsLoose(NodeResolveLoader, _Loader2);\n function NodeResolveLoader(opts) {\n var _this2;\n _this2 = _Loader2.call(this) || this;\n opts = opts || {};\n _this2.pathsToNames = {};\n _this2.noCache = !!opts.noCache;\n if (opts.watch) {\n try {\n chokidar = require('chokidar'); // eslint-disable-line global-require\n } catch (e) {\n throw new Error('watch requires chokidar to be installed');\n }\n _this2.watcher = chokidar.watch();\n _this2.watcher.on('change', function (fullname) {\n _this2.emit('update', _this2.pathsToNames[fullname], fullname);\n });\n _this2.watcher.on('error', function (error) {\n console.log('Watcher error: ' + error);\n });\n _this2.on('load', function (name, source) {\n _this2.watcher.add(source.path);\n });\n }\n return _this2;\n }\n var _proto2 = NodeResolveLoader.prototype;\n _proto2.getSource = function getSource(name) {\n // Don't allow file-system traversal\n if (/^\\.?\\.?(\\/|\\\\)/.test(name)) {\n return null;\n }\n if (/^[A-Z]:/.test(name)) {\n return null;\n }\n var fullpath;\n try {\n fullpath = require.resolve(name);\n } catch (e) {\n return null;\n }\n this.pathsToNames[fullpath] = name;\n var source = {\n src: fs.readFileSync(fullpath, 'utf-8'),\n path: fullpath,\n noCache: this.noCache\n };\n this.emit('load', name, source);\n return source;\n };\n return NodeResolveLoader;\n}(Loader);\nmodule.exports = {\n FileSystemLoader: FileSystemLoader,\n PrecompiledLoader: PrecompiledLoader,\n NodeResolveLoader: NodeResolveLoader\n};","\"use strict\";\n\n// This file will automatically be rewired to web-loader.js when\n// building for the browser\nmodule.exports = require('./node-loaders');","'use strict';\n\nvar SafeString = require('./runtime').SafeString;\n\n/**\n * Returns `true` if the object is a function, otherwise `false`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction callable(value) {\n return typeof value === 'function';\n}\nexports.callable = callable;\n\n/**\n * Returns `true` if the object is strictly not `undefined`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction defined(value) {\n return value !== undefined;\n}\nexports.defined = defined;\n\n/**\n * Returns `true` if the operand (one) is divisble by the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction divisibleby(one, two) {\n return one % two === 0;\n}\nexports.divisibleby = divisibleby;\n\n/**\n * Returns true if the string has been escaped (i.e., is a SafeString).\n * @param { any } value\n * @returns { boolean }\n */\nfunction escaped(value) {\n return value instanceof SafeString;\n}\nexports.escaped = escaped;\n\n/**\n * Returns `true` if the arguments are strictly equal.\n * @param { any } one\n * @param { any } two\n */\nfunction equalto(one, two) {\n return one === two;\n}\nexports.equalto = equalto;\n\n// Aliases\nexports.eq = exports.equalto;\nexports.sameas = exports.equalto;\n\n/**\n * Returns `true` if the value is evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction even(value) {\n return value % 2 === 0;\n}\nexports.even = even;\n\n/**\n * Returns `true` if the value is falsy - if I recall correctly, '', 0, false,\n * undefined, NaN or null. I don't know if we should stick to the default JS\n * behavior or attempt to replicate what Python believes should be falsy (i.e.,\n * empty arrays, empty dicts, not 0...).\n * @param { any } value\n * @returns { boolean }\n */\nfunction falsy(value) {\n return !value;\n}\nexports.falsy = falsy;\n\n/**\n * Returns `true` if the operand (one) is greater or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ge(one, two) {\n return one >= two;\n}\nexports.ge = ge;\n\n/**\n * Returns `true` if the operand (one) is greater than the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction greaterthan(one, two) {\n return one > two;\n}\nexports.greaterthan = greaterthan;\n\n// alias\nexports.gt = exports.greaterthan;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction le(one, two) {\n return one <= two;\n}\nexports.le = le;\n\n/**\n * Returns `true` if the operand (one) is less than the test's passed argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction lessthan(one, two) {\n return one < two;\n}\nexports.lessthan = lessthan;\n\n// alias\nexports.lt = exports.lessthan;\n\n/**\n * Returns `true` if the string is lowercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction lower(value) {\n return value.toLowerCase() === value;\n}\nexports.lower = lower;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ne(one, two) {\n return one !== two;\n}\nexports.ne = ne;\n\n/**\n * Returns true if the value is strictly equal to `null`.\n * @param { any }\n * @returns { boolean }\n */\nfunction nullTest(value) {\n return value === null;\n}\nexports.null = nullTest;\n\n/**\n * Returns true if value is a number.\n * @param { any }\n * @returns { boolean }\n */\nfunction number(value) {\n return typeof value === 'number';\n}\nexports.number = number;\n\n/**\n * Returns `true` if the value is *not* evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction odd(value) {\n return value % 2 === 1;\n}\nexports.odd = odd;\n\n/**\n * Returns `true` if the value is a string, `false` if not.\n * @param { any } value\n * @returns { boolean }\n */\nfunction string(value) {\n return typeof value === 'string';\n}\nexports.string = string;\n\n/**\n * Returns `true` if the value is not in the list of things considered falsy:\n * '', null, undefined, 0, NaN and false.\n * @param { any } value\n * @returns { boolean }\n */\nfunction truthy(value) {\n return !!value;\n}\nexports.truthy = truthy;\n\n/**\n * Returns `true` if the value is undefined.\n * @param { any } value\n * @returns { boolean }\n */\nfunction undefinedTest(value) {\n return value === undefined;\n}\nexports.undefined = undefinedTest;\n\n/**\n * Returns `true` if the string is uppercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction upper(value) {\n return value.toUpperCase() === value;\n}\nexports.upper = upper;\n\n/**\n * If ES6 features are available, returns `true` if the value implements the\n * `Symbol.iterator` method. If not, it's a string or Array.\n *\n * Could potentially cause issues if a browser exists that has Set and Map but\n * not Symbol.\n *\n * @param { any } value\n * @returns { boolean }\n */\nfunction iterable(value) {\n if (typeof Symbol !== 'undefined') {\n return !!value[Symbol.iterator];\n } else {\n return Array.isArray(value) || typeof value === 'string';\n }\n}\nexports.iterable = iterable;\n\n/**\n * If ES6 features are available, returns `true` if the value is an object hash\n * or an ES6 Map. Otherwise just return if it's an object hash.\n * @param { any } value\n * @returns { boolean }\n */\nfunction mapping(value) {\n // only maps and object hashes\n var bool = value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value);\n if (Set) {\n return bool && !(value instanceof Set);\n } else {\n return bool;\n }\n}\nexports.mapping = mapping;","'use strict';\n\nfunction _cycler(items) {\n var index = -1;\n return {\n current: null,\n reset: function reset() {\n index = -1;\n this.current = null;\n },\n next: function next() {\n index++;\n if (index >= items.length) {\n index = 0;\n }\n this.current = items[index];\n return this.current;\n }\n };\n}\nfunction _joiner(sep) {\n sep = sep || ',';\n var first = true;\n return function () {\n var val = first ? '' : sep;\n first = false;\n return val;\n };\n}\n\n// Making this a function instead so it returns a new object\n// each time it's called. That way, if something like an environment\n// uses it, they will each have their own copy.\nfunction globals() {\n return {\n range: function range(start, stop, step) {\n if (typeof stop === 'undefined') {\n stop = start;\n start = 0;\n step = 1;\n } else if (!step) {\n step = 1;\n }\n var arr = [];\n if (step > 0) {\n for (var i = start; i < stop; i += step) {\n arr.push(i);\n }\n } else {\n for (var _i = start; _i > stop; _i += step) {\n // eslint-disable-line for-direction\n arr.push(_i);\n }\n }\n return arr;\n },\n cycler: function cycler() {\n return _cycler(Array.prototype.slice.call(arguments));\n },\n joiner: function joiner(sep) {\n return _joiner(sep);\n }\n };\n}\nmodule.exports = globals;","\"use strict\";\n\nvar path = require('path');\nmodule.exports = function express(env, app) {\n function NunjucksView(name, opts) {\n this.name = name;\n this.path = name;\n this.defaultEngine = opts.defaultEngine;\n this.ext = path.extname(name);\n if (!this.ext && !this.defaultEngine) {\n throw new Error('No default engine was specified and no extension was provided.');\n }\n if (!this.ext) {\n this.name += this.ext = (this.defaultEngine[0] !== '.' ? '.' : '') + this.defaultEngine;\n }\n }\n NunjucksView.prototype.render = function render(opts, cb) {\n env.render(this.name, opts, cb);\n };\n app.set('view', NunjucksView);\n app.set('nunjucksEnv', env);\n return env;\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nvar asap = require('asap');\nvar _waterfall = require('a-sync-waterfall');\nvar lib = require('./lib');\nvar compiler = require('./compiler');\nvar filters = require('./filters');\nvar _require = require('./loaders'),\n FileSystemLoader = _require.FileSystemLoader,\n WebLoader = _require.WebLoader,\n PrecompiledLoader = _require.PrecompiledLoader;\nvar tests = require('./tests');\nvar globals = require('./globals');\nvar _require2 = require('./object'),\n Obj = _require2.Obj,\n EmitterObj = _require2.EmitterObj;\nvar globalRuntime = require('./runtime');\nvar handleError = globalRuntime.handleError,\n Frame = globalRuntime.Frame;\nvar expressApp = require('./express-app');\n\n// If the user is using the async API, *always* call it\n// asynchronously even if the template was synchronous.\nfunction callbackAsap(cb, err, res) {\n asap(function () {\n cb(err, res);\n });\n}\n\n/**\n * A no-op template, for use with {% include ignore missing %}\n */\nvar noopTmplSrc = {\n type: 'code',\n obj: {\n root: function root(env, context, frame, runtime, cb) {\n try {\n cb(null, '');\n } catch (e) {\n cb(handleError(e, null, null));\n }\n }\n }\n};\nvar Environment = /*#__PURE__*/function (_EmitterObj) {\n _inheritsLoose(Environment, _EmitterObj);\n function Environment() {\n return _EmitterObj.apply(this, arguments) || this;\n }\n var _proto = Environment.prototype;\n _proto.init = function init(loaders, opts) {\n var _this = this;\n // The dev flag determines the trace that'll be shown on errors.\n // If set to true, returns the full trace from the error point,\n // otherwise will return trace starting from Template.render\n // (the full trace from within nunjucks may confuse developers using\n // the library)\n // defaults to false\n opts = this.opts = opts || {};\n this.opts.dev = !!opts.dev;\n\n // The autoescape flag sets global autoescaping. If true,\n // every string variable will be escaped by default.\n // If false, strings can be manually escaped using the `escape` filter.\n // defaults to true\n this.opts.autoescape = opts.autoescape != null ? opts.autoescape : true;\n\n // If true, this will make the system throw errors if trying\n // to output a null or undefined value\n this.opts.throwOnUndefined = !!opts.throwOnUndefined;\n this.opts.trimBlocks = !!opts.trimBlocks;\n this.opts.lstripBlocks = !!opts.lstripBlocks;\n this.loaders = [];\n if (!loaders) {\n // The filesystem loader is only available server-side\n if (FileSystemLoader) {\n this.loaders = [new FileSystemLoader('views')];\n } else if (WebLoader) {\n this.loaders = [new WebLoader('/views')];\n }\n } else {\n this.loaders = lib.isArray(loaders) ? loaders : [loaders];\n }\n\n // It's easy to use precompiled templates: just include them\n // before you configure nunjucks and this will automatically\n // pick it up and use it\n if (typeof window !== 'undefined' && window.nunjucksPrecompiled) {\n this.loaders.unshift(new PrecompiledLoader(window.nunjucksPrecompiled));\n }\n this._initLoaders();\n this.globals = globals();\n this.filters = {};\n this.tests = {};\n this.asyncFilters = [];\n this.extensions = {};\n this.extensionsList = [];\n lib._entries(filters).forEach(function (_ref) {\n var name = _ref[0],\n filter = _ref[1];\n return _this.addFilter(name, filter);\n });\n lib._entries(tests).forEach(function (_ref2) {\n var name = _ref2[0],\n test = _ref2[1];\n return _this.addTest(name, test);\n });\n };\n _proto._initLoaders = function _initLoaders() {\n var _this2 = this;\n this.loaders.forEach(function (loader) {\n // Caching and cache busting\n loader.cache = {};\n if (typeof loader.on === 'function') {\n loader.on('update', function (name, fullname) {\n loader.cache[name] = null;\n _this2.emit('update', name, fullname, loader);\n });\n loader.on('load', function (name, source) {\n _this2.emit('load', name, source, loader);\n });\n }\n });\n };\n _proto.invalidateCache = function invalidateCache() {\n this.loaders.forEach(function (loader) {\n loader.cache = {};\n });\n };\n _proto.addExtension = function addExtension(name, extension) {\n extension.__name = name;\n this.extensions[name] = extension;\n this.extensionsList.push(extension);\n return this;\n };\n _proto.removeExtension = function removeExtension(name) {\n var extension = this.getExtension(name);\n if (!extension) {\n return;\n }\n this.extensionsList = lib.without(this.extensionsList, extension);\n delete this.extensions[name];\n };\n _proto.getExtension = function getExtension(name) {\n return this.extensions[name];\n };\n _proto.hasExtension = function hasExtension(name) {\n return !!this.extensions[name];\n };\n _proto.addGlobal = function addGlobal(name, value) {\n this.globals[name] = value;\n return this;\n };\n _proto.getGlobal = function getGlobal(name) {\n if (typeof this.globals[name] === 'undefined') {\n throw new Error('global not found: ' + name);\n }\n return this.globals[name];\n };\n _proto.addFilter = function addFilter(name, func, async) {\n var wrapped = func;\n if (async) {\n this.asyncFilters.push(name);\n }\n this.filters[name] = wrapped;\n return this;\n };\n _proto.getFilter = function getFilter(name) {\n if (!this.filters[name]) {\n throw new Error('filter not found: ' + name);\n }\n return this.filters[name];\n };\n _proto.addTest = function addTest(name, func) {\n this.tests[name] = func;\n return this;\n };\n _proto.getTest = function getTest(name) {\n if (!this.tests[name]) {\n throw new Error('test not found: ' + name);\n }\n return this.tests[name];\n };\n _proto.resolveTemplate = function resolveTemplate(loader, parentName, filename) {\n var isRelative = loader.isRelative && parentName ? loader.isRelative(filename) : false;\n return isRelative && loader.resolve ? loader.resolve(parentName, filename) : filename;\n };\n _proto.getTemplate = function getTemplate(name, eagerCompile, parentName, ignoreMissing, cb) {\n var _this3 = this;\n var that = this;\n var tmpl = null;\n if (name && name.raw) {\n // this fixes autoescape for templates referenced in symbols\n name = name.raw;\n }\n if (lib.isFunction(parentName)) {\n cb = parentName;\n parentName = null;\n eagerCompile = eagerCompile || false;\n }\n if (lib.isFunction(eagerCompile)) {\n cb = eagerCompile;\n eagerCompile = false;\n }\n if (name instanceof Template) {\n tmpl = name;\n } else if (typeof name !== 'string') {\n throw new Error('template names must be a string: ' + name);\n } else {\n for (var i = 0; i < this.loaders.length; i++) {\n var loader = this.loaders[i];\n tmpl = loader.cache[this.resolveTemplate(loader, parentName, name)];\n if (tmpl) {\n break;\n }\n }\n }\n if (tmpl) {\n if (eagerCompile) {\n tmpl.compile();\n }\n if (cb) {\n cb(null, tmpl);\n return undefined;\n } else {\n return tmpl;\n }\n }\n var syncResult;\n var createTemplate = function createTemplate(err, info) {\n if (!info && !err && !ignoreMissing) {\n err = new Error('template not found: ' + name);\n }\n if (err) {\n if (cb) {\n cb(err);\n return;\n } else {\n throw err;\n }\n }\n var newTmpl;\n if (!info) {\n newTmpl = new Template(noopTmplSrc, _this3, '', eagerCompile);\n } else {\n newTmpl = new Template(info.src, _this3, info.path, eagerCompile);\n if (!info.noCache) {\n info.loader.cache[name] = newTmpl;\n }\n }\n if (cb) {\n cb(null, newTmpl);\n } else {\n syncResult = newTmpl;\n }\n };\n lib.asyncIter(this.loaders, function (loader, i, next, done) {\n function handle(err, src) {\n if (err) {\n done(err);\n } else if (src) {\n src.loader = loader;\n done(null, src);\n } else {\n next();\n }\n }\n\n // Resolve name relative to parentName\n name = that.resolveTemplate(loader, parentName, name);\n if (loader.async) {\n loader.getSource(name, handle);\n } else {\n handle(null, loader.getSource(name));\n }\n }, createTemplate);\n return syncResult;\n };\n _proto.express = function express(app) {\n return expressApp(this, app);\n };\n _proto.render = function render(name, ctx, cb) {\n if (lib.isFunction(ctx)) {\n cb = ctx;\n ctx = null;\n }\n\n // We support a synchronous API to make it easier to migrate\n // existing code to async. This works because if you don't do\n // anything async work, the whole thing is actually run\n // synchronously.\n var syncResult = null;\n this.getTemplate(name, function (err, tmpl) {\n if (err && cb) {\n callbackAsap(cb, err);\n } else if (err) {\n throw err;\n } else {\n syncResult = tmpl.render(ctx, cb);\n }\n });\n return syncResult;\n };\n _proto.renderString = function renderString(src, ctx, opts, cb) {\n if (lib.isFunction(opts)) {\n cb = opts;\n opts = {};\n }\n opts = opts || {};\n var tmpl = new Template(src, this, opts.path);\n return tmpl.render(ctx, cb);\n };\n _proto.waterfall = function waterfall(tasks, callback, forceAsync) {\n return _waterfall(tasks, callback, forceAsync);\n };\n return Environment;\n}(EmitterObj);\nvar Context = /*#__PURE__*/function (_Obj) {\n _inheritsLoose(Context, _Obj);\n function Context() {\n return _Obj.apply(this, arguments) || this;\n }\n var _proto2 = Context.prototype;\n _proto2.init = function init(ctx, blocks, env) {\n var _this4 = this;\n // Has to be tied to an environment so we can tap into its globals.\n this.env = env || new Environment();\n\n // Make a duplicate of ctx\n this.ctx = lib.extend({}, ctx);\n this.blocks = {};\n this.exported = [];\n lib.keys(blocks).forEach(function (name) {\n _this4.addBlock(name, blocks[name]);\n });\n };\n _proto2.lookup = function lookup(name) {\n // This is one of the most called functions, so optimize for\n // the typical case where the name isn't in the globals\n if (name in this.env.globals && !(name in this.ctx)) {\n return this.env.globals[name];\n } else {\n return this.ctx[name];\n }\n };\n _proto2.setVariable = function setVariable(name, val) {\n this.ctx[name] = val;\n };\n _proto2.getVariables = function getVariables() {\n return this.ctx;\n };\n _proto2.addBlock = function addBlock(name, block) {\n this.blocks[name] = this.blocks[name] || [];\n this.blocks[name].push(block);\n return this;\n };\n _proto2.getBlock = function getBlock(name) {\n if (!this.blocks[name]) {\n throw new Error('unknown block \"' + name + '\"');\n }\n return this.blocks[name][0];\n };\n _proto2.getSuper = function getSuper(env, name, block, frame, runtime, cb) {\n var idx = lib.indexOf(this.blocks[name] || [], block);\n var blk = this.blocks[name][idx + 1];\n var context = this;\n if (idx === -1 || !blk) {\n throw new Error('no super block available for \"' + name + '\"');\n }\n blk(env, context, frame, runtime, cb);\n };\n _proto2.addExport = function addExport(name) {\n this.exported.push(name);\n };\n _proto2.getExported = function getExported() {\n var _this5 = this;\n var exported = {};\n this.exported.forEach(function (name) {\n exported[name] = _this5.ctx[name];\n });\n return exported;\n };\n return Context;\n}(Obj);\nvar Template = /*#__PURE__*/function (_Obj2) {\n _inheritsLoose(Template, _Obj2);\n function Template() {\n return _Obj2.apply(this, arguments) || this;\n }\n var _proto3 = Template.prototype;\n _proto3.init = function init(src, env, path, eagerCompile) {\n this.env = env || new Environment();\n if (lib.isObject(src)) {\n switch (src.type) {\n case 'code':\n this.tmplProps = src.obj;\n break;\n case 'string':\n this.tmplStr = src.obj;\n break;\n default:\n throw new Error(\"Unexpected template object type \" + src.type + \"; expected 'code', or 'string'\");\n }\n } else if (lib.isString(src)) {\n this.tmplStr = src;\n } else {\n throw new Error('src must be a string or an object describing the source');\n }\n this.path = path;\n if (eagerCompile) {\n try {\n this._compile();\n } catch (err) {\n throw lib._prettifyError(this.path, this.env.opts.dev, err);\n }\n } else {\n this.compiled = false;\n }\n };\n _proto3.render = function render(ctx, parentFrame, cb) {\n var _this6 = this;\n if (typeof ctx === 'function') {\n cb = ctx;\n ctx = {};\n } else if (typeof parentFrame === 'function') {\n cb = parentFrame;\n parentFrame = null;\n }\n\n // If there is a parent frame, we are being called from internal\n // code of another template, and the internal system\n // depends on the sync/async nature of the parent template\n // to be inherited, so force an async callback\n var forceAsync = !parentFrame;\n\n // Catch compile errors for async rendering\n try {\n this.compile();\n } catch (e) {\n var err = lib._prettifyError(this.path, this.env.opts.dev, e);\n if (cb) {\n return callbackAsap(cb, err);\n } else {\n throw err;\n }\n }\n var context = new Context(ctx || {}, this.blocks, this.env);\n var frame = parentFrame ? parentFrame.push(true) : new Frame();\n frame.topLevel = true;\n var syncResult = null;\n var didError = false;\n this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err, res) {\n // TODO: this is actually a bug in the compiled template (because waterfall\n // tasks are both not passing errors up the chain of callbacks AND are not\n // causing a return from the top-most render function). But fixing that\n // will require a more substantial change to the compiler.\n if (didError && cb && typeof res !== 'undefined') {\n // prevent multiple calls to cb\n return;\n }\n if (err) {\n err = lib._prettifyError(_this6.path, _this6.env.opts.dev, err);\n didError = true;\n }\n if (cb) {\n if (forceAsync) {\n callbackAsap(cb, err, res);\n } else {\n cb(err, res);\n }\n } else {\n if (err) {\n throw err;\n }\n syncResult = res;\n }\n });\n return syncResult;\n };\n _proto3.getExported = function getExported(ctx, parentFrame, cb) {\n // eslint-disable-line consistent-return\n if (typeof ctx === 'function') {\n cb = ctx;\n ctx = {};\n }\n if (typeof parentFrame === 'function') {\n cb = parentFrame;\n parentFrame = null;\n }\n\n // Catch compile errors for async rendering\n try {\n this.compile();\n } catch (e) {\n if (cb) {\n return cb(e);\n } else {\n throw e;\n }\n }\n var frame = parentFrame ? parentFrame.push() : new Frame();\n frame.topLevel = true;\n\n // Run the rootRenderFunc to populate the context with exported vars\n var context = new Context(ctx || {}, this.blocks, this.env);\n this.rootRenderFunc(this.env, context, frame, globalRuntime, function (err) {\n if (err) {\n cb(err, null);\n } else {\n cb(null, context.getExported());\n }\n });\n };\n _proto3.compile = function compile() {\n if (!this.compiled) {\n this._compile();\n }\n };\n _proto3._compile = function _compile() {\n var props;\n if (this.tmplProps) {\n props = this.tmplProps;\n } else {\n var source = compiler.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts);\n var func = new Function(source); // eslint-disable-line no-new-func\n props = func();\n }\n this.blocks = this._getBlocks(props);\n this.rootRenderFunc = props.root;\n this.compiled = true;\n };\n _proto3._getBlocks = function _getBlocks(props) {\n var blocks = {};\n lib.keys(props).forEach(function (k) {\n if (k.slice(0, 2) === 'b_') {\n blocks[k.slice(2)] = props[k];\n }\n });\n return blocks;\n };\n return Template;\n}(Obj);\nmodule.exports = {\n Environment: Environment,\n Template: Template\n};","'use strict';\n\nfunction precompileGlobal(templates, opts) {\n var out = '';\n opts = opts || {};\n for (var i = 0; i < templates.length; i++) {\n var name = JSON.stringify(templates[i].name);\n var template = templates[i].template;\n out += '(function() {' + '(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})' + '[' + name + '] = (function() {\\n' + template + '\\n})();\\n';\n if (opts.asFunction) {\n out += 'return function(ctx, cb) { return nunjucks.render(' + name + ', ctx, cb); }\\n';\n }\n out += '})();\\n';\n }\n return out;\n}\nmodule.exports = precompileGlobal;","'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar _require = require('./lib'),\n _prettifyError = _require._prettifyError;\nvar compiler = require('./compiler');\nvar _require2 = require('./environment'),\n Environment = _require2.Environment;\nvar precompileGlobal = require('./precompile-global');\nfunction match(filename, patterns) {\n if (!Array.isArray(patterns)) {\n return false;\n }\n return patterns.some(function (pattern) {\n return filename.match(pattern);\n });\n}\nfunction precompileString(str, opts) {\n opts = opts || {};\n opts.isString = true;\n var env = opts.env || new Environment([]);\n var wrapper = opts.wrapper || precompileGlobal;\n if (!opts.name) {\n throw new Error('the \"name\" option is required when compiling a string');\n }\n return wrapper([_precompile(str, opts.name, env)], opts);\n}\nfunction precompile(input, opts) {\n // The following options are available:\n //\n // * name: name of the template (auto-generated when compiling a directory)\n // * isString: input is a string, not a file path\n // * asFunction: generate a callable function\n // * force: keep compiling on error\n // * env: the Environment to use (gets extensions and async filters from it)\n // * include: which file/folders to include (folders are auto-included, files are auto-excluded)\n // * exclude: which file/folders to exclude (folders are auto-included, files are auto-excluded)\n // * wrapper: function(templates, opts) {...}\n // Customize the output format to store the compiled template.\n // By default, templates are stored in a global variable used by the runtime.\n // A custom loader will be necessary to load your custom wrapper.\n\n opts = opts || {};\n var env = opts.env || new Environment([]);\n var wrapper = opts.wrapper || precompileGlobal;\n if (opts.isString) {\n return precompileString(input, opts);\n }\n var pathStats = fs.existsSync(input) && fs.statSync(input);\n var precompiled = [];\n var templates = [];\n function addTemplates(dir) {\n fs.readdirSync(dir).forEach(function (file) {\n var filepath = path.join(dir, file);\n var subpath = filepath.substr(path.join(input, '/').length);\n var stat = fs.statSync(filepath);\n if (stat && stat.isDirectory()) {\n subpath += '/';\n if (!match(subpath, opts.exclude)) {\n addTemplates(filepath);\n }\n } else if (match(subpath, opts.include)) {\n templates.push(filepath);\n }\n });\n }\n if (pathStats.isFile()) {\n precompiled.push(_precompile(fs.readFileSync(input, 'utf-8'), opts.name || input, env));\n } else if (pathStats.isDirectory()) {\n addTemplates(input);\n for (var i = 0; i < templates.length; i++) {\n var name = templates[i].replace(path.join(input, '/'), '');\n try {\n precompiled.push(_precompile(fs.readFileSync(templates[i], 'utf-8'), name, env));\n } catch (e) {\n if (opts.force) {\n // Don't stop generating the output if we're\n // forcing compilation.\n console.error(e); // eslint-disable-line no-console\n } else {\n throw e;\n }\n }\n }\n }\n return wrapper(precompiled, opts);\n}\nfunction _precompile(str, name, env) {\n env = env || new Environment([]);\n var asyncFilters = env.asyncFilters;\n var extensions = env.extensionsList;\n var template;\n name = name.replace(/\\\\/g, '/');\n try {\n template = compiler.compile(str, asyncFilters, extensions, name, env.opts);\n } catch (err) {\n throw _prettifyError(name, false, err);\n }\n return {\n name: name,\n template: template\n };\n}\nmodule.exports = {\n precompile: precompile,\n precompileString: precompileString\n};","\"use strict\";\n\nfunction installCompat() {\n 'use strict';\n\n /* eslint-disable camelcase */\n\n // This must be called like `nunjucks.installCompat` so that `this`\n // references the nunjucks instance\n var runtime = this.runtime;\n var lib = this.lib;\n // Handle slim case where these 'modules' are excluded from the built source\n var Compiler = this.compiler.Compiler;\n var Parser = this.parser.Parser;\n var nodes = this.nodes;\n var lexer = this.lexer;\n var orig_contextOrFrameLookup = runtime.contextOrFrameLookup;\n var orig_memberLookup = runtime.memberLookup;\n var orig_Compiler_assertType;\n var orig_Parser_parseAggregate;\n if (Compiler) {\n orig_Compiler_assertType = Compiler.prototype.assertType;\n }\n if (Parser) {\n orig_Parser_parseAggregate = Parser.prototype.parseAggregate;\n }\n function uninstall() {\n runtime.contextOrFrameLookup = orig_contextOrFrameLookup;\n runtime.memberLookup = orig_memberLookup;\n if (Compiler) {\n Compiler.prototype.assertType = orig_Compiler_assertType;\n }\n if (Parser) {\n Parser.prototype.parseAggregate = orig_Parser_parseAggregate;\n }\n }\n runtime.contextOrFrameLookup = function contextOrFrameLookup(context, frame, key) {\n var val = orig_contextOrFrameLookup.apply(this, arguments);\n if (val !== undefined) {\n return val;\n }\n switch (key) {\n case 'True':\n return true;\n case 'False':\n return false;\n case 'None':\n return null;\n default:\n return undefined;\n }\n };\n function getTokensState(tokens) {\n return {\n index: tokens.index,\n lineno: tokens.lineno,\n colno: tokens.colno\n };\n }\n if (process.env.BUILD_TYPE !== 'SLIM' && nodes && Compiler && Parser) {\n // i.e., not slim mode\n var Slice = nodes.Node.extend('Slice', {\n fields: ['start', 'stop', 'step'],\n init: function init(lineno, colno, start, stop, step) {\n start = start || new nodes.Literal(lineno, colno, null);\n stop = stop || new nodes.Literal(lineno, colno, null);\n step = step || new nodes.Literal(lineno, colno, 1);\n this.parent(lineno, colno, start, stop, step);\n }\n });\n Compiler.prototype.assertType = function assertType(node) {\n if (node instanceof Slice) {\n return;\n }\n orig_Compiler_assertType.apply(this, arguments);\n };\n Compiler.prototype.compileSlice = function compileSlice(node, frame) {\n this._emit('(');\n this._compileExpression(node.start, frame);\n this._emit('),(');\n this._compileExpression(node.stop, frame);\n this._emit('),(');\n this._compileExpression(node.step, frame);\n this._emit(')');\n };\n Parser.prototype.parseAggregate = function parseAggregate() {\n var _this = this;\n var origState = getTokensState(this.tokens);\n // Set back one accounting for opening bracket/parens\n origState.colno--;\n origState.index--;\n try {\n return orig_Parser_parseAggregate.apply(this);\n } catch (e) {\n var errState = getTokensState(this.tokens);\n var rethrow = function rethrow() {\n lib._assign(_this.tokens, errState);\n return e;\n };\n\n // Reset to state before original parseAggregate called\n lib._assign(this.tokens, origState);\n this.peeked = false;\n var tok = this.peekToken();\n if (tok.type !== lexer.TOKEN_LEFT_BRACKET) {\n throw rethrow();\n } else {\n this.nextToken();\n }\n var node = new Slice(tok.lineno, tok.colno);\n\n // If we don't encounter a colon while parsing, this is not a slice,\n // so re-raise the original exception.\n var isSlice = false;\n for (var i = 0; i <= node.fields.length; i++) {\n if (this.skip(lexer.TOKEN_RIGHT_BRACKET)) {\n break;\n }\n if (i === node.fields.length) {\n if (isSlice) {\n this.fail('parseSlice: too many slice components', tok.lineno, tok.colno);\n } else {\n break;\n }\n }\n if (this.skip(lexer.TOKEN_COLON)) {\n isSlice = true;\n } else {\n var field = node.fields[i];\n node[field] = this.parseExpression();\n isSlice = this.skip(lexer.TOKEN_COLON) || isSlice;\n }\n }\n if (!isSlice) {\n throw rethrow();\n }\n return new nodes.Array(tok.lineno, tok.colno, [node]);\n }\n };\n }\n function sliceLookup(obj, start, stop, step) {\n obj = obj || [];\n if (start === null) {\n start = step < 0 ? obj.length - 1 : 0;\n }\n if (stop === null) {\n stop = step < 0 ? -1 : obj.length;\n } else if (stop < 0) {\n stop += obj.length;\n }\n if (start < 0) {\n start += obj.length;\n }\n var results = [];\n for (var i = start;; i += step) {\n if (i < 0 || i > obj.length) {\n break;\n }\n if (step > 0 && i >= stop) {\n break;\n }\n if (step < 0 && i <= stop) {\n break;\n }\n results.push(runtime.memberLookup(obj, i));\n }\n return results;\n }\n function hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n var ARRAY_MEMBERS = {\n pop: function pop(index) {\n if (index === undefined) {\n return this.pop();\n }\n if (index >= this.length || index < 0) {\n throw new Error('KeyError');\n }\n return this.splice(index, 1);\n },\n append: function append(element) {\n return this.push(element);\n },\n remove: function remove(element) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] === element) {\n return this.splice(i, 1);\n }\n }\n throw new Error('ValueError');\n },\n count: function count(element) {\n var count = 0;\n for (var i = 0; i < this.length; i++) {\n if (this[i] === element) {\n count++;\n }\n }\n return count;\n },\n index: function index(element) {\n var i;\n if ((i = this.indexOf(element)) === -1) {\n throw new Error('ValueError');\n }\n return i;\n },\n find: function find(element) {\n return this.indexOf(element);\n },\n insert: function insert(index, elem) {\n return this.splice(index, 0, elem);\n }\n };\n var OBJECT_MEMBERS = {\n items: function items() {\n return lib._entries(this);\n },\n values: function values() {\n return lib._values(this);\n },\n keys: function keys() {\n return lib.keys(this);\n },\n get: function get(key, def) {\n var output = this[key];\n if (output === undefined) {\n output = def;\n }\n return output;\n },\n has_key: function has_key(key) {\n return hasOwnProp(this, key);\n },\n pop: function pop(key, def) {\n var output = this[key];\n if (output === undefined && def !== undefined) {\n output = def;\n } else if (output === undefined) {\n throw new Error('KeyError');\n } else {\n delete this[key];\n }\n return output;\n },\n popitem: function popitem() {\n var keys = lib.keys(this);\n if (!keys.length) {\n throw new Error('KeyError');\n }\n var k = keys[0];\n var val = this[k];\n delete this[k];\n return [k, val];\n },\n setdefault: function setdefault(key, def) {\n if (def === void 0) {\n def = null;\n }\n if (!(key in this)) {\n this[key] = def;\n }\n return this[key];\n },\n update: function update(kwargs) {\n lib._assign(this, kwargs);\n return null; // Always returns None\n }\n };\n\n OBJECT_MEMBERS.iteritems = OBJECT_MEMBERS.items;\n OBJECT_MEMBERS.itervalues = OBJECT_MEMBERS.values;\n OBJECT_MEMBERS.iterkeys = OBJECT_MEMBERS.keys;\n runtime.memberLookup = function memberLookup(obj, val, autoescape) {\n if (arguments.length === 4) {\n return sliceLookup.apply(this, arguments);\n }\n obj = obj || {};\n\n // If the object is an object, return any of the methods that Python would\n // otherwise provide.\n if (lib.isArray(obj) && hasOwnProp(ARRAY_MEMBERS, val)) {\n return ARRAY_MEMBERS[val].bind(obj);\n }\n if (lib.isObject(obj) && hasOwnProp(OBJECT_MEMBERS, val)) {\n return OBJECT_MEMBERS[val].bind(obj);\n }\n return orig_memberLookup.apply(this, arguments);\n };\n return uninstall;\n}\nmodule.exports = installCompat;","'use strict';\n\nvar lib = require('./src/lib');\nvar _require = require('./src/environment'),\n Environment = _require.Environment,\n Template = _require.Template;\nvar Loader = require('./src/loader');\nvar loaders = require('./src/loaders');\nvar precompile = require('./src/precompile');\nvar compiler = require('./src/compiler');\nvar parser = require('./src/parser');\nvar lexer = require('./src/lexer');\nvar runtime = require('./src/runtime');\nvar nodes = require('./src/nodes');\nvar installJinjaCompat = require('./src/jinja-compat');\n\n// A single instance of an environment, since this is so commonly used\nvar e;\nfunction configure(templatesPath, opts) {\n opts = opts || {};\n if (lib.isObject(templatesPath)) {\n opts = templatesPath;\n templatesPath = null;\n }\n var TemplateLoader;\n if (loaders.FileSystemLoader) {\n TemplateLoader = new loaders.FileSystemLoader(templatesPath, {\n watch: opts.watch,\n noCache: opts.noCache\n });\n } else if (loaders.WebLoader) {\n TemplateLoader = new loaders.WebLoader(templatesPath, {\n useCache: opts.web && opts.web.useCache,\n async: opts.web && opts.web.async\n });\n }\n e = new Environment(TemplateLoader, opts);\n if (opts && opts.express) {\n e.express(opts.express);\n }\n return e;\n}\nmodule.exports = {\n Environment: Environment,\n Template: Template,\n Loader: Loader,\n FileSystemLoader: loaders.FileSystemLoader,\n NodeResolveLoader: loaders.NodeResolveLoader,\n PrecompiledLoader: loaders.PrecompiledLoader,\n WebLoader: loaders.WebLoader,\n compiler: compiler,\n parser: parser,\n lexer: lexer,\n runtime: runtime,\n lib: lib,\n nodes: nodes,\n installJinjaCompat: installJinjaCompat,\n configure: configure,\n reset: function reset() {\n e = undefined;\n },\n compile: function compile(src, env, path, eagerCompile) {\n if (!e) {\n configure();\n }\n return new Template(src, env, path, eagerCompile);\n },\n render: function render(name, ctx, cb) {\n if (!e) {\n configure();\n }\n return e.render(name, ctx, cb);\n },\n renderString: function renderString(src, ctx, cb) {\n if (!e) {\n configure();\n }\n return e.renderString(src, ctx, cb);\n },\n precompile: precompile ? precompile.precompile : undefined,\n precompileString: precompile ? precompile.precompileString : undefined\n};","// ?? 如何避免每次手动添加\r\nexport enum TagType {\r\n Title = \"title\",\r\n Date = \"date\",\r\n Checker = \"checker\",\r\n Head = \"head\",\r\n Text = \"text\",\r\n Toc = \"toc\",\r\n Notice = \"notice\",\r\n Block = \"block\",\r\n Table = \"table\"\r\n}\r\n\r\n// 通用配置\r\ninterface BaseConfItem {\r\n tag: TagType;\r\n type?: string;\r\n title?: string;\r\n text?: string;\r\n style?: string;\r\n cssFiles?: string[];\r\n jsFiles?: string[];\r\n}\r\n\r\n// 表格配置扩展类型\r\ninterface ListConfItem extends BaseConfItem {\r\n tag: TagType.Toc | TagType.Block;\r\n data?: Array<object>;\r\n}\r\n// 表格配置扩展类型\r\ninterface TableConfItem extends BaseConfItem {\r\n tag: TagType.Table;\r\n columns?: Array<{ key: string; label: string }>;\r\n data?: Array<object>;\r\n th?: Array<{ key: string; width?: string }>;\r\n tbody?: Array<object[]>;\r\n}\r\n\r\n// 最终配置类型联合\r\nexport type ConfItem = BaseConfItem | ListConfItem | TableConfItem;\r\n\r\n// 渲染配置\r\nexport interface RenderOptions {\r\n templateDir?: string; // 模板地址\r\n cssUrls?: string | string[]; // 外部 css 引用地址\r\n asyncLoad?: boolean; // 文件资源加载的 异步和同步 控制\r\n noCache?: boolean; // njk 缓存控制选项\r\n}\r\n\r\n// 样式加载配置类型\r\nexport interface StyleLoadOptions {\r\n isAsync?: boolean;\r\n basePath?: string; // 支持自定义样式路径\r\n}\r\n\r\nexport type StyleLoader = (\r\n options?: StyleLoadOptions\r\n) => Promise<string> | string;","export const styleText = `<style>/* Components.css */\n/* END-Components.css */\n/* ContentTitle.css */\n.collapsible-container {\n--margin: 36px 0 20px;\nwidth: 100%;\noverflow: hidden;\nmargin: var(--margin);\n}\n.collapsible-input {\ndisplay: none;\n}\n.content-title:hover {\ncolor: #409EFF;\n}\n.collapsible-label {\ndisplay: flex;\njustify-content: space-between;\nalign-items: center;\ncursor: pointer;\n}\n.collapsible-label:hover {\ncolor: #409EFF;\n}\n.collapsible-input:checked~.collapsible-arrow {\ntransform: rotate(90deg);\n}\n.collapsible-content {\nmax-height: 0;\noverflow: hidden;\ntransition: max-height 0.3s cubic-bezier(0, 1, 0, 1) 0.3s ease;\n}\n.collapsible-hover-content {\nmax-height: 0;\noverflow: hidden;\ntransition: max-height 0.3s cubic-bezier(0, 1, 0, 1) 0.3s ease;\n}\n.collapsible-container:hover>.collapsible-hover-content {\nmax-height: 500px;\n}\n.collapsible-input:checked~.collapsible-content {\nmax-height: 500px;\n/* 根据内容调整 */\n}\n.title-tag,\n.title-tag-small {\nalign-items: center;\nmargin-left: 4px;\nborder-radius: 4px;\ncolor: white;\nbackground-color: #2196F3\n}\n.title-tag-titile-container{\ndisplay: flex;\nalign-items: center\n}\n.title-tag-small {\nfont-size: 10px;\npadding: 2px 8px;\n}\n.title-tag {\nfont-size: 10px;\npadding: 6px 10px;\n}\n/* END-ContentTitle.css */\n/* Divider.css */\n.divider-base {\nborder: none;\nheight: 1px;\nbackground: #e0e0e0;\nbackground-size: 100% 100%;\nmargin: 20px 0;\n}\n/* END-Divider.css */\n/* TOC.css */\n/* 基础样式 */\n.article-toc {\nposition: fixed;\ntop: 50px;\nright: 2rem;\nmax-height: calc(100vh - 4rem);\nmargin-left: 2rem;\nfont-size: 0.95rem;\n}\n/* 隐藏 checkbox */\n.toc-toggle-checkbox {\nposition: absolute;\nopacity: 0;\nheight: 0;\nwidth: 0;\n}\n/* 切换按钮样式 */\n.toc-toggle-label {\ndisplay: flex;\nalign-items: center;\nbackground: #f8f9fa;\npadding: 0.3rem 0.6rem;\nborder-radius: 4px;\ncursor: pointer;\nmargin-bottom: 0.5rem;\n}\n.toc-icon {\nfont-size: 1.2rem;\nmargin-right: 0.3rem;\n}\n/* 目录导航 */\n.toc-nav {\npadding: 0.5rem;\nbackground: white;\nborder-radius: 6px;\nbox-shadow: 0 1px 3px rgba(0,0,0,0.1);\n}\n.toc-section {\nmargin-bottom: 0.8rem;\n}\n.toc-heading {\nfont-size: 1rem;\nmargin: 0 0 0.4rem 0;\npadding-bottom: 0.2rem;\nborder-bottom: 1px solid #eee;\n}\n.toc-list {\nlist-style: none;\npadding-left: 0.4rem;\nmargin: 0;\n}\n.toc-item {\nmargin: 0.2rem 0;\n}\n.toc-link {\ndisplay: block;\npadding: 0.2rem 0.4rem;\ncolor: #495057;\ntext-decoration: none;\nborder-radius: 3px;\ntransition: all 0.2s;\n}\n.toc-link:hover {\nbackground: #f0f0f0;\ncolor: #007bff;\n}\n/* 层级缩进 */\n.toc-link[data-level=\"2\"] {\npadding-left: 0.8rem;\n}\n.toc-link[data-level=\"3\"] {\npadding-left: 1.6rem;\n}\n/* 激活状态 */\n.toc-link.active {\nbackground: #e7f5ff;\ncolor: #0066cc;\nfont-weight: 500;\n}\n/* 折叠功能实现 */\n.toc-toggle-checkbox:not(:checked) ~ .toc-nav {\ndisplay: none;\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.article-toc {\nmargin-left: 1rem;\nfont-size: 0.9rem;\n}\n}\n/* END-TOC.css */\n/* Text.css */\n/* END-Text.css */\n/* Title.css */\n.title-base {\ntext-align: center;\nfont-weight: bolder;\n}\n.njk-title-h1 {\nposition: relative;\npadding: 0 0 4.8px;\n}\n.njk-title-h2 {\nposition: relative;\n}\n.njk-title-h3 {\nposition: relative;\nmargin-bottom: 10px;\n}\n/* .njk-title-h2::before,\n.njk-title-h1::before {\ndisplay: none;\nposition: absolute;\ncontent: \"# \";\ncolor: #007bff;\n}\n.njk-title-h1::before {\nleft: -26px;\n}\n.njk-title-h2::before {\nleft: -18px;\n}\n.njk-title-h1:hover::before,\n.njk-title-h2:hover::before {\ndisplay: inline-block;\n} */\n/* END-Title.css */\n/* Notice.css */\n/* Notice */\n.notice {\nmargin: 16px 0;\npadding: 12px 16px;\nmargin-bottom: 1rem;\nborder-radius: 4px;\nfont-size: 14px;\nline-height: 1.5rem;\n}\n.notice-title {\nfont-weight: bold;\nmargin-bottom: 4px;\n}\n/* 不同类型的通知样式 */\n.notice-info {\nbackground-color: #e8f4ff;\nborder-left: 4px solid #1890ff;\n}\n.notice-warning {\nbackground-color: #fff7e6;\nborder-left: 4px solid #faad14;\n}\n.notice-success {\nbackground-color: #f6ffed;\nborder-left: 4px solid #52c41a;\n}\n.notice-error {\nbackground-color: #fff2f0;\nborder-left: 4px solid #f5222d;\n}\n/* END-Notice.css */\n/* Table.css */\n.my-daframe-default {\nmargin: 0 auto 20px;\nborder-collapse: collapse;\nborder: 2px solid black;\n/* 合并边框 */\nfont-family: Arial, Helvetica, sans-serif;\nfont-size: 14px;\ncolor: #444444;\n}\n.my-daframe-default a {\ntext-decoration: none !important;\ncolor: #444444 !important;\nfont-family: Arial, Helvetica, sans-serif;\nfont-size: 14px;\n}\n.thead-light th {\nwhite-space: nowrap;\nbackground-color: #e0e3e8;\n/* background-color: #f5f7fa; */\ncolor: #333333;\nfont-weight: 600;\npadding: 12px 16px;\ntext-align: left;\nborder-right: 1px solid rgba(19, 18, 18, 0.6);\nborder-bottom: 2px solid black;\nfont-size: 16px;\n}\n.my-daframe-default tr {\nborder-bottom: 1px solid black;\n}\n.my-daframe-default td {\nborder-right: 1px solid rgba(19, 18, 18, 0.6);\n/* color: #333333; */\n/* font-weight: 600; */\n/* text-align: left; */\n}\n.default-row {\nborder: 1px solid #eee;\nbackground-color: #fff;\n}\n.default-row:hover {\nbackground-color: #f0f4f8;\ncolor: rebeccapurple;\n}\n.default-cell {\npadding: 10px 16px;\n/* border: 1px solid #e1e4e8; */\nfont-weight: 400;\nfont-size: 14px;\ncolor: #444;\nbackground-color: transparent;\n}\n/* END-Table.css */\n/* Block.css */\n/* Block.njk */\n.code-block {\n--block-margin: 0px\nmargin: var(--block-margin) 0;\nborder-radius: 4px;\noverflow: hidden;\nbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.code-block pre {\nmargin: 0;\npadding: 1rem;\nbackground-color: #f5f5f5;\nfont-family: 'Courier New', monospace;\nfont-size: 14px;\nline-height: 1.5;\nwhite-space: pre-wrap;\n}\n.code-block code {\ndisplay: block;\noverflow-x: auto;\n}\n/* END-Block.css */\n/* Date.css */\n.center-info-box {\nmargin-top: -20px;\nmargin-bottom: 20px;\ntext-align: center;\ncolor: black;\n}\n/* END-Date.css */\n/* Tab.css */\n/* Tab 容器 */\n.tab-container {\nmax-width: 600px;\nmargin: 0 auto;\n}\n/* 隐藏 Radio 按钮 */\n.tab-radio {\ndisplay: none;\n}\n/* Tab 按钮样式 */\n.tab-labels {\ndisplay: flex;\nborder-bottom: 1px solid #ccc;\n}\n.tab-label {\npadding: 5px 10px;\ncursor: pointer;\nbackground-color: #f1f1f1;\nborder: 1px solid #ccc;\nborder-bottom: none;\nmargin-right: 2px;\nborder-radius: 5px 5px 0 0;\n}\n.tab-label:hover {\nbackground-color: #ddd;\n}\n.tab-radio:checked+.tab-label {\nbackground-color: #fff;\nborder-bottom: 1px solid #fff;\nmargin-bottom: -1px;\n}\n/* Tab 内容区域 */\n.tab-content {\ndisplay: none;\npadding: 20px;\nborder: 1px solid #ccc;\nborder-top: none;\n}\n/* END-Tab.css */\n/* Base.css */\nbody {\nmargin: 0;\npadding: 0;\nfont-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;\n}\n/* PC端样式 */\na {\ntext-decoration: none;\n}\na:hover {\ncolor: #409EFF;\n}\n.email-main-container {\nmargin: 0;\nmin-width: 1000px;\npadding: 0 5rem;\n}\n:root {\n--njk-title-color: black;\n--njk-title-align: center;\n--njk-title-position: relative;\n--njk-title-margin: 36px 0 20px;\n--njk-table-margin: 0 auto 20px;\n}\n/* END-Base.css */\n</style>`","export const templateText = `<!-- Head.njk -->\n{% macro use_head(ctx) %}\n<head>\n<meta charset=\"UTF-8\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<title>{{ ctx.title }}</title>\n{% if ctx.jsFiles%}\n{% for css in ctx.cssFiles %}\n<link rel=\"stylesheet\" href=\"{{ css }}\" />\n{% endfor %}\n{% endif %}\n</head>\n{% if ctx.jsFiles%}\n{% for js in ctx.jsFiles %}\n<script src=\"{{ js }}\"></script>\n{% endfor %}\n{% endif %}\n{% endmacro %}\n{% macro use_comp_start(ctx) %}\n<table style=\"width: 100%;table-layout: auto\">\n<tr>\n<td>\n{% endmacro %}\n{% macro use_comp_end(ctx) %}\n</td>\n</tr>\n</table>\n{% endmacro %}\n<!-- /Head.njk -->\n<!-- TOC.njk -->\n{% macro use_toc(ctx) %}\n<div class=\"article-toc\">\n<input type=\"checkbox\" id=\"toc-toggle\" class=\"toc-toggle-checkbox\">\n<label for=\"toc-toggle\" class=\"toc-toggle-label\">\n<span class=\"toc-icon\">≡</span>\n<span class=\"toc-text\">目录</span>\n</label>\n<nav class=\"toc-nav\">\n{% for section in ctx.data %}\n<section class=\"toc-section\">\n{% if section.link %}\n<h3 class=\"toc-heading\">\n<a href=\"{{ section.link }}\" class=\"toc-link\">{{ section.text }}</a>\n</h3>\n{% else%}\n<h3 class=\"toc-heading\">{{ section.text }}</h3>\n{% endif %}\n<ul class=\"toc-list\">\n{% for item in section.items %}\n<li class=\"toc-item\">\n<a href=\"{{ item.link }}\" class=\"toc-link\" data-level=\"{{ loop.depth }}\">\n{% if loop.depth > 1 %}•{% endif %}\n{{ item.text }}\n</a>\n</li>\n{% endfor %}\n</ul>\n</section>\n{% endfor %}\n</nav>\n</div>\n{% endmacro %}\n<!-- /TOC.njk -->\n<!-- Divider.njk -->\n{% macro use_divider(ctx) %}\n<hr class=\"divider-base\">\n{% endmacro %}\n<!-- /Divider.njk -->\n<!-- Tag.njk -->\n{% macro use_tag(ctx) %}\n{% set tagClass = \"smart-tag\" %}\n{% set defaultColor = \"#4CAF50\" %}\n{% set defaultSize = \"medium\" %}\n{% set finalColor = defaultColor %}\n{% set finalSize = defaultSize %}\n<span class=\"{{ tagClass }} {{ finalSize }}\" style=\"background-color: {{ finalColor }};\">\n{{ ctx.text }}\n</span>\n<style>\n.smart-tag {\ndisplay: inline-flex;\nalign-items: center;\npadding: 4px 12px;\nborder-radius: 4px;\nfont-family: Arial, sans-serif;\ncolor: white;\nwhite-space: nowrap;\ntransition: all 0.3s ease;\n}\n/* 尺寸控制 */\n.smart-tag.small {\nfont-size: 12px;\npadding: 2px 8px;\n}\n.smart-tag.medium {\nfont-size: 14px;\npadding: 4px 12px;\n}\n.smart-tag.large {\nfont-size: 16px;\npadding: 6px 16px;\n}\n/* 颜色扩展支持 */\n.smart-tag.blue { background-color: #2196F3 !important; }\n.smart-tag.red { background-color: #f44336 !important; }\n.smart-tag.green { background-color: #4CAF50 !important; }\n</style>\n{% endmacro %}\n<!-- /Tag.njk -->\n<!-- Title.njk -->\n{% macro use_table_wrapper(macro) %}\n<table style=\"width: 100%;table-layout: auto\">\n<th>\n<td>{{ macro }}</td>\n</th>\n</table>\n{% endmacro %}\n{% macro title_default(ctx) %}\n<h1 class=\"title-base\">{{ ctx.text }}</h1>\n{% endmacro %}\n{% macro title_h1(ctx) %}\n<h1 class=\"title-base njk-title-h1\" id=\"{{ ctx.text }}\" style=\"{{ ctx.style }}\">\n{{ ctx.text }}\n</h1>\n{% endmacro %}\n{% macro title_h2(ctx) %}\n<h2 class=\"title-base njk-title-h2\" id=\"{{ ctx.text }}\" class=\"\" style=\"{{ ctx.style }}\">\n{{ ctx.text }}\n</h2>\n{% endmacro %}\n{% macro title_h3(ctx) %}\n<h3 class=\"title-base njk-title-h3\" id=\"{{ ctx.text }}\" class=\"\" style=\"{{ ctx.style }}\">\n{{ ctx.text }}\n</h3>\n{% endmacro %}\n{% macro title_table_default(ctx) %}\n{{ use_comp_start() }}\n<h3 class=\"title-base njk-title-h3\" id=\"{{ ctx.text }}\">\n{{ ctx.text }}\n</h3>\n{{ use_comp_end() }}\n{% endmacro %}\n{% macro use_title(ctx) %}\n{% if ctx.type == \"h1\" %}\n{{ title_h1(ctx) }}\n{% elif ctx.type == \"h2\" %}\n{{ title_h2(ctx) }}\n{% elif ctx.type == \"h3\" %}\n{{ title_h3(ctx) }}\n{% else %}\n{{ title_default(ctx) }}\n{% endif %}\n{% endmacro %}\n<!-- /Title.njk -->\n<!-- Notice.njk -->\n{% macro use_notice(ctx) %}\n{% if ctx.type %}\n{% set type = ctx.type %}\n{% else %}\n{% set type = \"info\" %}\n{% endif %}\n<div class=\"notice notice-{{ type }}\">\n<div class=\"notice-title\">{{ type|capitalize }}:</div>\n<pre class=\"notice-content\">{{ ctx.text }}</pre>\n</div>\n{% endmacro %}\n<!-- /Notice.njk -->\n<!-- Block.njk -->\n{% macro use_block(ctx) %}\n<div class=\"code-block\">\n<pre><code>{{ ctx.text }}</code></pre>\n</div>\n{% endmacro %}\n<!-- /Block.njk -->\n<!-- Date.njk -->\n{% macro use_date(ctx) %}\n<div class=\"center-info-box\" style=\"text-align: center;\"><span style=\"font-weight:bolder;\">Date:</span>{{ ctx.text}}</div>\n{% endmacro %}\n{% macro use_checker(ctx) %}\n<div class=\"center-info-box\" style=\"text-align: center;\"><span style=\"font-weight:bolder;\">Checker:</span>{{ ctx.text}}</div>\n{% endmacro %}\n<!-- /Date.njk -->\n<!-- Table.njk -->\n{% macro td_default(ctx) %}\n{% if ctx.text %}\n{% set text = ctx.text %}\n{% else %}\n{% set text = ctx %}\n{% endif %}\n<td class=\"default-cell\">{{ text | replace(\"false\", \"❌\")| replace(\"False\", \"❌\")| replace(\"True\", \"✔️\") | replace(\"true\", \"✔️\") }}</td>\n{% endmacro %}\n{% macro table_default(ctx) %}\n{% if ctx.columns %}\n{% set columns = ctx.columns %}\n{% elif ctx.th %}\n{% set columns = ctx.th %}\n{% else %}\n{% set columns = [] %}\n{% endif %}\n{% if ctx.data %}\n{% set data = ctx.data %}\n{% elif ctx.tbody %}\n{% set data = ctx.tbody %}\n{% endif %}\n{% if ctx.title %}\n{% set title = {text:ctx.title} %}\n{{ use_comp_start() }}\n{{ title_h2(title) }}\n{{ use_comp_end() }}\n{% endif %}\n<table class=\"my-daframe-default\">\n<thead class=\"thead-light\">\n<tr>\n{% for column in columns %}\n<th>{{ column }}</th>\n{% endfor %}\n</tr>\n</thead>\n<tbody>\n{% for row in data %}\n<tr class=\"default-row\">\n{% if ctx.data %}\n{% for column in columns %}\n{{ td_default(row[column]) }}\n{% endfor %}\n{% else %}\n{% for value in row %}\n{{ td_default(value) }}\n{% endfor %}\n{% endif %}\n</tr>\n{% endfor %}\n</tbody>\n</table>\n{% endmacro %}\n{% macro use_table(ctx) %}\n{% if ctx.title %}\n{{ table_default(ctx) }}\n{% else %}\n{{ table_default(ctx) }}\n{% endif %}\n{% endmacro %}\n<!-- /Table.njk -->\n<!-- Tab.njk -->\n{% macro useTab(tabs) %}\n<style>\n/* 显示选中的 Tab 内容 */\n{% for tab in tabs %}\n#{{tab.id}}:checked~#{{tab.content_id}} {\ndisplay: block;\n}\n{% endfor %}\n</style>\n<div class=\"tab-container\">\n{% for tab in tabs %}\n<!-- Radio 按钮(隐藏) -->\n<input {% if loop.first %} checked {% endif %} type=\"radio\" name=\"tabs\" id=\"{{ tab.id }}\" class=\"tab-radio\">\n{% endfor %}\n<!-- Tab 按钮(用 label 包裹) -->\n<div class=\"tab-labels\">\n{% for tab in tabs %}\n<label for=\"{{ tab.id }}\" class=\"tab-label\">{{ tab.title }}\n</label>\n{% endfor %}\n</div>\n<!-- Tab 内容 -->\n{% for tab in tabs %}\n<div id=\"{{ tab.content_id }}\" class=\"tab-content\">\n{{ tab.content }}\n</div>\n{% endfor %}\n</div>\n{% endmacro %}\n<!-- /Tab.njk -->\n<!-- ContentTitle.njk -->\n{% macro h3_handler(ctx) %}\n<div class=\"title-tag-titile-container\">\n{% if ctx.h3 %}\n<h3 style=\"margin: 0;\" class=\"content-title\">{{ ctx.title }}</h3>\n{% else %}\n<h2 style=\"margin: 0;\" class=\"content-title\">{{ ctx.title }}</h3>\n{% endif %}\n<span class=\"title-tag-small\">注释</span>\n</div>\n{% endmacro %}\n{% macro content_title_click(ctx) %}\n<div class=\"collapsible-container\">\n<input type=\"checkbox\" id=\"{{ ctx.title }}\" class=\"collapsible-input\" hidden>\n<label for=\"{{ ctx.title }}\" class=\"collapsible-label\">\n{{ h3_handler(ctx) }}\n</label>\n<div class=\"collapsible-content\">\n{{ use_block(ctx) }}\n</div>\n</div>\n{% endmacro %}\n{% macro content_title_hover(ctx) %}\n<div class=\"collapsible-container\">\n<div class=\"collapsible-label\">\n{{ h3_handler(ctx) }}\n</div>\n<div class=\"collapsible-hover-content\">\n{{ use_block(ctx) }}\n</div>\n</div>\n{% endmacro %}\n{% macro content_title_remain(ctx) %}\n<div class=\"collapsible-container\">\n{{ h3_handler(ctx) }}\n<div>\n{{ use_block(ctx) }}\n</div>\n</div>\n{% endmacro %}\n{% macro pick_content_title(ctx) %}\n{% if ctx.hover %}\n{{ content_title_hover(ctx) }}\n{% elif ctx.remain %}\n{{ content_title_remain(ctx) }}\n{% else %}\n{{ content_title_click(ctx) }}\n{% endif %}\n{% endmacro %}\n{% macro use_content_title(ctx) %}\n{% if ctx.type == \"h3\" or ctx.type == \"hover_h3\" or ctx.type == \"remain_h3\" %}\n{% set h3 = true %}\n{% endif %}\n{% if ctx.type == \"hover_h3\" or ctx.type == \"hover\" %}\n{% set hover = true %}\n{% endif %}\n{% if ctx.type == \"remain_h3\" or ctx.type == \"remain\" %}\n{% set remain = true %}\n{% endif %}\n{% set param = {title:ctx.title, text:ctx.text, h3:h3, hover:hover, remain:remain} %}\n{{ pick_content_title(param) }}\n{% endmacro %}\n<!-- /ContentTitle.njk -->\n<!-- Component.njk -->\n{% macro pick_component(ctx) %}\n{% if ctx.tag == \"head\" %}\n{{ use_head(ctx) }}\n{% elif ctx.tag == \"text\" %}\n{{ use_text(ctx) }}\n{% elif ctx.tag == \"title\" %}\n{{ use_title(ctx) }}\n{% elif ctx.tag == \"table\" %}\n{{ use_table(ctx) }}\n{% elif ctx.tag == \"toc\" %}\n{{ use_toc(ctx) }}\n{% elif ctx.tag == \"notice\" %}\n{{ use_notice(ctx) }}\n{% elif ctx.tag == \"block\" %}\n{{ use_block(ctx) }}\n{% elif ctx.tag == \"date\" %}\n{{ use_date(ctx) }}\n{% elif ctx.tag == \"checker\" %}\n{{ use_checker(ctx) }}\n{% elif ctx.tag == \"divider\" %}\n{{ use_divider(ctx) }}\n{% elif ctx.tag == \"tag\" %}\n{{ use_tag(ctx) }}\n{% elif ctx.tag == \"title_content\" %}\n{{ use_content_title(ctx) }}\n{% else %}\n{{ title_default(ctx) }}\n{% endif %}\n{% endmacro %}\n{% macro use_component(ctx) %}\n{% if ctx.tag %}\n{{ use_comp_start() }}\n{{ pick_component(ctx) }}\n{{ use_comp_end() }}\n{% else %}\n{% for i in ctx %}\n{% if i.tag != 'table' %}\n{{ use_comp_start() }}\n{{ pick_component(i) }}\n{{ use_comp_end() }}\n{% else %}\n{{ pick_component(i) }}\n{% endif %}\n{% endfor %}\n{% endif %}\n{% endmacro %}\n{{ use_component(ctx) }}</tr>\n<!-- /Component.njk -->\n<!-- Text.njk -->\n{% macro text_default(ctx) %}\n{{ ctx.text | replace(\"false\", \"❌\") | replace(\"true\", \"✔️\") }}\n{% endmacro %}\n{% macro bool_text(ctx) %}\n{{ ctx.text | replace(\"false\", \"❌\") | replace(\"true\", \"✔️\") }}\n{% endmacro %}\n{% macro use_text(ctx) %}\n{% if ctx.type == \"h1\" %}\n{{ title_h1(ctx) }}\n{% else %}\n{{ text_default(ctx) }}\n{% endif %}\n{% endmacro %}\n<!-- /Text.njk -->\n`","import nunjucks from \"nunjucks\";\r\nimport { ConfItem, TagType } from \"./type\";\r\nimport { fileURLToPath } from \"node:url\";\r\nimport { styleText } from \"./style.dist.js\";\r\nimport { templateText } from \"./template.dist.js\";\r\nconst externalTemplatesDir = fileURLToPath(new URL(\"../bundle/src\", `${import.meta.url}`));\r\nnunjucks.configure(externalTemplatesDir, {\r\n autoescape: true,\r\n noCache: true\r\n})\r\n\r\ninterface Options {\r\n cssUrl?: string | string[]\r\n templateDir?: string\r\n asyncLoad?: boolean\r\n}\r\n\r\n// 样式注入逻辑优化\r\nconst processConfig = (config: ConfItem[], cssUrls: string[]): ConfItem[] => {\r\n const headConf: ConfItem = {\r\n tag: TagType.Head,\r\n cssFiles: Array.isArray(cssUrls) ? cssUrls : [cssUrls]\r\n };\r\n\r\n return Array.isArray(config)\r\n ? [headConf, ...config]\r\n : [headConf, config];\r\n};\r\n\r\nexport const njkRenderSync = (config: ConfItem | ConfItem[], options: Options = {}): string => {\r\n const { cssUrl } = options;\r\n const processedConfig = Array.isArray(config)\r\n ? processConfig(config, cssUrl as string[])\r\n : processConfig([config], cssUrl as string[]);\r\n\r\n const html = nunjucks.renderString(templateText, {\r\n ctx: processedConfig,\r\n });\r\n return styleText + html\r\n};"],"names":["libModule","require$$0","this","require$$1","require$$2","require$$3","require$$4","require$$5","filtersModule","constants","parse_1","anymatch","anymatchModule","fseventsHandlerModule","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","nunjucks","fileURLToPath"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51]}