{"version":3,"sources":["jsdelivr-header.js","/npm/engines@0.4.0/index.js"],"names":[],"mappings":"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","file":"/npm/engines@0.4.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/engines@0.4.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * engines <https://github.com/assemble/engines>\n *\n * Copyright (c) 2014 Jon Schlinkert, Brian Woodward, contributors\n * Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n * Licensed under the MIT License (MIT)\n */\n\n'use strict';\n\n\n/**\n * Engines that do not support caching of their file contents should\n * use the `store()` function defined in engines.js On top of this,\n * when an engine compiles to a `Function`, these functions should either\n * be cached within engines.js or the engine itself via `options.cache`.\n *\n * This will allow users and frameworks to pass `options.cache = true`\n * for `NODE_ENV=production`, however edit the file(s) without re-loading\n * the application in development.\n */\n\nvar engines = module.exports;\n\n\n/**\n * Module dependencies.\n */\n\nvar templates = {};\n\n\n/**\n * Require cache.\n */\n\nvar cacheStore = {};\n\n\n/**\n * Require cache.\n */\n\nvar requires = {};\n\n\n/**\n * Clear the cache.\n *\n * @api public\n */\n\nengines.clearCache = function() {\n  cacheStore = {};\n};\n\n\n/**\n * Conditionally cache `compiled` template based\n * on the `options` filename and `.cache` boolean.\n *\n * @param {Object} options\n * @param {Function} compiled\n * @return {Function}\n * @api private\n */\n\nfunction cache(options, compiled) {\n  // cachable\n  if (compiled && options.filename && options.cache) {\n    delete templates[options.filename];\n    cacheStore[options.filename] = compiled;\n    return compiled;\n  }\n  // check cache\n  if (options.filename && options.cache) {\n    return cacheStore[options.filename];\n  }\n  return compiled;\n}\n\n\n/**\n * Read `path` with `options`\n * When `options.cache`\n * is true the template string will be cached.\n *\n * @param {String} path\n * @param {String} options\n * @api private\n */\n\nfunction store(path, options) {\n  var str = templates[path];\n  var cached = options.cache && str && typeof str === 'string';\n\n  // cached (only if cached is a string and not a compiled template function)\n  if (cached) return str;\n\n  // store\n  str = options.str;\n\n  // remove extraneous utf8 BOM marker\n  str = str.replace(/^\\uFEFF/, '');\n  if (options.cache) {\n    templates[path] = str;\n  }\n  return str;\n}\n\n\n/**\n * fromStringRenderer\n */\n\nfunction fromStringRenderer(name) {\n  return function(path, options) {\n    options.filename = path;\n    if (cache(options)) {\n      if ('renderSync' in engines[name]) {\n        return engines[name].renderSync('', options);\n      }\n      return engines[name].render('', options);\n    } else {\n      var str = store(path, options);\n      if ('renderSync' in engines[name]) {\n        return engines[name].renderSync(str, options);\n      }\n      return engines[name].render(str, options);\n    }\n  };\n}\n\n\nfunction waitFor() {\n  var rendered = '';\n  var error = null;\n  var done = false;\n\n  // create a callback to capture the rendered results\n  function cb (err, str) {\n    error = err;\n    rendered = str;\n    done = true;\n  }\n\n  // use all the arguments passed in\n  var args = [].slice.call(arguments);\n  var caller = args.shift();\n  var fn = args.shift();\n  args.push(cb);\n\n  if (fn) {\n    try {\n      fn.apply(caller, args);\n      while(!done) {\n        // wait until it returns;\n      }\n    } catch (err) {\n      done = true;\n      throw err;\n    }\n    if (error) throw new Error(error);\n    return rendered;\n  }\n  return;\n}\n\n\n/**\n * Jade support.\n */\n\nengines.jade = function(path, options) {\n  var engine = requires.jade;\n  if (!engine) {\n    try {\n      engine = requires.jade = require('jade');\n    } catch (err) {\n      try {\n        engine = requires.jade = require('then-jade');\n      } catch (otherError) {\n        throw err;\n      }\n    }\n  }\n  return waitFor(engine, engine.renderFile, path, options);\n};\n\n\n/**\n * Jade string support.\n */\n\nengines.jade.render = function(str, options) {\n  var engine = requires.jade;\n  if (!engine) {\n    try {\n      engine = requires.jade = require('jade');\n    } catch (err) {\n      try {\n        engine = requires.jade = require('then-jade');\n      } catch (otherError) {\n        throw err;\n      }\n    }\n  }\n  return waitFor(engine, engine.render, str, options);\n};\n\n\n/**\n * Dust support.\n */\n\n//engines.dust = fromStringRenderer('dust');\n\n/**\n * Dust string support.\n */\n\n//engines.dust.renderSync = function(str, options) {\n//  var engine = requires.dust;\n//  if (!engine) {\n//    try {\n//      engine = requires.dust = require('dust');\n//    } catch (err) {\n//      try {\n//        engine = requires.dust = require('dustjs-helpers');\n//      } catch (err) {\n//        engine = requires.dust = require('dustjs-linkedin');\n//      }\n//    }\n//  }\n\n//  var ext = 'dust';\n//  var views = '.';\n\n//  if (options) {\n//    if (options.ext) {ext = options.ext;}\n//    if (options.views) {views = options.views;}\n//    if (options.settings && options.settings.views) {views = options.settings.views;}\n//  }\n//  if (!options || (options && !options.cache)) {engine.cache = {};}\n\n//  engine.onLoad = function(path, callback) {\n//    if ('' === extname(path)) {path += '.' + ext;}\n//    if ('/' !== path[0]) {path = views + '/' + path;}\n//    var str = store(path, options);\n//    callback(null, str);\n//  };\n\n//  try {\n//    var tmpl = cache(options) || cache(options, engine.compileFn(str));\n//    return waitFor(engine, tmpl, options);\n//  } catch (err) {\n//    throw err;\n//  }\n//};\n\n\n/**\n * Swig support.\n */\n\nengines.swig = fromStringRenderer('swig');\n\n/**\n * Swig string support.\n */\n\nengines.swig.renderSync = function(str, options) {\n  var engine = requires.swig || (requires.swig = require('swig'));\n  try {\n    if(options.cache === true) options.cache = 'memory';\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Atpl support.\n */\n\nengines.atpl = fromStringRenderer('atpl');\n\n/**\n * Atpl string support.\n */\n\nengines.atpl.renderSync = function(str, options) {\n  var engine = requires.atpl || (requires.atpl = require('atpl'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Liquor support,\n */\n\nengines.liquor = fromStringRenderer('liquor');\n\n/**\n * Liquor string support.\n */\n\nengines.liquor.renderSync = function(str, options) {\n  var engine = requires.liquor || (requires.liquor = require('liquor'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * EJS support.\n */\n\nengines.ejs = fromStringRenderer('ejs');\n\n/**\n * EJS string support.\n */\n\nengines.ejs.renderSync = function(str, options) {\n  var engine = requires.ejs || (requires.ejs = require('ejs'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Eco support.\n */\n\nengines.eco = fromStringRenderer('eco');\n\n/**\n * Eco string support.\n */\n\nengines.eco.render = function(str, options) {\n  var engine = requires.eco || (requires.eco = require('eco'));\n  try {\n    return engine.render(str, options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Jazz support.\n */\n\nengines.jazz = fromStringRenderer('jazz');\n\n/**\n * Jazz string support.\n */\n\nengines.jazz.renderSync = function(str, options) {\n  var engine = requires.jazz || (requires.jazz = require('jazz'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return waitFor(null, function (cb) {\n      tmpl.eval(options, function (str) {\n        cb(null, str);\n      });\n    });\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * JQTPL support.\n */\n\nengines.jqtpl = fromStringRenderer('jqtpl');\n\n/**\n * JQTPL string support.\n */\n\nengines.jqtpl.renderSync = function(str, options) {\n  var engine = requires.jqtpl || (requires.jqtpl = require('jqtpl'));\n  try {\n    engine.template(str, str);\n    return engine.tmpl(str, options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Haml support.\n */\n\nengines.haml = fromStringRenderer('haml');\n\n/**\n * Haml string support.\n */\n\nengines.haml.render = function(str, options) {\n  var engine = requires.hamljs || (requires.hamljs = require('hamljs'));\n  try {\n    options.locals = options;\n    return engine.render(str, options).trimLeft();\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Whiskers support.\n */\n\n//engines.whiskers = function(path, options) {\n//  var engine = requires.whiskers || (requires.whiskers = require('whiskers'));\n//  return waitFor(engine, engine.__express, path, options);\n//};\n\nengines.whiskers = fromStringRenderer('whiskers');\n\n/**\n * Whiskers string support.\n */\n\nengines.whiskers.render = function(str, options) {\n  var engine = requires.whiskers || (requires.whiskers = require('whiskers'));\n  try {\n    return engine.render(str, options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Coffee-HAML support.\n */\n\nengines['haml-coffee'] = fromStringRenderer('haml-coffee');\n\n/**\n * Coffee-HAML string support.\n */\n\nengines['haml-coffee'].renderSync = function(str, options) {\n  var engine = requires.HAMLCoffee || (requires.HAMLCoffee = require('haml-coffee'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Hogan support.\n */\n\nengines.hogan = fromStringRenderer('hogan');\n\n/**\n * Hogan string support.\n */\n\nengines.hogan.render = function(str, options) {\n  var engine = requires.hogan || (requires.hogan = require('hogan.js'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl.render(options, options.partials);\n  } catch (err) {\n  }\n};\n\n\n/**\n * templayed.js support.\n */\n\nengines.templayed = fromStringRenderer('templayed');\n\n/**\n * templayed.js string support.\n */\n\nengines.templayed.renderSync = function(str, options) {\n  var engine = requires.templayed || (requires.templayed = require('templayed'));\n  try {\n    var tmpl = cache(options) || cache(options, engine(str));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Handlebars support.\n */\n\nengines.handlebars = fromStringRenderer('handlebars');\n\n/**\n * Handlebars string support.\n */\n\nengines.handlebars.renderSync = function(str, options) {\n  var engine = requires.handlebars || (requires.handlebars = require('handlebars'));\n  try {\n    for (var partial in options.partials) {\n      engine.registerPartial(partial, options.partials[partial]);\n    }\n    for (var helper in options.helpers) {\n      engine.registerHelper(helper, options.helpers[helper]);\n    }\n    var tmpl = cache(options) || cache(options, engine.compile(str, options));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Underscore support.\n */\n\nengines.underscore = fromStringRenderer('underscore');\n\n/**\n * Underscore string support.\n */\n\nengines.underscore.renderSync = function(str, options) {\n  var engine = requires.underscore || (requires.underscore = require('underscore'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.template(str, null, options));\n    return tmpl(options).replace(/\\n$/, '');\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Lodash support.\n */\n\nengines.lodash = fromStringRenderer('lodash');\n\n/**\n * Lodash string support.\n */\n\nengines.lodash.renderSync = function(str, options) {\n  var engine = requires.lodash || (requires.lodash = require('lodash'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.template(str, null, options));\n    return tmpl(options).replace(/\\n$/, '');\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * QEJS support.\n */\n\n//engines.qejs = fromStringRenderer('qejs');\n\n/**\n * QEJS string support.\n */\n\n//engines.qejs.renderSync = function(str, options) {\n//  try {\n//    var engine = requires.qejs || (requires.qejs = require('qejs'));\n//    // wrap the promise with the waitFor and a callback\n//    return waitFor(null, function (cb) {\n//      engine.renderSync(str, options).then(function(result) {\n//          cb(null, result);\n//      }, function(err) {\n//          cb(err);\n//      }).done();\n//    });\n//  } catch (err) {\n//    throw err;\n//  }\n//};\n\n\n/**\n * Walrus support.\n */\n\nengines.walrus = fromStringRenderer('walrus');\n\n/**\n * Walrus string support.\n */\n\nengines.walrus.renderSync = function(str, options) {\n  var engine = requires.walrus || (requires.walrus = require('walrus'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.parse(str));\n    return tmpl.compile(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Mustache support.\n */\n\nengines.mustache = fromStringRenderer('mustache');\n\n/**\n * Mustache string support.\n */\n\nengines.mustache.renderSync = function(str, options) {\n  var engine = requires.mustache || (requires.mustache = require('mustache'));\n  try {\n    return engine.to_html(str, options, options.partials);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Just support.\n */\n\n//engines.just = function(path, options) {\n//  var engine = requires.just;\n//  if (!engine) {\n//    var JUST = require('just');\n//    engine = requires.just = new JUST();\n//  }\n//  engine.configure({ useCache: options.cache });\n//  return waitFor(null, engine.renderSync, path, options);\n//};\n\n\n/**\n * Just string support.\n */\n\n//engines.just.renderSync = function(str, options) {\n//  var JUST = require('just');\n//  var engine = new JUST({ root: { page: str }});\n//  return waitFor(engine, engine.renderSync, 'page', options);\n//};\n\n\n/**\n * ECT support.\n */\n\nengines.ect = function(path, options) {\n  var engine = requires.ect;\n  if (!engine) {\n    var ECT = require('ect');\n    engine = requires.ect = new ECT();\n  }\n  engine.configure({ cache: options.cache });\n  return waitFor(engine, engine.render, path, options);\n};\n\n\n/**\n * ECT string support.\n */\n\nengines.ect.render = function(str, options) {\n  var ECT = require('ect');\n  var engine = new ECT({ root: { page: str }});\n  return waitFor(engine, engine.render, 'page', options);\n};\n\n\n/**\n * mote support.\n */\n\nengines.mote = fromStringRenderer('mote');\n\n/**\n * mote string support.\n */\n\nengines.mote.renderSync = function(str, options) {\n  var engine = requires.mote || (requires.mote = require('mote'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Toffee support.\n */\n\nengines.toffee = function(path, options) {\n  var toffee = requires.toffee || (requires.toffee = require('toffee'));\n  return waitFor(toffee, toffee.__consolidate_engine_render, path, options);\n};\n\n\n/**\n * Toffee string support.\n */\n\nengines.toffee.renderSync = function(str, options) {\n  var engine = requires.toffee || (requires.toffee = require('toffee'));\n  try {\n  \treturn waitFor(engine, engine.str_render, str, options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * doT support.\n */\n\nengines.dot = fromStringRenderer('dot');\n\n/**\n * doT string support.\n */\n\nengines.dot.renderSync = function(str, options) {\n  var engine = requires.dot || (requires.dot = require('dot'));\n  try {\n    var tmpl = cache(options) || cache(options, engine.compile(str, options && options._def));\n    return tmpl(options);\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Ractive support.\n */\n\nengines.ractive = fromStringRenderer('ractive');\n\n/**\n * Ractive string support.\n */\n\nengines.ractive.renderSync = function(str, options) {\n  var engine = requires.ractive || (requires.ractive = require('ractive'));\n\n  options.template = str;\n  if (options.data === null || options.data === undefined)\n  {\n    options.data = options;\n  }\n\n  try {\n    return new engine(options).renderHTML();\n  } catch (err) {\n    throw err;\n  }\n};\n\n\n/**\n * Nunjucks support.\n */\n\nengines.nunjucks = fromStringRenderer('nunjucks');\n\n/**\n * Nunjucks string support.\n */\n\nengines.nunjucks.renderSync = function(str, options) {\n  var engine = requires.nunjucks || (requires.nunjucks = require('nunjucks'));\n  return waitFor(engine, engine.renderString, str, options);\n};\n"]}