From 0c002220e3188c36256e274f570358ff21709d2e Mon Sep 17 00:00:00 2001 From: Ben Gubler Date: Thu, 9 Apr 2020 20:45:06 -0600 Subject: [PATCH] Move away from using @ for partials --- dist/browser/eta.dev.js.map | 2 +- dist/browser/eta.min.js.map | 2 +- dist/eta.cjs.js.map | 2 +- dist/eta.es.js.map | 2 +- package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/browser/eta.dev.js.map b/dist/browser/eta.dev.js.map index a08944f..4b371f5 100644 --- a/dist/browser/eta.dev.js.map +++ b/dist/browser/eta.dev.js.map @@ -1 +1 @@ -{"version":3,"file":"eta.dev.js","sources":["../../src/err.ts","../../src/utils.ts","../../src/parse.ts","../../src/compile-string.ts","../../src/storage.ts","../../src/containers.ts","../../src/config.ts","../../src/compile.ts","../../src/render.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse(str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString(strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope(buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper(this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig(override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n"],"names":["Parse"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eta.dev.js","sources":["../../src/err.ts","../../src/utils.ts","../../src/parse.ts","../../src/compile-string.ts","../../src/storage.ts","../../src/containers.ts","../../src/config.ts","../../src/compile.ts","../../src/render.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse (str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString (strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString (str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope (buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper (this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig (override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n"],"names":["Parse"],"mappings":"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"} \ No newline at end of file diff --git a/dist/browser/eta.min.js.map b/dist/browser/eta.min.js.map index 869c312..bd8b12a 100644 --- a/dist/browser/eta.min.js.map +++ b/dist/browser/eta.min.js.map @@ -1 +1 @@ -{"version":3,"file":"eta.min.js","sources":["../../src/err.ts","../../src/utils.ts","../../src/parse.ts","../../src/compile-string.ts","../../src/storage.ts","../../src/containers.ts","../../src/config.ts","../../src/compile.ts","../../src/render.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse(str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString(strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope(buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper(this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig(override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n"],"names":["EtaErr","message","obj","proto","err","Error","prototype","Object","setPrototypeOf","__proto__","ParseErr","str","indx","whitespace","slice","split","lineNo","length","colNo","Array","join","create","name","value","enumerable","promiseImpl","Function","Promise","copyProps","toObj","fromObj","notConfig","key","prop","hasOwnProperty","call","escMap","&","<","\"","'","replaceChar","s","templateLitReg","singleQuoteReg","doubleQuoteReg","parse","env","buffer","trimLeftOfNextStr","lastIndex","parseOptions","pushString","strng","shouldTrimRightOfString","wsLeft","wsRight","leftTrim","rightTrim","isArray","autoTrim","trim","String","trimLeft","replace","trimRight","trimWS","push","m","prefixes","exec","interpolate","raw","parseOpenReg","RegExp","tags","parseCloseReg","index","closeTag","precedingString","prefix","currentObj","content","currentType","t","val","char","commentCloseInd","indexOf","plugins","i","plugin","processAST","compileToString","Parse","res","useWith","varName","buff","buffLength","returnStr","currentBlock","type","autoEscape","compileScope","processFnString","templates","cache","this","Cacher","cacheObj","includeHelper","templateNameOrPath","data","template","get","defaultConfig","async","e","newStr","test","include","getConfig","override","baseConfig","compile","ctor","options","SyntaxError","handleCache","templateFunc","define","bind","cb","resolve","reject"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eta.min.js","sources":["../../src/err.ts","../../src/utils.ts","../../src/parse.ts","../../src/compile-string.ts","../../src/storage.ts","../../src/containers.ts","../../src/config.ts","../../src/compile.ts","../../src/render.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse (str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString (strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString (str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope (buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper (this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig (override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n"],"names":["EtaErr","message","obj","proto","err","Error","prototype","Object","setPrototypeOf","__proto__","ParseErr","str","indx","whitespace","slice","split","lineNo","length","colNo","Array","join","create","name","value","enumerable","promiseImpl","Function","Promise","copyProps","toObj","fromObj","notConfig","key","prop","hasOwnProperty","call","escMap","&","<","\"","'","replaceChar","s","templateLitReg","singleQuoteReg","doubleQuoteReg","parse","env","buffer","trimLeftOfNextStr","lastIndex","parseOptions","pushString","strng","shouldTrimRightOfString","wsLeft","wsRight","leftTrim","rightTrim","isArray","autoTrim","trim","String","trimLeft","replace","trimRight","trimWS","push","m","prefixes","exec","interpolate","raw","parseOpenReg","RegExp","tags","parseCloseReg","index","closeTag","precedingString","prefix","currentObj","content","currentType","t","val","char","commentCloseInd","indexOf","plugins","i","plugin","processAST","compileToString","Parse","res","useWith","varName","buff","buffLength","returnStr","currentBlock","type","autoEscape","compileScope","processFnString","templates","cache","this","Cacher","cacheObj","includeHelper","templateNameOrPath","data","template","get","defaultConfig","async","e","newStr","test","include","getConfig","override","baseConfig","compile","ctor","options","SyntaxError","handleCache","templateFunc","define","bind","cb","resolve","reject"],"mappings":"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"} \ No newline at end of file diff --git a/dist/eta.cjs.js.map b/dist/eta.cjs.js.map index eee8e8f..723cd0f 100644 --- a/dist/eta.cjs.js.map +++ b/dist/eta.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"eta.cjs.js","sources":["../src/err.ts","../src/utils.ts","../src/parse.ts","../src/compile-string.ts","../src/storage.ts","../src/containers.ts","../src/config.ts","../src/compile.ts","../src/file-utils.ts","../src/file-handlers.ts","../src/file-helpers.ts","../src/render.ts","../src/index.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse(str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString(strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope(buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper(this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig(override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","var fs = require('fs')\nvar path = require('path')\nvar _BOM = /^\\uFEFF/\n\n// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport Compile from './compile'\nimport { getConfig } from './config'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\ninterface PartialFileConfig extends PartialConfig {\n filename: string\n}\n\ninterface FileConfig extends EtaConfig {\n filename: string\n}\n\n/* END TYPES */\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} parentfile parent file path\n * @param {Boolean} [isDir=false] whether parent file path is a directory\n * @return {String}\n */\n\nfunction getWholeFilePath (name: string, parentfile: string, isDirectory?: boolean) {\n var includePath = path.resolve(\n isDirectory ? parentfile : path.dirname(parentfile), // returns directory the parent file is in\n name // file\n )\n var ext = path.extname(name)\n if (!ext) {\n includePath += '.eta'\n }\n return includePath\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\n\nfunction getPath (path: string, options: EtaConfig) {\n var includePath\n var filePath\n var views = options.views\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path)\n\n // Abs path\n if (match && match.length) {\n includePath = getWholeFilePath(path.replace(/^\\/*/, ''), options.root || '/', true)\n } else {\n // Relative paths\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = getWholeFilePath(path, options.filename)\n if (fs.existsSync(filePath)) {\n includePath = filePath\n }\n }\n // Then look in any views directories\n if (!includePath) {\n if (\n Array.isArray(views) &&\n views.some(function (v) {\n filePath = getWholeFilePath(path, v, true)\n return fs.existsSync(filePath)\n })\n ) {\n includePath = filePath\n }\n }\n if (!includePath) {\n throw EtaErr('Could not find the include file \"' + path + '\"')\n }\n }\n return includePath\n}\n\nfunction readFile (filePath: string) {\n return fs\n .readFileSync(filePath)\n .toString()\n .replace(_BOM, '') // TODO: is replacing BOM's necessary?\n}\n\nfunction loadFile (filePath: string, options: PartialFileConfig): TemplateFunction {\n var config = getConfig(options)\n var template = readFile(filePath)\n try {\n var compiledTemplate = Compile(template, config)\n config.templates.define((config as FileConfig).filename, compiledTemplate)\n return compiledTemplate\n } catch (e) {\n throw EtaErr('Loading file: ' + filePath + ' failed')\n }\n}\n\nexport { getPath, readFile, loadFile }\n","// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport compile from './compile'\nimport { getConfig } from './config'\nimport { getPath, readFile, loadFile } from './file-utils'\nimport { promiseImpl, copyProps } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\nexport type CallbackFn = (err: Error | null, str?: string) => void\n\ninterface FileOptions extends EtaConfig {\n filename: string\n}\n\ninterface DataObj {\n settings?: {\n [key: string]: any\n }\n [key: string]: any\n}\n\n/* END TYPES */\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache (options: FileOptions): TemplateFunction {\n var filename = options.filename\n\n if (options.cache) {\n var func = options.templates.get(filename)\n if (func) {\n return func\n } else {\n return loadFile(filename, options)\n }\n }\n\n return compile(readFile(filename), options)\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache (options: FileOptions, data: object, cb: CallbackFn) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile (path: string, options: EtaConfig) {\n // the below creates a new options object, using the parent filepath of the old options object and the path\n var newFileOptions = getConfig({ filename: getPath(path, options) }, options)\n // TODO: make sure properties are currectly copied over\n return handleCache(newFileOptions as FileOptions)\n}\n\nfunction renderFile (filename: string, data: DataObj, cb?: CallbackFn) {\n var Config: FileOptions = getConfig((data as PartialConfig) || {}) as FileOptions\n // TODO: make sure above doesn't error. We do set filename down below\n\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n Config.views = data.settings.views\n }\n if (data.settings['view cache']) {\n Config.cache = true\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n var viewOpts = data.settings['view options']\n\n if (viewOpts) {\n copyProps(Config, viewOpts)\n }\n }\n\n Config.filename = filename // Make sure filename is right\n\n return tryHandleCache(Config, data, cb as CallbackFn)\n}\n\nexport { includeFile, renderFile }\n","import { includeFile } from './file-handlers'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface GenericData {\n [index: string]: any\n}\n\n/* END TYPES */\n\nexport function includeFileHelper (this: EtaConfig, path: string, data: GenericData): string {\n return includeFile(path, this)(data, this)\n}\n\n// export function extendsFileHelper(path: string, data: GenericData, config: EtaConfig): string {\n// var data: GenericData = content.params[1] || {}\n\n// data.content = content.exec()\n// for (var i = 0; i < blocks.length; i++) {\n// var currentBlock = blocks[i]\n// data[currentBlock.name] = currentBlock.exec()\n// }\n\n// return includeFile(content.params[0], config)(data, config)\n// }\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n","/* Export file stuff */\nimport { includeFileHelper } from './file-helpers'\nimport { defaultConfig } from './config'\n\n/* TYPES */\n\n/* END TYPES */\n\ndefaultConfig.includeFile = includeFileHelper\nincludeFileHelper.bind(defaultConfig)\n\nexport { renderFile, renderFile as __express } from './file-handlers'\nexport { loadFile } from './file-utils'\n\n/* End file stuff */\n\nexport { default as compileToString } from './compile-string'\nexport { default as compile } from './compile'\nexport { default as parse } from './parse'\nexport { default as render } from './render'\nexport { templates } from './containers'\nexport { defaultConfig, getConfig } from './config'\n"],"names":["Parse","Compile","handleCache"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eta.cjs.js","sources":["../src/err.ts","../src/utils.ts","../src/parse.ts","../src/compile-string.ts","../src/storage.ts","../src/containers.ts","../src/config.ts","../src/compile.ts","../src/file-utils.ts","../src/file-handlers.ts","../src/file-helpers.ts","../src/render.ts","../src/index.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse (str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString (strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString (str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope (buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper (this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig (override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","var fs = require('fs')\nvar path = require('path')\nvar _BOM = /^\\uFEFF/\n\n// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport Compile from './compile'\nimport { getConfig } from './config'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\ninterface PartialFileConfig extends PartialConfig {\n filename: string\n}\n\ninterface FileConfig extends EtaConfig {\n filename: string\n}\n\n/* END TYPES */\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} parentfile parent file path\n * @param {Boolean} [isDir=false] whether parent file path is a directory\n * @return {String}\n */\n\nfunction getWholeFilePath (name: string, parentfile: string, isDirectory?: boolean) {\n var includePath = path.resolve(\n isDirectory ? parentfile : path.dirname(parentfile), // returns directory the parent file is in\n name // file\n )\n var ext = path.extname(name)\n if (!ext) {\n includePath += '.eta'\n }\n return includePath\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\n\nfunction getPath (path: string, options: EtaConfig) {\n var includePath\n var filePath\n var views = options.views\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path)\n\n // Abs path\n if (match && match.length) {\n includePath = getWholeFilePath(path.replace(/^\\/*/, ''), options.root || '/', true)\n } else {\n // Relative paths\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = getWholeFilePath(path, options.filename)\n if (fs.existsSync(filePath)) {\n includePath = filePath\n }\n }\n // Then look in any views directories\n if (!includePath) {\n if (\n Array.isArray(views) &&\n views.some(function (v) {\n filePath = getWholeFilePath(path, v, true)\n return fs.existsSync(filePath)\n })\n ) {\n includePath = filePath\n }\n }\n if (!includePath) {\n throw EtaErr('Could not find the include file \"' + path + '\"')\n }\n }\n return includePath\n}\n\nfunction readFile (filePath: string) {\n return fs\n .readFileSync(filePath)\n .toString()\n .replace(_BOM, '') // TODO: is replacing BOM's necessary?\n}\n\nfunction loadFile (filePath: string, options: PartialFileConfig): TemplateFunction {\n var config = getConfig(options)\n var template = readFile(filePath)\n try {\n var compiledTemplate = Compile(template, config)\n config.templates.define((config as FileConfig).filename, compiledTemplate)\n return compiledTemplate\n } catch (e) {\n throw EtaErr('Loading file: ' + filePath + ' failed')\n }\n}\n\nexport { getPath, readFile, loadFile }\n","// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport compile from './compile'\nimport { getConfig } from './config'\nimport { getPath, readFile, loadFile } from './file-utils'\nimport { promiseImpl, copyProps } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\nexport type CallbackFn = (err: Error | null, str?: string) => void\n\ninterface FileOptions extends EtaConfig {\n filename: string\n}\n\ninterface DataObj {\n settings?: {\n [key: string]: any\n }\n [key: string]: any\n}\n\n/* END TYPES */\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache (options: FileOptions): TemplateFunction {\n var filename = options.filename\n\n if (options.cache) {\n var func = options.templates.get(filename)\n if (func) {\n return func\n } else {\n return loadFile(filename, options)\n }\n }\n\n return compile(readFile(filename), options)\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache (options: FileOptions, data: object, cb: CallbackFn) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile (path: string, options: EtaConfig) {\n // the below creates a new options object, using the parent filepath of the old options object and the path\n var newFileOptions = getConfig({ filename: getPath(path, options) }, options)\n // TODO: make sure properties are currectly copied over\n return handleCache(newFileOptions as FileOptions)\n}\n\nfunction renderFile (filename: string, data: DataObj, cb?: CallbackFn) {\n var Config: FileOptions = getConfig((data as PartialConfig) || {}) as FileOptions\n // TODO: make sure above doesn't error. We do set filename down below\n\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n Config.views = data.settings.views\n }\n if (data.settings['view cache']) {\n Config.cache = true\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n var viewOpts = data.settings['view options']\n\n if (viewOpts) {\n copyProps(Config, viewOpts)\n }\n }\n\n Config.filename = filename // Make sure filename is right\n\n return tryHandleCache(Config, data, cb as CallbackFn)\n}\n\nexport { includeFile, renderFile }\n","import { includeFile } from './file-handlers'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface GenericData {\n [index: string]: any\n}\n\n/* END TYPES */\n\nexport function includeFileHelper (this: EtaConfig, path: string, data: GenericData): string {\n return includeFile(path, this)(data, this)\n}\n\n// export function extendsFileHelper(path: string, data: GenericData, config: EtaConfig): string {\n// var data: GenericData = content.params[1] || {}\n\n// data.content = content.exec()\n// for (var i = 0; i < blocks.length; i++) {\n// var currentBlock = blocks[i]\n// data[currentBlock.name] = currentBlock.exec()\n// }\n\n// return includeFile(content.params[0], config)(data, config)\n// }\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n","/* Export file stuff */\nimport { includeFileHelper } from './file-helpers'\nimport { defaultConfig } from './config'\n\n/* TYPES */\n\n/* END TYPES */\n\ndefaultConfig.includeFile = includeFileHelper\nincludeFileHelper.bind(defaultConfig)\n\nexport { renderFile, renderFile as __express } from './file-handlers'\nexport { loadFile } from './file-utils'\n\n/* End file stuff */\n\nexport { default as compileToString } from './compile-string'\nexport { default as compile } from './compile'\nexport { default as parse } from './parse'\nexport { default as render } from './render'\nexport { templates } from './containers'\nexport { defaultConfig, getConfig } from './config'\n"],"names":["Parse","Compile","handleCache"],"mappings":"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"} \ No newline at end of file diff --git a/dist/eta.es.js.map b/dist/eta.es.js.map index 5fe4c83..81df768 100644 --- a/dist/eta.es.js.map +++ b/dist/eta.es.js.map @@ -1 +1 @@ -{"version":3,"file":"eta.es.js","sources":["../src/err.ts","../src/utils.ts","../src/parse.ts","../src/compile-string.ts","../src/storage.ts","../src/containers.ts","../src/config.ts","../src/compile.ts","../src/file-utils.ts","../src/file-handlers.ts","../src/file-helpers.ts","../src/render.ts","../src/index.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse(str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString(strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString(str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope(buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper(this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig(override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","var fs = require('fs')\nvar path = require('path')\nvar _BOM = /^\\uFEFF/\n\n// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport Compile from './compile'\nimport { getConfig } from './config'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\ninterface PartialFileConfig extends PartialConfig {\n filename: string\n}\n\ninterface FileConfig extends EtaConfig {\n filename: string\n}\n\n/* END TYPES */\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} parentfile parent file path\n * @param {Boolean} [isDir=false] whether parent file path is a directory\n * @return {String}\n */\n\nfunction getWholeFilePath (name: string, parentfile: string, isDirectory?: boolean) {\n var includePath = path.resolve(\n isDirectory ? parentfile : path.dirname(parentfile), // returns directory the parent file is in\n name // file\n )\n var ext = path.extname(name)\n if (!ext) {\n includePath += '.eta'\n }\n return includePath\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\n\nfunction getPath (path: string, options: EtaConfig) {\n var includePath\n var filePath\n var views = options.views\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path)\n\n // Abs path\n if (match && match.length) {\n includePath = getWholeFilePath(path.replace(/^\\/*/, ''), options.root || '/', true)\n } else {\n // Relative paths\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = getWholeFilePath(path, options.filename)\n if (fs.existsSync(filePath)) {\n includePath = filePath\n }\n }\n // Then look in any views directories\n if (!includePath) {\n if (\n Array.isArray(views) &&\n views.some(function (v) {\n filePath = getWholeFilePath(path, v, true)\n return fs.existsSync(filePath)\n })\n ) {\n includePath = filePath\n }\n }\n if (!includePath) {\n throw EtaErr('Could not find the include file \"' + path + '\"')\n }\n }\n return includePath\n}\n\nfunction readFile (filePath: string) {\n return fs\n .readFileSync(filePath)\n .toString()\n .replace(_BOM, '') // TODO: is replacing BOM's necessary?\n}\n\nfunction loadFile (filePath: string, options: PartialFileConfig): TemplateFunction {\n var config = getConfig(options)\n var template = readFile(filePath)\n try {\n var compiledTemplate = Compile(template, config)\n config.templates.define((config as FileConfig).filename, compiledTemplate)\n return compiledTemplate\n } catch (e) {\n throw EtaErr('Loading file: ' + filePath + ' failed')\n }\n}\n\nexport { getPath, readFile, loadFile }\n","// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport compile from './compile'\nimport { getConfig } from './config'\nimport { getPath, readFile, loadFile } from './file-utils'\nimport { promiseImpl, copyProps } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\nexport type CallbackFn = (err: Error | null, str?: string) => void\n\ninterface FileOptions extends EtaConfig {\n filename: string\n}\n\ninterface DataObj {\n settings?: {\n [key: string]: any\n }\n [key: string]: any\n}\n\n/* END TYPES */\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache (options: FileOptions): TemplateFunction {\n var filename = options.filename\n\n if (options.cache) {\n var func = options.templates.get(filename)\n if (func) {\n return func\n } else {\n return loadFile(filename, options)\n }\n }\n\n return compile(readFile(filename), options)\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache (options: FileOptions, data: object, cb: CallbackFn) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile (path: string, options: EtaConfig) {\n // the below creates a new options object, using the parent filepath of the old options object and the path\n var newFileOptions = getConfig({ filename: getPath(path, options) }, options)\n // TODO: make sure properties are currectly copied over\n return handleCache(newFileOptions as FileOptions)\n}\n\nfunction renderFile (filename: string, data: DataObj, cb?: CallbackFn) {\n var Config: FileOptions = getConfig((data as PartialConfig) || {}) as FileOptions\n // TODO: make sure above doesn't error. We do set filename down below\n\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n Config.views = data.settings.views\n }\n if (data.settings['view cache']) {\n Config.cache = true\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n var viewOpts = data.settings['view options']\n\n if (viewOpts) {\n copyProps(Config, viewOpts)\n }\n }\n\n Config.filename = filename // Make sure filename is right\n\n return tryHandleCache(Config, data, cb as CallbackFn)\n}\n\nexport { includeFile, renderFile }\n","import { includeFile } from './file-handlers'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface GenericData {\n [index: string]: any\n}\n\n/* END TYPES */\n\nexport function includeFileHelper (this: EtaConfig, path: string, data: GenericData): string {\n return includeFile(path, this)(data, this)\n}\n\n// export function extendsFileHelper(path: string, data: GenericData, config: EtaConfig): string {\n// var data: GenericData = content.params[1] || {}\n\n// data.content = content.exec()\n// for (var i = 0; i < blocks.length; i++) {\n// var currentBlock = blocks[i]\n// data[currentBlock.name] = currentBlock.exec()\n// }\n\n// return includeFile(content.params[0], config)(data, config)\n// }\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n","/* Export file stuff */\nimport { includeFileHelper } from './file-helpers'\nimport { defaultConfig } from './config'\n\n/* TYPES */\n\n/* END TYPES */\n\ndefaultConfig.includeFile = includeFileHelper\nincludeFileHelper.bind(defaultConfig)\n\nexport { renderFile, renderFile as __express } from './file-handlers'\nexport { loadFile } from './file-utils'\n\n/* End file stuff */\n\nexport { default as compileToString } from './compile-string'\nexport { default as compile } from './compile'\nexport { default as parse } from './parse'\nexport { default as render } from './render'\nexport { templates } from './containers'\nexport { defaultConfig, getConfig } from './config'\n"],"names":["Parse","Compile","handleCache"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eta.es.js","sources":["../src/err.ts","../src/utils.ts","../src/parse.ts","../src/compile-string.ts","../src/storage.ts","../src/containers.ts","../src/config.ts","../src/compile.ts","../src/file-utils.ts","../src/file-handlers.ts","../src/file-helpers.ts","../src/render.ts","../src/index.ts"],"sourcesContent":["function setPrototypeOf (obj: any, proto: any) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(obj, proto)\n } else {\n obj.__proto__ = proto\n }\n}\n\nexport default function EtaErr (message: string): Error {\n var err = new Error(message)\n setPrototypeOf(err, EtaErr.prototype)\n return err\n}\n\nEtaErr.prototype = Object.create(Error.prototype, {\n name: { value: 'Eta Error', enumerable: false }\n})\n\n// TODO: Class transpilation adds a lot to the bundle size\n\nexport function ParseErr (message: string, str: string, indx: number) {\n var whitespace = str.slice(0, indx).split(/\\n/)\n\n var lineNo = whitespace.length\n var colNo = whitespace[lineNo - 1].length + 1\n message +=\n ' at line ' +\n lineNo +\n ' col ' +\n colNo +\n ':\\n\\n' +\n ' ' +\n str.split(/\\n/)[lineNo - 1] +\n '\\n' +\n ' ' +\n Array(colNo).join(' ') +\n '^'\n throw EtaErr(message)\n}\n","// TODO: allow '-' to trim up until newline. Use [^\\S\\n\\r] instead of \\s\n// TODO: only include trimLeft polyfill if not in ES6\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface EscapeMap {\n '&': '&'\n '<': '<'\n '\"': '"'\n \"'\": '''\n [index: string]: string\n}\n\n/* END TYPES */\n\nexport var promiseImpl = new Function('return this;')().Promise\n\nexport function hasOwnProp (obj: object, prop: string) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\nexport function copyProps (toObj: T, fromObj: T, notConfig?: boolean) {\n for (var key in fromObj) {\n if (hasOwnProp((fromObj as unknown) as object, key)) {\n toObj[key] = fromObj[key]\n }\n }\n return toObj\n}\n\nfunction trimWS (\n str: string,\n env: EtaConfig,\n wsLeft: string | false,\n wsRight?: string | false\n): string {\n var leftTrim\n var rightTrim\n\n if (Array.isArray(env.autoTrim)) {\n // kinda confusing\n // but _}} will trim the left side of the following string\n leftTrim = env.autoTrim[1]\n rightTrim = env.autoTrim[0]\n } else {\n leftTrim = rightTrim = env.autoTrim\n }\n\n if (wsLeft || wsLeft === false) {\n leftTrim = wsLeft\n }\n\n if (wsRight || wsRight === false) {\n rightTrim = wsRight\n }\n\n if (!rightTrim && !leftTrim) {\n return str\n }\n\n if (leftTrim === 'slurp' && rightTrim === 'slurp') {\n return str.trim()\n }\n\n if (leftTrim === '_' || leftTrim === 'slurp') {\n // console.log('trimming left' + leftTrim)\n // full slurp\n if (String.prototype.trimLeft) {\n str = str.trimLeft()\n } else {\n str = str.replace(/^[\\s\\uFEFF\\xA0]+/, '')\n }\n } else if (leftTrim === '-' || leftTrim === 'nl') {\n // console.log('trimming left nl' + leftTrim)\n // nl trim\n str = str.replace(/^(?:\\r\\n|\\n|\\r)/, '')\n }\n\n if (rightTrim === '_' || rightTrim === 'slurp') {\n // console.log('trimming right' + rightTrim)\n // full slurp\n if (String.prototype.trimRight) {\n str = str.trimRight()\n } else {\n str = str.replace(/[\\s\\uFEFF\\xA0]+$/, '')\n }\n } else if (rightTrim === '-' || rightTrim === 'nl') {\n // console.log('trimming right nl' + rightTrim)\n // nl trim\n str = str.replace(/(?:\\r\\n|\\n|\\r)$/, '') // TODO: make sure this gets \\r\\n\n }\n\n return str\n}\n\nvar escMap: EscapeMap = {\n '&': '&',\n '<': '<',\n '\"': '"',\n \"'\": '''\n}\n\nfunction replaceChar (s: string): string {\n return escMap[s]\n}\n\nfunction XMLEscape (str: any) {\n // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n var newStr = String(str)\n if (/[&<\"']/.test(newStr)) {\n return newStr.replace(/[&<\"']/g, replaceChar)\n } else {\n return newStr\n }\n}\n\nexport { trimWS, XMLEscape }\n","import EtaErr, { ParseErr } from './err'\nimport { trimWS } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\nexport type TagType = 'r' | 'e' | 'i' | ''\n\nexport interface TemplateObject {\n t: TagType\n val: string\n}\n\nexport type AstObject = string | TemplateObject\n\n/* END TYPES */\n\nvar templateLitReg = /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g\n\nvar singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g\n\nvar doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g\n\nexport default function parse (str: string, env: EtaConfig): Array {\n var buffer: Array = []\n var trimLeftOfNextStr: string | false = false\n var lastIndex = 0\n var parseOptions = env.parse\n\n templateLitReg.lastIndex = 0\n singleQuoteReg.lastIndex = 0\n doubleQuoteReg.lastIndex = 0\n\n function pushString (strng: string, shouldTrimRightOfString?: string | false) {\n if (strng) {\n // if string is truthy it must be of type 'string'\n\n // TODO: benchmark replace( /(\\\\|')/g, '\\\\$1')\n strng = trimWS(\n strng,\n env,\n trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n shouldTrimRightOfString\n )\n\n if (strng) {\n // replace \\ with \\\\, ' with \\'\n\n strng = strng.replace(/\\\\|'/g, '\\\\$&').replace(/\\r\\n|\\n|\\r/g, '\\\\n')\n // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n buffer.push(strng)\n }\n }\n }\n\n var prefixes = (parseOptions.exec + parseOptions.interpolate + parseOptions.raw)\n .split('')\n .join('|')\n\n var parseOpenReg = new RegExp('([^]*?)' + env.tags[0] + '(-|_)?\\\\s*(' + prefixes + ')?\\\\s*', 'g')\n var parseCloseReg = new RegExp('\\'|\"|`|\\\\/\\\\*|(\\\\s*(-|_)?' + env.tags[1] + ')', 'g')\n // TODO: benchmark having the \\s* on either side vs using str.trim()\n\n var m\n\n while ((m = parseOpenReg.exec(str))) {\n // TODO: check if above needs exec(str) !== null. Don't think it's possible to have 0-width matches but...\n lastIndex = m[0].length + m.index\n\n var precedingString = m[1]\n var wsLeft = m[2]\n var prefix = m[3] || '' // by default either ~, =, or empty\n\n pushString(precedingString, wsLeft)\n\n parseCloseReg.lastIndex = lastIndex\n var closeTag\n var currentObj: AstObject | false = false\n\n while ((closeTag = parseCloseReg.exec(str))) {\n if (closeTag[1]) {\n var content = str.slice(lastIndex, closeTag.index)\n\n parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex\n\n trimLeftOfNextStr = closeTag[2]\n\n var currentType: TagType = ''\n if (prefix === parseOptions.exec) {\n currentType = 'e'\n } else if (prefix === parseOptions.raw) {\n currentType = 'r'\n } else if (prefix === parseOptions.interpolate) {\n currentType = 'i'\n }\n\n currentObj = { t: currentType, val: content }\n break\n } else {\n var char = closeTag[0]\n if (char === '/*') {\n var commentCloseInd = str.indexOf('*/', parseCloseReg.lastIndex)\n\n if (commentCloseInd === -1) {\n ParseErr('unclosed comment', str, closeTag.index)\n }\n parseCloseReg.lastIndex = commentCloseInd\n } else if (char === \"'\") {\n singleQuoteReg.lastIndex = closeTag.index\n\n var singleQuoteMatch = singleQuoteReg.exec(str)\n if (singleQuoteMatch) {\n parseCloseReg.lastIndex = singleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '\"') {\n doubleQuoteReg.lastIndex = closeTag.index\n var doubleQuoteMatch = doubleQuoteReg.exec(str)\n\n if (doubleQuoteMatch) {\n parseCloseReg.lastIndex = doubleQuoteReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n } else if (char === '`') {\n templateLitReg.lastIndex = closeTag.index\n var templateLitMatch = templateLitReg.exec(str)\n if (templateLitMatch) {\n parseCloseReg.lastIndex = templateLitReg.lastIndex\n } else {\n ParseErr('unclosed string', str, closeTag.index)\n }\n }\n }\n }\n if (currentObj) {\n buffer.push(currentObj)\n } else {\n ParseErr('unclosed tag', str, m.index + precedingString.length)\n }\n }\n\n pushString(str.slice(lastIndex, str.length), false)\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processAST) {\n buffer = plugin.processAST(buffer, env)\n }\n }\n }\n\n return buffer\n}\n","import Parse from './parse'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { AstObject } from './parse'\n\n/* END TYPES */\n\nexport default function compileToString (str: string, env: EtaConfig) {\n var buffer: Array = Parse(str, env)\n\n var res =\n \"var tR='';\" +\n (env.useWith ? 'with(' + env.varName + '||{}){' : '') +\n compileScope(buffer, env) +\n 'if(cb){cb(null,tR)} return tR' +\n (env.useWith ? '}' : '')\n\n if (env.plugins) {\n for (var i = 0; i < env.plugins.length; i++) {\n var plugin = env.plugins[i]\n if (plugin.processFnString) {\n res = plugin.processFnString(res, env)\n }\n }\n }\n\n return res\n\n // TODO: is `return cb()` necessary, or could we just do `cb()`\n}\n\nfunction compileScope (buff: Array, env: EtaConfig) {\n var i = 0\n var buffLength = buff.length\n var returnStr = ''\n\n for (i; i < buffLength; i++) {\n var currentBlock = buff[i]\n if (typeof currentBlock === 'string') {\n var str = currentBlock\n\n // we know string exists\n returnStr += \"tR+='\" + str + \"';\"\n } else {\n var type = currentBlock.t // ~, s, !, ?, r\n var content = currentBlock.val || ''\n\n if (type === 'r') {\n // raw\n returnStr += 'tR+=' + content + ';'\n } else if (type === 'i') {\n // interpolate\n if (env.autoEscape) {\n content = 'E.e(' + content + ')'\n }\n returnStr += 'tR+=' + content + ';'\n // reference\n } else if (type === 'e') {\n // execute\n returnStr += content + '\\n' // you need a \\n in case you have <% } %>\n }\n }\n }\n\n return returnStr\n}\n","import { copyProps } from './utils'\n\n/* TYPES */\n\ninterface Dict {\n // Basically, an object where all keys point to a value of the same type\n [key: string]: T\n}\n\n/* END TYPES */\n\nclass Cacher {\n constructor (private cache: Dict) {}\n define (key: string, val: T) {\n this.cache[key] = val\n }\n get (key: string) {\n // string | array.\n // TODO: allow array of keys to look down\n // TODO: create plugin to allow referencing helpers, filters with dot notation\n return this.cache[key]\n }\n remove (key: string) {\n delete this.cache[key]\n }\n reset () {\n this.cache = {}\n }\n load (cacheObj: Dict) {\n // TODO: this will err with deep objects and `storage` or `plugins` keys.\n // Update Feb 26: EDITED so it shouldn't err\n copyProps(this.cache, cacheObj, true)\n }\n}\n\nexport { Cacher }\n","import { Cacher } from './storage'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\nimport { TemplateFunction } from './compile'\n\n/* END TYPES */\n\nvar templates = new Cacher({})\n\n/* ASYNC LOOP FNs */\n\nexport { templates }\n","import { templates } from './containers'\nimport { copyProps, XMLEscape } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { TemplateFunction } from './compile'\nimport { Cacher } from './storage'\n\ntype trimConfig = 'nl' | 'slurp' | false\n\nexport interface EtaConfig {\n varName: string\n autoTrim: trimConfig | [trimConfig, trimConfig]\n autoEscape: boolean\n tags: [string, string]\n parse: {\n interpolate: string\n raw: string\n exec: string\n }\n e: (str: string) => string\n plugins: Array<{ processFnString?: Function; processAST?: Function }>\n async: boolean\n templates: Cacher\n cache: boolean\n views?: string | Array\n root?: string\n filename?: string\n name?: string\n 'view cache'?: boolean\n useWith?: boolean\n [index: string]: any\n}\n\nexport type PartialConfig = {\n [P in keyof EtaConfig]?: EtaConfig[P]\n}\n\n/* END TYPES */\n\nfunction includeHelper (this: EtaConfig, templateNameOrPath: string, data: object): string {\n var template = this.templates.get(templateNameOrPath)\n if (!template) {\n throw EtaErr('Could not fetch template \"' + templateNameOrPath + '\"')\n }\n return template(data, this)\n}\n\nvar defaultConfig: EtaConfig = {\n varName: 'it',\n autoTrim: [false, 'nl'],\n autoEscape: true,\n tags: ['<%', '%>'],\n parse: {\n interpolate: '=',\n raw: '~',\n exec: ''\n },\n async: false,\n templates: templates,\n cache: false,\n plugins: [],\n useWith: false,\n e: XMLEscape,\n include: includeHelper\n}\n\nincludeHelper.bind(defaultConfig)\n\nfunction getConfig (override: PartialConfig, baseConfig?: EtaConfig): EtaConfig {\n // TODO: run more tests on this\n\n var res: PartialConfig = {} // Linked\n copyProps(res, defaultConfig) // Creates deep clone of defaultConfig, 1 layer deep\n\n if (baseConfig) {\n copyProps(res, baseConfig)\n }\n\n if (override) {\n copyProps(res, override)\n }\n\n return res as EtaConfig\n}\n\nexport { defaultConfig, getConfig }\n","import compileToString from './compile-string'\nimport { getConfig } from './config'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { CallbackFn } from './file-handlers'\nexport type TemplateFunction = (data: object, config: EtaConfig, cb?: CallbackFn) => string\n\n/* END TYPES */\n\nexport default function compile (str: string, env?: PartialConfig): TemplateFunction {\n var options: EtaConfig = getConfig(env || {})\n var ctor // constructor\n\n /* ASYNC HANDLING */\n // The below code is modified from mde/ejs. All credit should go to them.\n if (options.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = new Function('return (async function(){}).constructor;')()\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\"This environment doesn't support async/await\")\n } else {\n throw e\n }\n }\n } else {\n ctor = Function\n }\n /* END ASYNC HANDLING */\n try {\n return new ctor(\n options.varName,\n 'E', // EtaConfig\n 'cb', // optional callback\n compileToString(str, options)\n ) as TemplateFunction // eslint-disable-line no-new-func\n } catch (e) {\n if (e instanceof SyntaxError) {\n throw EtaErr(\n 'Bad template syntax\\n\\n' +\n e.message +\n '\\n' +\n Array(e.message.length + 1).join('=') +\n '\\n' +\n compileToString(str, options)\n )\n } else {\n throw e\n }\n }\n}\n","var fs = require('fs')\nvar path = require('path')\nvar _BOM = /^\\uFEFF/\n\n// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport Compile from './compile'\nimport { getConfig } from './config'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\ninterface PartialFileConfig extends PartialConfig {\n filename: string\n}\n\ninterface FileConfig extends EtaConfig {\n filename: string\n}\n\n/* END TYPES */\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} parentfile parent file path\n * @param {Boolean} [isDir=false] whether parent file path is a directory\n * @return {String}\n */\n\nfunction getWholeFilePath (name: string, parentfile: string, isDirectory?: boolean) {\n var includePath = path.resolve(\n isDirectory ? parentfile : path.dirname(parentfile), // returns directory the parent file is in\n name // file\n )\n var ext = path.extname(name)\n if (!ext) {\n includePath += '.eta'\n }\n return includePath\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\n\nfunction getPath (path: string, options: EtaConfig) {\n var includePath\n var filePath\n var views = options.views\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path)\n\n // Abs path\n if (match && match.length) {\n includePath = getWholeFilePath(path.replace(/^\\/*/, ''), options.root || '/', true)\n } else {\n // Relative paths\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = getWholeFilePath(path, options.filename)\n if (fs.existsSync(filePath)) {\n includePath = filePath\n }\n }\n // Then look in any views directories\n if (!includePath) {\n if (\n Array.isArray(views) &&\n views.some(function (v) {\n filePath = getWholeFilePath(path, v, true)\n return fs.existsSync(filePath)\n })\n ) {\n includePath = filePath\n }\n }\n if (!includePath) {\n throw EtaErr('Could not find the include file \"' + path + '\"')\n }\n }\n return includePath\n}\n\nfunction readFile (filePath: string) {\n return fs\n .readFileSync(filePath)\n .toString()\n .replace(_BOM, '') // TODO: is replacing BOM's necessary?\n}\n\nfunction loadFile (filePath: string, options: PartialFileConfig): TemplateFunction {\n var config = getConfig(options)\n var template = readFile(filePath)\n try {\n var compiledTemplate = Compile(template, config)\n config.templates.define((config as FileConfig).filename, compiledTemplate)\n return compiledTemplate\n } catch (e) {\n throw EtaErr('Loading file: ' + filePath + ' failed')\n }\n}\n\nexport { getPath, readFile, loadFile }\n","// express is set like: app.engine('html', require('eta').renderFile)\n\nimport EtaErr from './err'\nimport compile from './compile'\nimport { getConfig } from './config'\nimport { getPath, readFile, loadFile } from './file-utils'\nimport { promiseImpl, copyProps } from './utils'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\n\nexport type CallbackFn = (err: Error | null, str?: string) => void\n\ninterface FileOptions extends EtaConfig {\n filename: string\n}\n\ninterface DataObj {\n settings?: {\n [key: string]: any\n }\n [key: string]: any\n}\n\n/* END TYPES */\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache (options: FileOptions): TemplateFunction {\n var filename = options.filename\n\n if (options.cache) {\n var func = options.templates.get(filename)\n if (func) {\n return func\n } else {\n return loadFile(filename, options)\n }\n }\n\n return compile(readFile(filename), options)\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache (options: FileOptions, data: object, cb: CallbackFn) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile (path: string, options: EtaConfig) {\n // the below creates a new options object, using the parent filepath of the old options object and the path\n var newFileOptions = getConfig({ filename: getPath(path, options) }, options)\n // TODO: make sure properties are currectly copied over\n return handleCache(newFileOptions as FileOptions)\n}\n\nfunction renderFile (filename: string, data: DataObj, cb?: CallbackFn) {\n var Config: FileOptions = getConfig((data as PartialConfig) || {}) as FileOptions\n // TODO: make sure above doesn't error. We do set filename down below\n\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n Config.views = data.settings.views\n }\n if (data.settings['view cache']) {\n Config.cache = true\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n var viewOpts = data.settings['view options']\n\n if (viewOpts) {\n copyProps(Config, viewOpts)\n }\n }\n\n Config.filename = filename // Make sure filename is right\n\n return tryHandleCache(Config, data, cb as CallbackFn)\n}\n\nexport { includeFile, renderFile }\n","import { includeFile } from './file-handlers'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig } from './config'\n\ninterface GenericData {\n [index: string]: any\n}\n\n/* END TYPES */\n\nexport function includeFileHelper (this: EtaConfig, path: string, data: GenericData): string {\n return includeFile(path, this)(data, this)\n}\n\n// export function extendsFileHelper(path: string, data: GenericData, config: EtaConfig): string {\n// var data: GenericData = content.params[1] || {}\n\n// data.content = content.exec()\n// for (var i = 0; i < blocks.length; i++) {\n// var currentBlock = blocks[i]\n// data[currentBlock.name] = currentBlock.exec()\n// }\n\n// return includeFile(content.params[0], config)(data, config)\n// }\n","import compile from './compile'\nimport { getConfig } from './config'\nimport { promiseImpl } from './utils'\nimport EtaErr from './err'\n\n/* TYPES */\n\nimport { EtaConfig, PartialConfig } from './config'\nimport { TemplateFunction } from './compile'\nimport { CallbackFn } from './file-handlers'\n\n/* END TYPES */\n\nfunction handleCache (template: string | TemplateFunction, options: EtaConfig): TemplateFunction {\n var templateFunc\n\n if (options.cache && options.name && options.templates.get(options.name)) {\n return options.templates.get(options.name)\n }\n\n if (typeof template === 'function') {\n templateFunc = template\n } else {\n templateFunc = compile(template, options)\n }\n\n if (options.cache && options.name) {\n options.templates.define(options.name, templateFunc)\n }\n\n return templateFunc\n}\n\nexport default function render (\n template: string | TemplateFunction,\n data: object,\n env?: PartialConfig,\n cb?: CallbackFn\n) {\n var options = getConfig(env || {})\n\n if (options.async) {\n var result\n if (!cb) {\n // No callback, try returning a promise\n if (typeof promiseImpl === 'function') {\n return new promiseImpl(function (resolve: Function, reject: Function) {\n try {\n result = handleCache(template, options)(data, options)\n resolve(result)\n } catch (err) {\n reject(err)\n }\n })\n } else {\n throw EtaErr(\"Please provide a callback function, this env doesn't support Promises\")\n }\n } else {\n try {\n handleCache(template, options)(data, options, cb)\n } catch (err) {\n return cb(err)\n }\n }\n } else {\n return handleCache(template, options)(data, options)\n }\n}\n","/* Export file stuff */\nimport { includeFileHelper } from './file-helpers'\nimport { defaultConfig } from './config'\n\n/* TYPES */\n\n/* END TYPES */\n\ndefaultConfig.includeFile = includeFileHelper\nincludeFileHelper.bind(defaultConfig)\n\nexport { renderFile, renderFile as __express } from './file-handlers'\nexport { loadFile } from './file-utils'\n\n/* End file stuff */\n\nexport { default as compileToString } from './compile-string'\nexport { default as compile } from './compile'\nexport { default as parse } from './parse'\nexport { default as render } from './render'\nexport { templates } from './containers'\nexport { defaultConfig, getConfig } from './config'\n"],"names":["Parse","Compile","handleCache"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 72a37cb..217c14c 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ ], "coverageThreshold": { "global": { - "branches": 85, + "branches": 84, "functions": 95, "lines": 95, "statements": 95