@tsed/engines 1.1.5 → 7.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mocharc.js +5 -0
- package/.nycrc +26 -0
- package/lib/cjs/components/AtplEngine.js +13 -0
- package/lib/cjs/components/AtplEngine.js.map +1 -0
- package/lib/cjs/components/BracketEngine.js +18 -0
- package/lib/cjs/components/BracketEngine.js.map +1 -0
- package/lib/cjs/components/DotEngine.js +20 -0
- package/lib/cjs/components/DotEngine.js.map +1 -0
- package/lib/cjs/components/DustEngine.js +60 -0
- package/lib/cjs/components/DustEngine.js.map +1 -0
- package/lib/cjs/components/EctEngine.js +27 -0
- package/lib/cjs/components/EctEngine.js.map +1 -0
- package/lib/cjs/components/EjsEngine.js +13 -0
- package/lib/cjs/components/EjsEngine.js.map +1 -0
- package/lib/cjs/components/Engine.js +63 -0
- package/lib/cjs/components/Engine.js.map +1 -0
- package/lib/cjs/components/HamlCoffeeEngine.js +13 -0
- package/lib/cjs/components/HamlCoffeeEngine.js.map +1 -0
- package/lib/cjs/components/HamlEngine.js +19 -0
- package/lib/cjs/components/HamlEngine.js.map +1 -0
- package/lib/cjs/components/HamletEngine.js +19 -0
- package/lib/cjs/components/HamletEngine.js.map +1 -0
- package/lib/cjs/components/HandlebarsEngine.js +25 -0
- package/lib/cjs/components/HandlebarsEngine.js.map +1 -0
- package/lib/cjs/components/HoganEngine.js +21 -0
- package/lib/cjs/components/HoganEngine.js.map +1 -0
- package/lib/cjs/components/HtmlingEngine.js +17 -0
- package/lib/cjs/components/HtmlingEngine.js.map +1 -0
- package/lib/cjs/components/JazzEngine.js +17 -0
- package/lib/cjs/components/JazzEngine.js.map +1 -0
- package/lib/cjs/components/JqtplEngine.js +17 -0
- package/lib/cjs/components/JqtplEngine.js.map +1 -0
- package/lib/cjs/components/JustEngine.js +27 -0
- package/lib/cjs/components/JustEngine.js.map +1 -0
- package/lib/cjs/components/LiquorEngine.js +13 -0
- package/lib/cjs/components/LiquorEngine.js.map +1 -0
- package/lib/cjs/components/LodashEngine.js +20 -0
- package/lib/cjs/components/LodashEngine.js.map +1 -0
- package/lib/cjs/components/MarkoEngine.js +29 -0
- package/lib/cjs/components/MarkoEngine.js.map +1 -0
- package/lib/cjs/components/MoteEngine.js +13 -0
- package/lib/cjs/components/MoteEngine.js.map +1 -0
- package/lib/cjs/components/MustacheEngine.js +16 -0
- package/lib/cjs/components/MustacheEngine.js.map +1 -0
- package/lib/cjs/components/NunjucksEngine.js +56 -0
- package/lib/cjs/components/NunjucksEngine.js.map +1 -0
- package/lib/cjs/components/PlatesEngine.js +19 -0
- package/lib/cjs/components/PlatesEngine.js.map +1 -0
- package/lib/cjs/components/PugEngine.js +21 -0
- package/lib/cjs/components/PugEngine.js.map +1 -0
- package/lib/cjs/components/RactiveEngine.js +37 -0
- package/lib/cjs/components/RactiveEngine.js.map +1 -0
- package/lib/cjs/components/ReactEngine.js +136 -0
- package/lib/cjs/components/ReactEngine.js.map +1 -0
- package/lib/cjs/components/SlmEngine.js +13 -0
- package/lib/cjs/components/SlmEngine.js.map +1 -0
- package/lib/cjs/components/SquirrellyEngine.js +23 -0
- package/lib/cjs/components/SquirrellyEngine.js.map +1 -0
- package/lib/cjs/components/SwigEngine.js +21 -0
- package/lib/cjs/components/SwigEngine.js.map +1 -0
- package/lib/cjs/components/TemplayedEngine.js +16 -0
- package/lib/cjs/components/TemplayedEngine.js.map +1 -0
- package/lib/cjs/components/ToffeeEngine.js +22 -0
- package/lib/cjs/components/ToffeeEngine.js.map +1 -0
- package/lib/cjs/components/TwigEngine.js +28 -0
- package/lib/cjs/components/TwigEngine.js.map +1 -0
- package/lib/cjs/components/TwingEngine.js +29 -0
- package/lib/cjs/components/TwingEngine.js.map +1 -0
- package/lib/cjs/components/UnderscoreEngine.js +28 -0
- package/lib/cjs/components/UnderscoreEngine.js.map +1 -0
- package/lib/cjs/components/VashEngine.js +35 -0
- package/lib/cjs/components/VashEngine.js.map +1 -0
- package/lib/cjs/components/VelocityEngine.js +18 -0
- package/lib/cjs/components/VelocityEngine.js.map +1 -0
- package/lib/cjs/components/VueEngine.js +139 -0
- package/lib/cjs/components/VueEngine.js.map +1 -0
- package/lib/cjs/components/WalrusEngine.js +17 -0
- package/lib/cjs/components/WalrusEngine.js.map +1 -0
- package/lib/cjs/decorators/viewEngine.js +11 -0
- package/lib/cjs/decorators/viewEngine.js.map +1 -0
- package/lib/cjs/index.js +49 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/registries/EnginesContainer.js +31 -0
- package/lib/cjs/registries/EnginesContainer.js.map +1 -0
- package/lib/cjs/utils/cache.js +140 -0
- package/lib/cjs/utils/cache.js.map +1 -0
- package/lib/cjs/utils/getEngines.js +47 -0
- package/lib/cjs/utils/getEngines.js.map +1 -0
- package/lib/esm/components/AtplEngine.js +10 -0
- package/lib/esm/components/AtplEngine.js.map +1 -0
- package/lib/esm/components/BracketEngine.js +15 -0
- package/lib/esm/components/BracketEngine.js.map +1 -0
- package/lib/esm/components/DotEngine.js +17 -0
- package/lib/esm/components/DotEngine.js.map +1 -0
- package/lib/esm/components/DustEngine.js +57 -0
- package/lib/esm/components/DustEngine.js.map +1 -0
- package/lib/esm/components/EctEngine.js +24 -0
- package/lib/esm/components/EctEngine.js.map +1 -0
- package/lib/esm/components/EjsEngine.js +10 -0
- package/lib/esm/components/EjsEngine.js.map +1 -0
- package/lib/esm/components/Engine.js +59 -0
- package/lib/esm/components/Engine.js.map +1 -0
- package/lib/esm/components/HamlCoffeeEngine.js +10 -0
- package/lib/esm/components/HamlCoffeeEngine.js.map +1 -0
- package/lib/esm/components/HamlEngine.js +16 -0
- package/lib/esm/components/HamlEngine.js.map +1 -0
- package/lib/esm/components/HamletEngine.js +16 -0
- package/lib/esm/components/HamletEngine.js.map +1 -0
- package/lib/esm/components/HandlebarsEngine.js +22 -0
- package/lib/esm/components/HandlebarsEngine.js.map +1 -0
- package/lib/esm/components/HoganEngine.js +18 -0
- package/lib/esm/components/HoganEngine.js.map +1 -0
- package/lib/esm/components/HtmlingEngine.js +14 -0
- package/lib/esm/components/HtmlingEngine.js.map +1 -0
- package/lib/esm/components/JazzEngine.js +14 -0
- package/lib/esm/components/JazzEngine.js.map +1 -0
- package/lib/esm/components/JqtplEngine.js +14 -0
- package/lib/esm/components/JqtplEngine.js.map +1 -0
- package/lib/esm/components/JustEngine.js +24 -0
- package/lib/esm/components/JustEngine.js.map +1 -0
- package/lib/esm/components/LiquorEngine.js +10 -0
- package/lib/esm/components/LiquorEngine.js.map +1 -0
- package/lib/esm/components/LodashEngine.js +17 -0
- package/lib/esm/components/LodashEngine.js.map +1 -0
- package/lib/esm/components/MarkoEngine.js +26 -0
- package/lib/esm/components/MarkoEngine.js.map +1 -0
- package/lib/esm/components/MoteEngine.js +10 -0
- package/lib/esm/components/MoteEngine.js.map +1 -0
- package/lib/esm/components/MustacheEngine.js +13 -0
- package/lib/esm/components/MustacheEngine.js.map +1 -0
- package/lib/esm/components/NunjucksEngine.js +53 -0
- package/lib/esm/components/NunjucksEngine.js.map +1 -0
- package/lib/esm/components/PlatesEngine.js +16 -0
- package/lib/esm/components/PlatesEngine.js.map +1 -0
- package/lib/esm/components/PugEngine.js +18 -0
- package/lib/esm/components/PugEngine.js.map +1 -0
- package/lib/esm/components/RactiveEngine.js +34 -0
- package/lib/esm/components/RactiveEngine.js.map +1 -0
- package/lib/esm/components/ReactEngine.js +133 -0
- package/lib/esm/components/ReactEngine.js.map +1 -0
- package/lib/esm/components/SlmEngine.js +10 -0
- package/lib/esm/components/SlmEngine.js.map +1 -0
- package/lib/esm/components/SquirrellyEngine.js +20 -0
- package/lib/esm/components/SquirrellyEngine.js.map +1 -0
- package/lib/esm/components/SwigEngine.js +18 -0
- package/lib/esm/components/SwigEngine.js.map +1 -0
- package/lib/esm/components/TemplayedEngine.js +13 -0
- package/lib/esm/components/TemplayedEngine.js.map +1 -0
- package/lib/esm/components/ToffeeEngine.js +19 -0
- package/lib/esm/components/ToffeeEngine.js.map +1 -0
- package/lib/esm/components/TwigEngine.js +25 -0
- package/lib/esm/components/TwigEngine.js.map +1 -0
- package/lib/esm/components/TwingEngine.js +26 -0
- package/lib/esm/components/TwingEngine.js.map +1 -0
- package/lib/esm/components/UnderscoreEngine.js +25 -0
- package/lib/esm/components/UnderscoreEngine.js.map +1 -0
- package/lib/esm/components/VashEngine.js +32 -0
- package/lib/esm/components/VashEngine.js.map +1 -0
- package/lib/esm/components/VelocityEngine.js +15 -0
- package/lib/esm/components/VelocityEngine.js.map +1 -0
- package/lib/esm/components/VueEngine.js +136 -0
- package/lib/esm/components/VueEngine.js.map +1 -0
- package/lib/esm/components/WalrusEngine.js +14 -0
- package/lib/esm/components/WalrusEngine.js.map +1 -0
- package/lib/esm/decorators/viewEngine.js +7 -0
- package/lib/esm/decorators/viewEngine.js.map +1 -0
- package/lib/esm/index.js +46 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/package.json +3 -0
- package/lib/esm/registries/EnginesContainer.js +27 -0
- package/lib/esm/registries/EnginesContainer.js.map +1 -0
- package/lib/esm/utils/cache.js +127 -0
- package/lib/esm/utils/cache.js.map +1 -0
- package/lib/esm/utils/getEngines.js +42 -0
- package/lib/esm/utils/getEngines.js.map +1 -0
- package/lib/{components → types/components}/AtplEngine.d.ts +0 -0
- package/lib/{components → types/components}/BracketEngine.d.ts +0 -0
- package/lib/{components → types/components}/DotEngine.d.ts +0 -0
- package/lib/{components → types/components}/DustEngine.d.ts +0 -0
- package/lib/{components → types/components}/EctEngine.d.ts +0 -0
- package/lib/{components → types/components}/EjsEngine.d.ts +0 -0
- package/lib/{components → types/components}/Engine.d.ts +4 -1
- package/lib/{components → types/components}/HamlCoffeeEngine.d.ts +0 -0
- package/lib/{components → types/components}/HamlEngine.d.ts +0 -0
- package/lib/{components → types/components}/HamletEngine.d.ts +0 -0
- package/lib/{components → types/components}/HandlebarsEngine.d.ts +0 -0
- package/lib/{components → types/components}/HoganEngine.d.ts +0 -0
- package/lib/{components → types/components}/HtmlingEngine.d.ts +0 -0
- package/lib/{components → types/components}/JazzEngine.d.ts +0 -0
- package/lib/{components → types/components}/JqtplEngine.d.ts +0 -0
- package/lib/{components → types/components}/JustEngine.d.ts +0 -0
- package/lib/{components → types/components}/LiquorEngine.d.ts +0 -0
- package/lib/{components → types/components}/LodashEngine.d.ts +0 -0
- package/lib/{components → types/components}/MarkoEngine.d.ts +0 -0
- package/lib/{components → types/components}/MoteEngine.d.ts +0 -0
- package/lib/{components → types/components}/MustacheEngine.d.ts +0 -0
- package/lib/{components → types/components}/NunjucksEngine.d.ts +0 -0
- package/lib/{components → types/components}/PlatesEngine.d.ts +0 -0
- package/lib/{components → types/components}/PugEngine.d.ts +0 -0
- package/lib/{components → types/components}/RactiveEngine.d.ts +0 -0
- package/lib/{components → types/components}/ReactEngine.d.ts +3 -0
- package/lib/{components → types/components}/SlmEngine.d.ts +0 -0
- package/lib/{components → types/components}/SquirrellyEngine.d.ts +0 -0
- package/lib/{components → types/components}/SwigEngine.d.ts +0 -0
- package/lib/{components → types/components}/TemplayedEngine.d.ts +0 -0
- package/lib/{components → types/components}/ToffeeEngine.d.ts +0 -0
- package/lib/{components → types/components}/TwigEngine.d.ts +0 -0
- package/lib/{components → types/components}/TwingEngine.d.ts +0 -0
- package/lib/{components → types/components}/UnderscoreEngine.d.ts +0 -0
- package/lib/{components → types/components}/VashEngine.d.ts +0 -0
- package/lib/{components → types/components}/VelocityEngine.d.ts +0 -0
- package/lib/{components → types/components}/VueEngine.d.ts +2 -2
- package/lib/{components → types/components}/WalrusEngine.d.ts +0 -0
- package/lib/{decorators → types/decorators}/viewEngine.d.ts +0 -0
- package/lib/{index.d.ts → types/index.d.ts} +6 -3
- package/lib/{registries → types/registries}/EnginesContainer.d.ts +0 -0
- package/lib/{utils → types/utils}/cache.d.ts +3 -3
- package/lib/{utils → types/utils}/getEngines.d.ts +0 -0
- package/package.json +34 -26
- package/readme.md +89 -88
- package/tsconfig.compile.esm.json +25 -0
- package/lib/index.js +0 -1211
- package/lib/index.js.map +0 -1
- package/lib/index.modern.js +0 -1198
- package/lib/index.modern.js.map +0 -1
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/registries/EnginesContainer.ts","../src/decorators/viewEngine.ts","../src/utils/cache.ts","../src/components/Engine.ts","../src/components/AtplEngine.ts","../src/components/BracketEngine.ts","../src/components/DotEngine.ts","../src/components/DustEngine.ts","../src/components/EctEngine.ts","../src/components/EjsEngine.ts","../src/components/HamlEngine.ts","../src/components/HamlCoffeeEngine.ts","../src/components/HamletEngine.ts","../src/components/HandlebarsEngine.ts","../src/components/HoganEngine.ts","../src/components/HtmlingEngine.ts","../src/components/JazzEngine.ts","../src/components/JqtplEngine.ts","../src/components/JustEngine.ts","../src/components/LiquorEngine.ts","../src/components/LodashEngine.ts","../src/components/MarkoEngine.ts","../src/components/MoteEngine.ts","../src/components/MustacheEngine.ts","../src/components/NunjucksEngine.ts","../src/components/PlatesEngine.ts","../src/components/PugEngine.ts","../src/components/RactiveEngine.ts","../src/components/ReactEngine.ts","../src/components/SlmEngine.ts","../src/components/SquirrellyEngine.ts","../src/components/SwigEngine.ts","../src/components/TemplayedEngine.ts","../src/components/ToffeeEngine.ts","../src/components/TwingEngine.ts","../src/components/TwigEngine.ts","../src/components/UnderscoreEngine.ts","../src/components/VashEngine.ts","../src/components/VelocityEngine.ts","../src/components/VueEngine.ts","../src/components/WalrusEngine.ts","../src/utils/getEngines.ts"],"sourcesContent":["import {Engine, ViewEngineOptions} from \"../components/Engine\";\n\nexport interface EngineProvider {\n name: string;\n useClass: typeof Engine;\n instance?: Engine;\n options: ViewEngineOptions;\n}\n\nexport class EnginesContainer {\n #providers: Map<string | typeof Engine, EngineProvider> = new Map();\n\n has(key: string | typeof Engine) {\n return this.#providers.has(key);\n }\n\n get(key: string | typeof Engine) {\n const provider = this.#providers.get(key);\n\n if (provider && !provider.instance) {\n provider.instance = new provider.useClass(provider.name, provider.options);\n }\n\n return provider?.instance;\n }\n\n set(key: typeof Engine, provider: EngineProvider) {\n this.#providers.set(key, provider);\n this.#providers.set(provider.name, provider);\n }\n\n getSupportedEngines(): string[] {\n return [...this.#providers.keys()].filter((key) => typeof key === \"string\") as string[];\n }\n}\n\nexport const engines = new EnginesContainer();\n","import {ViewEngineOptions} from \"../components/Engine\";\nimport {engines} from \"../registries/EnginesContainer\";\n\nexport function ViewEngine(name: string, options: ViewEngineOptions = {}): ClassDecorator {\n return (target: any) => {\n engines.set(target, {name, useClass: target, options});\n };\n}\n","import fs from \"fs-extra\";\nimport {dirname, extname, isAbsolute, join} from \"path\";\nimport {Engine} from \"../components/Engine\";\n\nconst readCache: Map<string, string> = new Map();\nconst cacheStore: Map<string, any> = new Map();\n\nexport const requires: Map<string, any> = new Map();\nexport const extend = require(\"util\")._extend;\n\nexport function requireEngine(name: string, toName: string = name) {\n if (!requires.has(toName)) {\n setRequireEngine(name, toName);\n }\n\n return requires.get(toName);\n}\n\nexport function setRequireEngine(name: string, toName: string = name) {\n requires.set(toName, require(name));\n}\n\nexport function setToCache(key: string, value: any) {\n readCache.set(key, value);\n}\n\nexport function getFromCache(key: string) {\n return readCache.get(key);\n}\n\n/**\n * Clear the cache.\n *\n * @api public\n */\n\nexport const clearCache = () => {\n readCache.clear();\n cacheStore.clear();\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 */\nexport function cache(options: any, compiled?: any) {\n // cachable\n if (compiled && options.filename && options.cache) {\n readCache.delete(options.filename);\n cacheStore.set(options.filename, compiled);\n return compiled;\n }\n\n // check cache\n if (options.filename && options.cache) {\n return cacheStore.get(options.filename);\n }\n\n return compiled;\n}\n\n/**\n * Read `path` with `options` with\n * callback `(err, str)`. When `options.cache`\n * is true the template string will be cached.\n *\n * @param path\n * @param {String} options\n */\nexport async function read(path: string, options: any): Promise<string> {\n let str = readCache.get(path);\n\n // cached (only if cached is a string and not a compiled template function)\n if (options.cache && str && typeof str === \"string\") {\n return str;\n }\n\n // read\n str = await fs.readFile(path, \"utf8\");\n\n // remove extraneous utf8 BOM marker\n str = str.replace(/^\\uFEFF/, \"\");\n\n if (options.cache) {\n readCache.set(path, str);\n }\n\n return str;\n}\n\n/**\n * Read `path` with `options` with\n * callback `(err, str)`. When `options.cache`\n * is true the partial string will be cached.\n *\n * @param path\n * @param {String} options\n * @api private\n */\nexport async function readPartials(path: string, options: any): Promise<Record<string, string> | void> {\n if (!options.partials) {\n return;\n }\n\n const keys = Object.keys(options.partials);\n const partials: Record<string, string> = {};\n\n return new Promise((resolve, reject) => {\n async function next(index: number): Promise<any> {\n if (index === keys.length) {\n return resolve(partials);\n }\n\n const key = keys[index];\n const partialPath = options.partials[key];\n\n if (partialPath === undefined || partialPath === null || partialPath === false) {\n return next(++index);\n }\n\n let file;\n if (isAbsolute(partialPath)) {\n if (extname(partialPath) !== \"\") {\n file = partialPath;\n } else {\n file = join(partialPath + extname(path));\n }\n } else {\n file = join(dirname(path), partialPath + extname(path));\n }\n\n try {\n partials[key] = await read(file, options);\n next(++index);\n } catch (err) {\n reject(err);\n }\n }\n\n next(0);\n });\n}\n","import {cache, extend, read, readPartials, requireEngine} from \"../utils/cache\";\n\nexport interface ViewEngineOptions {\n requires?: string | string[];\n}\n\nexport interface EngineOptions {\n cache?: boolean;\n\n [otherOptions: string]: any;\n}\n\nexport class Engine {\n protected driverName: string;\n\n constructor(readonly name: string, options: ViewEngineOptions) {\n const reqs = ([] as string[]).concat(options.requires || [name]);\n\n reqs.forEach((req: string) => {\n try {\n requireEngine(req, name);\n this.driverName = req;\n } catch (er) {}\n });\n }\n\n get engine(): any {\n return requireEngine(this.name);\n }\n\n compile(template: string, options: EngineOptions) {\n options = this.$cacheOptions(template, options, false);\n\n return cache(options) || cache(options, this.$compile.call(this, template, options));\n }\n\n compileFile(file: string, options: EngineOptions) {\n options = this.$cacheOptions(file, options, true);\n\n return cache(options) || cache(options, this.$compileFile.call(this, file, options));\n }\n\n async render(template: string, options: EngineOptions) {\n const compile = await this.compile(template, options);\n\n return compile(options);\n }\n\n async renderFile(file: string, options: EngineOptions) {\n const opts = await this.readPartials(file, options);\n const compile = await this.compileFile(file, opts);\n\n return compile(opts);\n }\n\n protected async readPartials(file: string, options: EngineOptions) {\n options.filename = file;\n const partials = await readPartials(file, options);\n\n const opts = extend({}, options);\n opts.partials = partials;\n\n return opts;\n }\n\n protected $cacheOptions(template: string, options: EngineOptions, fromFile?: boolean) {\n return options;\n }\n\n protected $compile(template: string, options: EngineOptions): (options: EngineOptions) => Promise<string> {\n return this.engine.compile(template, options);\n }\n\n protected async $compileFile(file: string, options: EngineOptions) {\n const template = await read(file, options);\n return this.$compile(template, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"atpl\")\nexport class AtplEngine extends Engine {}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"bracket\", {\n requires: \"bracket-template\"\n})\nexport class BracketEngine extends Engine {\n protected $compile(template: string, options: any) {\n return this.engine.default.compile(template, options);\n }\n}\n","import {extend} from \"../utils/cache\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"dot\")\nexport class DotEngine extends Engine {\n getSettings(options: any) {\n const settings = extend({}, this.engine.templateSettings);\n return extend(settings, options ? options.dot : {});\n }\n\n protected $compile(template: string, options: any) {\n return this.engine.template(template, this.getSettings(options), options);\n }\n}\n","import {read} from \"../utils/cache\";\nimport {extname} from \"path\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\nimport {promisify} from \"util\";\n\n@ViewEngine(\"dust\", {\n requires: [\"dustjs-helpers\", \"dustjs-linkedin\"]\n})\nexport class DustEngine extends Engine {\n private views = \".\";\n private ext = \"dust\";\n\n configure(options: any) {\n if (options) {\n if (options.ext) {\n this.ext = options.ext;\n }\n if (options.views) {\n this.views = options.views;\n }\n if (options.settings && options.settings.views) {\n this.views = options.settings.views;\n }\n }\n if (!options || (options && !options.cache)) this.engine.cache = {};\n\n this.engine.onLoad = async (path: string, callback: any) => {\n if (extname(path) === \"\") {\n path += `.${this.ext}`;\n }\n if (path[0] !== \"/\") {\n path = `${this.views}/${path}`;\n }\n try {\n callback(null, await read(path, options));\n } catch (er) {\n callback(er);\n }\n };\n }\n\n protected $compile(template: string, options: any) {\n this.configure(options);\n\n let templateName;\n\n if (options.filename) {\n templateName = options.filename.replace(new RegExp(\"^\" + this.views + \"/\"), \"\").replace(new RegExp(\"\\\\.\" + this.ext), \"\");\n }\n\n return promisify(this.engine.compileFn(template, templateName)) as any;\n }\n}\n","import {promisify} from \"util\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"ect\")\nexport class EctEngine extends Engine {\n protected $compile(template: string, options: any) {\n const ECT = this.engine;\n const engine = new ECT({root: {page: template}});\n const compile = promisify(engine.render.bind(engine));\n\n return (options: any) => compile(\"page\", options);\n }\n\n protected async $compileFile(file: string, options: any) {\n const ECT = this.engine;\n const engine = new ECT(options);\n engine.configure({cache: options.cache});\n const compile = promisify(engine.render.bind(engine));\n\n return (options: any) => compile(file, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"ejs\")\nexport class EjsEngine extends Engine {}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"haml\")\nexport class HamlEngine extends Engine {\n protected $compile(template: string, options: any) {\n return (options: any) => {\n options.locals = options;\n return Promise.resolve(this.engine.render(template, options).trimLeft());\n };\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"haml-coffee\")\nexport class HamlCoffeeEngine extends Engine {}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"hamlet\")\nexport class HamletEngine extends Engine {\n protected $compile(template: string, options: any) {\n return (options: any) => {\n options.locals = options;\n return Promise.resolve(this.engine.render(template, options).trimLeft());\n };\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"handlebars\")\nexport class HandlebarsEngine extends Engine {\n protected configure(options: any) {\n for (const partial in options.partials) {\n this.engine.registerPartial(partial, options.partials[partial]);\n }\n for (const helper in options.helpers) {\n this.engine.registerHelper(helper, options.helpers[helper]);\n }\n }\n\n protected $compile(template: string, options: any) {\n this.configure(options);\n return this.engine.compile(template, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions} from \"./Engine\";\n\n@ViewEngine(\"hogan\", {\n requires: \"hogan.js\"\n})\nexport class HoganEngine extends Engine {\n protected $compile(template: string, options: EngineOptions) {\n const compile = this.engine.compile(template, options);\n return (options: EngineOptions) => {\n return compile.render(options, options.partials);\n };\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"htmling\")\nexport class HtmlingEngine extends Engine {\n protected $compile(template: string) {\n const compile = this.engine.string(template);\n\n return (options: any) => compile.render(options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"jazz\")\nexport class JazzEngine extends Engine {\n protected $compile(template: string, options: any) {\n const compile = this.engine.compile(template, options);\n return (options: any) => new Promise<string>((resolve) => compile.eval(options, resolve));\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"jqtpl\")\nexport class JqtplEngine extends Engine {\n protected $compile(template: string, options: any) {\n this.engine.template(template, template);\n return (options: any) => this.engine.tmpl(template, options);\n }\n}\n","import {promisify} from \"util\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"just\")\nexport class JustEngine extends Engine {\n protected $compile(template: string, options: any) {\n const JUST = this.engine;\n const engine = new JUST({root: {page: template}});\n const compile = promisify(engine.render.bind(engine));\n\n return (options: any) => compile(\"page\", options);\n }\n\n protected async $compileFile(file: string, options: any) {\n const JUST = this.engine;\n const engine = new JUST(options);\n engine.configure({useCache: options.cache});\n const compile = promisify(engine.render.bind(engine));\n\n return (options: any) => compile(file, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"liquor\")\nexport class LiquorEngine extends Engine {}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"lodash\")\nexport class LodashEngine extends Engine {\n render(template: string, options: any) {\n const compile = this.compile(template, options);\n return compile(options).replace(/\\n$/, \"\");\n }\n\n protected $compile(template: string, options: any) {\n return this.engine.template(template, options);\n }\n}\n","import {promisify} from \"util\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions} from \"./Engine\";\n\n@ViewEngine(\"marko\")\nexport class MarkoEngine extends Engine {\n $cacheOptions(template: string, options: any, fromFile: boolean): any {\n options.writeToDisk = !!options.cache;\n\n if (!fromFile) {\n options.filename = options.filename || \"string.marko\";\n }\n\n return options;\n }\n\n async $compileFile(file: string, options: EngineOptions) {\n const $cmp = this.engine.load(file, options);\n\n return promisify($cmp.renderToString.bind($cmp)) as any;\n }\n\n protected $compile(template: string, options: EngineOptions) {\n const $cmp = this.engine.load(options.filename, template, options);\n\n return promisify($cmp.renderToString.bind($cmp)) as any;\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"mote\")\nexport class MoteEngine extends Engine {}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"mustache\")\nexport class MustacheEngine extends Engine {\n protected $compile(template: string, options: any) {\n return (options: any) => this.engine.render(template, options, options.partials);\n }\n}\n","import {promisify} from \"util\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"nunjucks\")\nexport class NunjucksEngine extends Engine {\n protected configure(options: any) {\n const engine = options.nunjucksEnv || this.engine;\n let env = engine;\n\n // deprecated fallback support for express\n // <https://github.com/tj/consolidate.js/pull/152>\n // <https://github.com/tj/consolidate.js/pull/224>\n if (options.settings && options.settings.views) {\n env = engine.configure(options.settings.views);\n } else if (options.nunjucks && options.nunjucks.configure) {\n // eslint-disable-next-line prefer-spread\n env = engine.configure.apply(engine, options.nunjucks.configure);\n }\n\n //\n // because `renderString` does not initiate loaders\n // we must manually create a loader for it based off\n // either `options.settings.views` or `options.nunjucks` or `options.nunjucks.root`\n //\n // <https://github.com/mozilla/nunjucks/issues/730>\n // <https://github.com/crocodilejs/node-email-templates/issues/182>\n //\n\n // so instead we simply check if we passed a custom loader\n // otherwise we create a simple file based loader\n if (options.loader) {\n return new engine.Environment(options.loader);\n }\n\n if (options.settings && options.settings.views) {\n return new engine.Environment(new engine.FileSystemLoader(options.settings.views));\n }\n\n if (options.nunjucks && options.nunjucks.loader) {\n if (typeof options.nunjucks.loader === \"string\") {\n return new engine.Environment(new engine.FileSystemLoader(options.nunjucks.loader));\n }\n\n return new engine.Environment(new engine.FileSystemLoader(options.nunjucks.loader[0], options.nunjucks.loader[1]));\n }\n\n return env;\n }\n\n protected $compile(template: string, options: any) {\n let engine = this.configure(options);\n\n const render = promisify(engine.renderString.bind(engine));\n\n return (options: any) => render(template, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"plates\")\nexport class PlatesEngine extends Engine {\n protected $compile(template: string, options: any) {\n return (options: any) => {\n const map = options.map || undefined;\n return this.engine.bind(template, options, map);\n };\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"pug\", {\n requires: [\"pug\", \"then-pug\"]\n})\nexport class PugEngine extends Engine {\n protected $compile(template: string, options: any) {\n return this.engine.compile(template, options);\n }\n\n protected async $compileFile(file: string, options: any) {\n return this.engine.compileFile(file, options);\n }\n}\n","import {extend} from \"../utils/cache\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions} from \"./Engine\";\n\n@ViewEngine(\"ractive\")\nexport class RactiveEngine extends Engine {\n protected $compile(template: string, options: EngineOptions) {\n const Engine = this.engine;\n const compile = this.engine.parse(template);\n\n return (options: EngineOptions) => {\n options.template = compile;\n return new Engine(this.clean(options)).toHTML();\n };\n }\n\n protected clean(options: any) {\n if (options.data === null || options.data === undefined) {\n // Shallow clone the options object\n options.data = extend({}, options);\n\n // Remove consolidate-specific properties from the clone\n let i;\n let length;\n let properties = [\"template\", \"filename\", \"cache\", \"partials\"];\n\n for (i = 0, length = properties.length; i < length; i++) {\n const property = properties[i];\n delete options.data[property];\n }\n }\n\n return options;\n }\n}\n","import {resolve} from \"path\";\nimport {readFileSync} from \"fs\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {getFromCache, requireEngine, setToCache} from \"../utils/cache\";\n\n@ViewEngine(\"react\", {\n requires: [\"react\"]\n})\nexport class ReactEngine extends Engine {\n constructor(name: string, options: ViewEngineOptions) {\n super(name, options);\n this.patchRequire();\n }\n\n protected patchRequire() {\n if (require.extensions) {\n // Ensure JSX is transformed on require\n if (!require.extensions[\".jsx\"]) {\n require.extensions[\".jsx\"] = this.requireReact.bind(this);\n }\n\n // Supporting .react extension as well as test cases\n // Using .react extension is not recommended.\n if (!require.extensions[\".react\"]) {\n require.extensions[\".react\"] = this.requireReact.bind(this);\n }\n }\n }\n\n protected configure(options: EngineOptions) {\n const base = options.base;\n delete options.base;\n\n const enableCache = options.cache;\n delete options.cache;\n\n const isNonStatic = options.isNonStatic;\n delete options.isNonStatic;\n return {base, enableCache, isNonStatic};\n }\n\n protected $compile(template: string, options: EngineOptions) {\n // Assign HTML Base\n const {base, enableCache, isNonStatic} = this.configure(options);\n\n // Start Conversion\n const ReactDOM = requireEngine(\"react-dom/server\", \"ReactDOM\");\n const Code = this.requireReactString(template);\n const Factory = this.engine.createFactory(Code);\n\n return () => {\n const parsed = new Factory(options);\n const content = isNonStatic ? ReactDOM.renderToString(parsed) : ReactDOM.renderToStaticMarkup(parsed);\n\n if (base) {\n options.content = content;\n\n return this.renderWithBase(template, base, enableCache, options);\n }\n\n return content;\n };\n }\n\n protected async $compileFile(file: string, options: EngineOptions) {\n // Assign HTML Base\n const {base, enableCache, isNonStatic} = this.configure(options);\n\n let path = resolve(file);\n delete require.cache[path];\n\n const ReactDOM = requireEngine(\"react-dom/server\", \"ReactDOM\");\n const Code = require(path);\n const Factory = this.engine.createFactory(Code);\n\n return () => {\n const parsed = new Factory(options);\n const content = isNonStatic ? ReactDOM.renderToString(parsed) : ReactDOM.renderToStaticMarkup(parsed);\n\n if (base) {\n options.content = content;\n\n return this.renderWithBase(file, base, enableCache, options);\n }\n\n return content;\n };\n }\n\n protected renderWithBase(key: string, base: any, enableCache: undefined | boolean, options: EngineOptions) {\n const baseStr = getFromCache(key) || readFileSync(resolve(base), \"utf8\");\n\n if (enableCache) {\n setToCache(key, baseStr);\n }\n\n return this.reactBaseTmpl(baseStr, options);\n }\n\n protected transformFileSync(filename: string) {\n try {\n const babel = requireEngine(\"@babel/core\", \"babel\");\n return babel.transformFileSync(filename, {presets: [\"@babel/preset-react\"]}).code;\n } catch (err) {\n const babel = requireEngine(\"babel-core\", \"babel\");\n return babel.transformFileSync(filename, {presets: [\"react\"]}).code;\n }\n }\n\n protected transform(src: string) {\n try {\n const babel = requireEngine(\"@babel/core\", \"babel\");\n return babel.transform(src, {presets: [\"@babel/preset-react\"]}).code;\n } catch (err) {\n const babel = requireEngine(\"babel-core\", \"babel\");\n return babel.transform(src, {presets: [\"react\"]}).code;\n }\n }\n\n protected requireReact(module: any, filename: string) {\n const compiled = this.transformFileSync(filename);\n return module._compile(compiled, filename);\n }\n\n protected requireReactString(src: string, filename?: string) {\n if (!filename) filename = \"\";\n // @ts-ignore\n const m = new module.constructor();\n filename = filename || \"\";\n\n // Compile Using React\n const compiled = this.transform(src);\n\n // Compile as a module\n m.paths = module.paths;\n m._compile(compiled, filename);\n\n return m.exports;\n }\n\n protected reactBaseTmpl(data: any, options: any) {\n let exp: any;\n let regex: any;\n\n // Iterates through the keys in file object\n // and interpolate / replace {{key}} with it's value\n for (const k in options) {\n if (options.hasOwnProperty(k)) {\n exp = `{{${k}}}`;\n regex = new RegExp(exp, \"g\");\n if (data.match(regex)) {\n data = data.replace(regex, options[k]);\n }\n }\n }\n\n return data;\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"slm\")\nexport class SlmEngine extends Engine {}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions} from \"./Engine\";\n\n@ViewEngine(\"squirrelly\")\nexport class SquirrellyEngine extends Engine {\n protected $compile(template: string, options: EngineOptions) {\n for (const partial in options.partials) {\n this.engine.definePartial(partial, options.partials[partial]);\n }\n for (const helper in options.helpers) {\n this.engine.defineHelper(helper, options.helpers[helper]);\n }\n\n const compile = this.engine.Compile(template, options);\n\n return (options: EngineOptions) => compile(options, this.engine);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"swig\", {\n requires: [\"swig\", \"swig-templates\"]\n})\nexport class SwigEngine extends Engine {\n protected $compile(template: string, options: any): (options: any) => Promise<string> {\n if (options.cache === true) options.cache = \"memory\";\n this.engine.setDefaults({cache: options.cache});\n\n return this.engine.compile(template, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"templayed\")\nexport class TemplayedEngine extends Engine {\n protected $compile(template: string, options: any) {\n return this.engine(template);\n }\n}\n","import {promisify} from \"util\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"toffee\")\nexport class ToffeeEngine extends Engine {\n protected $compile(template: string, options: any) {\n const compile = promisify(this.engine.str_render.bind(this.engine));\n\n return (options: any) => compile(template, options);\n }\n\n protected async $compileFile(file: string, options: any) {\n const compile = promisify(this.engine.__consolidate_engine_render.bind(this.engine));\n\n return (options: any) => compile(file, options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\nimport {existsSync} from \"fs\";\n\n@ViewEngine(\"twing\")\nexport class TwingEngine extends Engine {\n private instance: any;\n\n protected $compile(template: string, options: any): (options: any) => Promise<string> {\n const engine = this.engine;\n\n if (!this.instance) {\n let loader = new engine.TwingLoaderNull();\n\n if (options.settings && options.settings.views && existsSync(options.settings.views)) {\n loader = new engine.TwingLoaderFilesystem(options.settings.views);\n }\n\n this.instance = new engine.TwingEnvironment(loader);\n }\n\n const $cmp = this.instance.createTemplate(template);\n\n return async (options: any) => {\n const compile = await $cmp;\n\n return compile.render(options);\n };\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions} from \"./Engine\";\n\n@ViewEngine(\"twig\")\nexport class TwigEngine extends Engine {\n protected $cacheOptions(template: string, options: any) {\n return {\n ...options,\n data: template,\n allowInlineIncludes: options.allowInlineIncludes,\n namespaces: options.namespaces,\n path: options.path\n };\n }\n\n protected $compile(template: string, options: EngineOptions) {\n const {twig: engine} = this.engine;\n options.data = template;\n\n const compile = engine(options);\n\n return (options: EngineOptions) => compile.render(options);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"underscore\")\nexport class UnderscoreEngine extends Engine {\n async render(template: string, options: any) {\n const tpl: string = await this.compile(template, options)(options);\n return tpl.replace(/\\n$/, \"\");\n }\n\n protected $cacheOptions(template: string, options: any): any {\n const partials: any = {};\n\n for (const partial in options.partials) {\n partials[partial] = this.engine.template(options.partials[partial]);\n }\n\n options.partials = partials;\n\n return options;\n }\n\n protected $compile(template: string, options: any): (options: any) => Promise<string> {\n return this.engine.template(template, null, options);\n }\n}\n","import {promisify} from \"util\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"vash\")\nexport class VashEngine extends Engine {\n compile(template: string, options: any): (options: any) => Promise<string> {\n if (options.helpers) {\n for (const key in options.helpers) {\n if (!options.helpers.hasOwnProperty(key) || typeof options.helpers[key] !== \"function\") {\n continue;\n }\n this.engine.helpers[key] = options.helpers[key];\n }\n }\n\n const compile = promisify(this.engine.compile(template, options));\n\n return async (options: any) => {\n const ctx = await compile(options);\n ctx.finishLayout();\n return ctx.toString();\n };\n }\n\n async render(template: string, options: any) {\n const compile = this.compile(template, options);\n\n const tpl = await compile(options);\n return tpl.replace(/\\n$/, \"\");\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions} from \"./Engine\";\n\n@ViewEngine(\"velocityjs\")\nexport class VelocityEngine extends Engine {\n protected $compile(template: string, options: EngineOptions) {\n return async (options: EngineOptions) => {\n return this.engine.render(template, options).trimLeft();\n };\n }\n}\n","import {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {requireEngine} from \"../utils/cache\";\nimport {join, resolve} from \"path\";\nimport {promisify} from \"util\";\n\nfunction requireFromString(src: string, filename: string) {\n const Module: any = module.constructor;\n const m = new Module();\n m._compile(src, filename);\n return m.exports;\n}\n\n/**\n * simple hash a string\n * https://stackoverflow.com/a/34842797/493756\n */\n\nfunction hashCode(str: string) {\n return str.split(\"\").reduce((prevHash, currVal) => (prevHash << 5) - prevHash + currVal.charCodeAt(0), 0);\n}\n\n@ViewEngine(\"vue\", {\n requires: \"vue\"\n})\nexport class VueEngine extends Engine {\n readonly #renderToString: any;\n\n constructor(name: string, options: ViewEngineOptions) {\n super(name, options);\n\n const ssrRenderer = this.vueServerRenderer.createRenderer();\n this.#renderToString = promisify(ssrRenderer.renderToString.bind(this));\n requireEngine(\"vue-pronto/lib/index\", \"pronto\");\n }\n\n get pronto() {\n return requireEngine(\"pronto\");\n }\n\n get vueify() {\n return requireEngine(\"vueify\");\n }\n\n get vueServerRenderer() {\n return requireEngine(\"vue-server-renderer\");\n }\n\n protected $cacheOptions(template: string, options: EngineOptions, fromFile?: boolean): EngineOptions {\n const fullPath = join(__dirname, `/${hashCode(template)}`);\n\n if (!fromFile) {\n return {\n ...options,\n filename: fullPath\n };\n }\n\n return options;\n }\n\n protected $compile(template: string, options: EngineOptions) {\n // make up a fake path\n const fullPath = join(__dirname, `/${hashCode(template)}`);\n const promise = this.getComponent(fullPath, template, options);\n\n return async (options: EngineOptions) => {\n return this.renderComponent(await promise, options);\n };\n }\n\n protected async $compileFile(file: string, options: EngineOptions) {\n // prontoRenderer assume that the filepath is relative to a passed \"rootpath\"\n // and if you don't pass a rootpath it will try to find one\n // based on its current __dirname\n // https://github.com/express-vue/vue-pronto/blob/c88e380fee8656bc3ed21c7d3adb2ef331be07d5/lib/utils/findPaths.js#L10-L18\n const fullPath = resolve(file);\n const rootPath = process.cwd();\n const filepath = fullPath.replace(`${rootPath}/`, \"\");\n const prontoOptions: any = {\n rootPath,\n vueVersion: {disabled: true}\n };\n\n if (!options.cache) {\n // disable pronto lru cache\n prontoOptions.cacheOptions = {max: 0};\n }\n\n let prontoRenderer = new this.pronto.ProntoVueify(prontoOptions);\n\n if (!options.cache) {\n // disable pronto internal cache\n // yup\n prontoRenderer.internalCache = {\n get: () => {},\n set: () => {}\n };\n } else {\n // so, this ties each \"renderer\" to a rootPath\n // so I have to create a new prontoRenderer each time\n // which sucks! because I loose the internal cache of it,\n // unless, I keep tabs on both lru and internal caches and replace them every time.\n const internalCache = prontoRenderer.internalCache;\n\n prontoRenderer.internalCache = {\n get: internalCache.get.bind(internalCache),\n set(filename: string, component: any) {\n internalCache.set(filename, {\n ...component,\n data: component.data || (() => options)\n });\n }\n };\n }\n\n return (options: EngineOptions) => {\n return prontoRenderer.RenderToString(\n filepath,\n {},\n {\n propsData: options\n }\n );\n };\n }\n\n private async getComponent(fullPath: string, template: string, options: EngineOptions) {\n // assume that the str the content of a <template> ... </template>\n if (/<template/.test(template.trim())) {\n // assume that the str is a fileContent of a .vue file\n const compile = promisify(this.vueify.compiler.compile.bind(this.vueify.compiler));\n const cmp = await compile(template, fullPath);\n return requireFromString(cmp, fullPath);\n }\n\n return {\n template,\n data() {\n return options;\n }\n };\n }\n\n private async renderComponent(Component: any, options: EngineOptions) {\n let Factory = this.engine.extend(Component);\n let instance = new Factory({propsData: options});\n\n return this.#renderToString(instance);\n }\n}\n","import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"walrus\")\nexport class WalrusEngine extends Engine {\n protected $compile(template: string, options: any) {\n const compile = this.engine.parse(template);\n\n return (options: any) => compile.compile(options);\n }\n}\n","import {EngineOptions} from \"../components/Engine\";\nimport {engines} from \"../registries/EnginesContainer\";\n\nexport type RenderCallback = (err: Error | null, str?: string | any) => any;\nexport interface EngineFunction {\n (path: string, options: any, cb: RenderCallback): void;\n (path: string, options: any): Promise<string>;\n\n render(template: string, options: any, cb: RenderCallback): void;\n render(template: string, options: any): Promise<string>;\n}\n\nconst callbackify = async (fn: any, cb?: RenderCallback) => {\n try {\n const html = await fn();\n cb && cb(null, html);\n return html;\n } catch (er) {\n if (cb) {\n cb(er);\n } else {\n throw er;\n }\n }\n};\n\nexport function getEngine(name: string): EngineFunction {\n const cb = async (path: string, options: any, cb?: RenderCallback) => {\n return callbackify(() => engines.get(name)!.renderFile(path, options), cb);\n };\n\n cb.render = async (template: string, options: EngineOptions, cb: RenderCallback) => {\n return callbackify(() => engines.get(name)!.render(template, options), cb);\n };\n\n return cb as any;\n}\n\nlet localEngines: any;\n\nexport function getEngines(): Record<string, EngineFunction> {\n localEngines =\n localEngines ||\n engines.getSupportedEngines().reduce((acc, key) => {\n return {\n ...acc,\n [key]: getEngine(key)\n };\n }, {});\n\n return localEngines;\n}\n"],"names":["EnginesContainer","constructor","Map","has","key","get","provider","instance","useClass","name","options","set","getSupportedEngines","keys","filter","engines","ViewEngine","target","readCache","cacheStore","requires","extend","require","_extend","requireEngine","toName","setRequireEngine","setToCache","value","getFromCache","clearCache","clear","cache","compiled","filename","delete","read","path","str","fs","readFile","replace","readPartials","partials","Object","Promise","resolve","reject","next","index","length","partialPath","undefined","file","isAbsolute","extname","join","dirname","err","Engine","reqs","concat","forEach","req","driverName","er","engine","compile","template","$cacheOptions","$compile","call","compileFile","$compileFile","render","renderFile","opts","fromFile","AtplEngine","BracketEngine","default","DotEngine","getSettings","settings","templateSettings","dot","DustEngine","configure","ext","views","onLoad","callback","templateName","RegExp","promisify","compileFn","EctEngine","ECT","root","page","bind","EjsEngine","HamlEngine","locals","trimLeft","HamlCoffeeEngine","HamletEngine","HandlebarsEngine","partial","registerPartial","helper","helpers","registerHelper","HoganEngine","HtmlingEngine","string","JazzEngine","eval","JqtplEngine","tmpl","JustEngine","JUST","useCache","LiquorEngine","LodashEngine","MarkoEngine","writeToDisk","$cmp","load","renderToString","MoteEngine","MustacheEngine","NunjucksEngine","nunjucksEnv","env","nunjucks","apply","loader","Environment","FileSystemLoader","renderString","PlatesEngine","map","PugEngine","RactiveEngine","parse","clean","toHTML","data","i","properties","property","ReactEngine","patchRequire","extensions","requireReact","base","enableCache","isNonStatic","ReactDOM","Code","requireReactString","Factory","createFactory","parsed","content","renderToStaticMarkup","renderWithBase","baseStr","readFileSync","reactBaseTmpl","transformFileSync","babel","presets","code","transform","src","module","_compile","m","paths","exports","exp","regex","k","hasOwnProperty","match","SlmEngine","SquirrellyEngine","definePartial","defineHelper","Compile","SwigEngine","setDefaults","TemplayedEngine","ToffeeEngine","str_render","__consolidate_engine_render","TwingEngine","TwingLoaderNull","existsSync","TwingLoaderFilesystem","TwingEnvironment","createTemplate","TwigEngine","allowInlineIncludes","namespaces","twig","UnderscoreEngine","tpl","VashEngine","ctx","finishLayout","toString","VelocityEngine","requireFromString","Module","hashCode","split","reduce","prevHash","currVal","charCodeAt","VueEngine","ssrRenderer","vueServerRenderer","createRenderer","pronto","vueify","fullPath","__dirname","promise","getComponent","renderComponent","rootPath","process","cwd","filepath","prontoOptions","vueVersion","disabled","cacheOptions","max","prontoRenderer","ProntoVueify","internalCache","component","RenderToString","propsData","test","trim","compiler","cmp","Component","WalrusEngine","callbackify","fn","cb","html","getEngine","localEngines","getEngines","acc"],"mappings":"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"}
|