@tsed/engines 6.114.15 → 6.114.18

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/.nycrc CHANGED
@@ -19,8 +19,8 @@
19
19
  "json"
20
20
  ],
21
21
  "check-coverage": true,
22
- "statements": 96.39,
23
- "branches": 74.41,
24
- "functions": 96.33,
22
+ "statements": 96.38,
23
+ "branches": 75.14,
24
+ "functions": 96.27,
25
25
  "lines": 96.32
26
26
  }
@@ -8,11 +8,8 @@ const viewEngine_1 = require("../decorators/viewEngine");
8
8
  const Engine_1 = require("./Engine");
9
9
  const util_1 = require("util");
10
10
  let DustEngine = class DustEngine extends Engine_1.Engine {
11
- constructor() {
12
- super(...arguments);
13
- this.views = ".";
14
- this.ext = "dust";
15
- }
11
+ views = ".";
12
+ ext = "dust";
16
13
  configure(options) {
17
14
  if (options) {
18
15
  if (options.ext) {
@@ -1 +1 @@
1
- {"version":3,"file":"DustEngine.js","sourceRoot":"","sources":["../../../src/components/DustEngine.ts"],"names":[],"mappings":";;;;AAAA,0CAAoC;AACpC,+BAA6B;AAC7B,yDAAoD;AACpD,qCAAgC;AAChC,+BAA+B;AAK/B,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,eAAM;IAAtC;;QACU,UAAK,GAAG,GAAG,CAAC;QACZ,QAAG,GAAG,MAAM,CAAC;IA0CvB,CAAC;IAxCC,SAAS,CAAC,OAAY;QACpB,IAAI,OAAO,EAAE;YACX,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACxB;YACD,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC9C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;aACrC;SACF;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,QAAa,EAAE,EAAE;YACzD,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACnB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;aAChC;YACD,IAAI;gBACF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAA,YAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3C;YAAC,OAAO,EAAE,EAAE;gBACX,QAAQ,CAAC,EAAE,CAAC,CAAC;aACd;QACH,CAAC,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,YAAY,CAAC;QAEjB,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3H;QAED,OAAO,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAQ,CAAC;IACzE,CAAC;CACF,CAAA;AA5CY,UAAU;IAHtB,IAAA,uBAAU,EAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KAChD,CAAC;GACW,UAAU,CA4CtB;AA5CY,gCAAU","sourcesContent":["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"]}
1
+ {"version":3,"file":"DustEngine.js","sourceRoot":"","sources":["../../../src/components/DustEngine.ts"],"names":[],"mappings":";;;;AAAA,0CAAoC;AACpC,+BAA6B;AAC7B,yDAAoD;AACpD,qCAAgC;AAChC,+BAA+B;AAK/B,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,eAAM;IAC5B,KAAK,GAAG,GAAG,CAAC;IACZ,GAAG,GAAG,MAAM,CAAC;IAErB,SAAS,CAAC,OAAY;QACpB,IAAI,OAAO,EAAE;YACX,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACxB;YACD,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC9C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;aACrC;SACF;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,QAAa,EAAE,EAAE;YACzD,IAAI,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACnB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;aAChC;YACD,IAAI;gBACF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAA,YAAI,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3C;YAAC,OAAO,EAAE,EAAE;gBACX,QAAQ,CAAC,EAAE,CAAC,CAAC;aACd;QACH,CAAC,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,YAAY,CAAC;QAEjB,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3H;QAED,OAAO,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAQ,CAAC;IACzE,CAAC;CACF,CAAA;AA5CY,UAAU;IAHtB,IAAA,uBAAU,EAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KAChD,CAAC;GACW,UAAU,CA4CtB;AA5CY,gCAAU","sourcesContent":["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"]}
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Engine = void 0;
4
4
  const cache_1 = require("../utils/cache");
5
5
  class Engine {
6
+ name;
7
+ options;
8
+ driverName;
6
9
  constructor(name, options) {
7
10
  this.name = name;
8
11
  this.options = options;
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../../src/components/Engine.ts"],"names":[],"mappings":"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","sourcesContent":["import {cache, getCachedEngine, importEngine, read, readPartials} 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, readonly options: ViewEngineOptions) {}\n\n get engine(): any {\n return getCachedEngine(this.name);\n }\n\n async $onInit() {\n await this.importEngine(this.name, this.options);\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 = Object.assign({}, 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 protected importEngine(name: string, options: ViewEngineOptions) {\n const reqs = ([] as string[]).concat(options.requires || [name]);\n\n const promises = reqs.map(async (req: string) => {\n try {\n await importEngine(req, name);\n this.driverName = req;\n } catch (er) {}\n });\n\n return Promise.all(promises);\n }\n}\n"]}
1
+ {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../../src/components/Engine.ts"],"names":[],"mappings":"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","sourcesContent":["import {cache, getCachedEngine, importEngine, read, readPartials} 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, readonly options: ViewEngineOptions) {}\n\n get engine(): any {\n return getCachedEngine(this.name);\n }\n\n async $onInit() {\n await this.importEngine(this.name, this.options);\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 = Object.assign({}, 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 protected importEngine(name: string, options: ViewEngineOptions) {\n const reqs = ([] as string[]).concat(options.requires || [name]);\n\n const promises = reqs.map(async (req: string) => {\n try {\n await importEngine(req, name);\n this.driverName = req;\n } catch (er) {}\n });\n\n return Promise.all(promises);\n }\n}\n"]}
@@ -6,6 +6,7 @@ const viewEngine_1 = require("../decorators/viewEngine");
6
6
  const Engine_1 = require("./Engine");
7
7
  const fs_1 = require("fs");
8
8
  let TwingEngine = class TwingEngine extends Engine_1.Engine {
9
+ instance;
9
10
  $compile(template, options) {
10
11
  const engine = this.engine;
11
12
  if (!this.instance) {
@@ -1 +1 @@
1
- {"version":3,"file":"TwingEngine.js","sourceRoot":"","sources":["../../../src/components/TwingEngine.ts"],"names":[],"mappings":";;;;AAAA,yDAAoD;AACpD,qCAAgC;AAChC,2BAA8B;AAG9B,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,eAAM;IAG3B,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAE1C,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACpF,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnE;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACrD;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEpD,OAAO,KAAK,EAAE,OAAY,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAE3B,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,WAAW;IADvB,IAAA,uBAAU,EAAC,OAAO,CAAC;GACP,WAAW,CAwBvB;AAxBY,kCAAW","sourcesContent":["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"]}
1
+ {"version":3,"file":"TwingEngine.js","sourceRoot":"","sources":["../../../src/components/TwingEngine.ts"],"names":[],"mappings":";;;;AAAA,yDAAoD;AACpD,qCAAgC;AAChC,2BAA8B;AAG9B,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,eAAM;IAC7B,QAAQ,CAAM;IAEZ,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAE1C,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAA,eAAU,EAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACpF,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnE;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACrD;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEpD,OAAO,KAAK,EAAE,OAAY,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAE3B,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,WAAW;IADvB,IAAA,uBAAU,EAAC,OAAO,CAAC;GACP,WAAW,CAwBvB;AAxBY,kCAAW","sourcesContent":["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"]}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _VueEngine_renderToString;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.VueEngine = void 0;
5
4
  const tslib_1 = require("tslib");
@@ -22,17 +21,14 @@ function hashCode(str) {
22
21
  return str.split("").reduce((prevHash, currVal) => (prevHash << 5) - prevHash + currVal.charCodeAt(0), 0);
23
22
  }
24
23
  let VueEngine = class VueEngine extends Engine_1.Engine {
25
- constructor() {
26
- super(...arguments);
27
- _VueEngine_renderToString.set(this, void 0);
28
- }
24
+ #renderToString;
29
25
  async $onInit() {
30
26
  await super.$onInit();
31
27
  await (0, cache_1.importEngine)("vue-pronto/lib/index", "pronto");
32
28
  await (0, cache_1.importEngine)("vueify");
33
29
  await (0, cache_1.importEngine)("vue-server-renderer");
34
30
  const ssrRenderer = this.vueServerRenderer.createRenderer();
35
- tslib_1.__classPrivateFieldSet(this, _VueEngine_renderToString, (0, util_1.promisify)(ssrRenderer.renderToString.bind(this)), "f");
31
+ this.#renderToString = (0, util_1.promisify)(ssrRenderer.renderToString.bind(this));
36
32
  }
37
33
  get pronto() {
38
34
  return (0, cache_1.getCachedEngine)("pronto");
@@ -126,10 +122,9 @@ let VueEngine = class VueEngine extends Engine_1.Engine {
126
122
  async renderComponent(Component, options) {
127
123
  let Factory = this.engine.extend(Component);
128
124
  let instance = new Factory({ propsData: options });
129
- return tslib_1.__classPrivateFieldGet(this, _VueEngine_renderToString, "f").call(this, instance);
125
+ return this.#renderToString(instance);
130
126
  }
131
127
  };
132
- _VueEngine_renderToString = new WeakMap();
133
128
  VueEngine = tslib_1.__decorate([
134
129
  (0, viewEngine_1.ViewEngine)("vue", {
135
130
  requires: "vue"
@@ -1 +1 @@
1
- {"version":3,"file":"VueEngine.js","sourceRoot":"","sources":["../../../src/components/VueEngine.ts"],"names":[],"mappings":";;;;;AAAA,qCAAkE;AAClE,yDAAoD;AACpD,0CAA6D;AAC7D,+BAAmC;AACnC,+BAA+B;AAE/B,SAAS,iBAAiB,CAAC,GAAW,EAAE,QAAgB;IACtD,MAAM,MAAM,GAAQ,MAAM,CAAC,WAAW,CAAC;IACvC,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;IACvB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC;AACnB,CAAC;AAED;;;GAGG;AAEH,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAKD,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,eAAM;IAArC;;QACE,4CAAqB;IA8HvB,CAAC;IA5HC,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAA,oBAAY,EAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,IAAA,oBAAY,EAAC,qBAAqB,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAE5D,+BAAA,IAAI,6BAAmB,IAAA,gBAAS,EAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAA,CAAC;IAC1E,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAA,uBAAe,EAAC,qBAAqB,CAAC,CAAC;IAChD,CAAC;IAES,aAAa,CAAC,QAAgB,EAAE,OAAsB,EAAE,QAAkB;QAClF,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;gBACL,GAAG,OAAO;gBACV,QAAQ,EAAE,QAAQ;aACnB,CAAC;SACH;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAsB;QACzD,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE/D,OAAO,KAAK,EAAE,OAAsB,EAAE,EAAE;YACtC,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAsB;QAC/D,6EAA6E;QAC7E,2DAA2D;QAC3D,iCAAiC;QACjC,yHAAyH;QACzH,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,aAAa,GAAQ;YACzB,QAAQ;YACR,UAAU,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC;SAC7B,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,2BAA2B;YAC3B,aAAa,CAAC,YAAY,GAAG,EAAC,GAAG,EAAE,CAAC,EAAC,CAAC;SACvC;QAED,IAAI,cAAc,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAEjE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,gCAAgC;YAChC,MAAM;YACN,cAAc,CAAC,aAAa,GAAG;gBAC7B,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;gBACb,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC;aACd,CAAC;SACH;aAAM;YACL,8CAA8C;YAC9C,qDAAqD;YACrD,yDAAyD;YACzD,mFAAmF;YACnF,MAAM,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;YAEnD,cAAc,CAAC,aAAa,GAAG;gBAC7B,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC1C,GAAG,CAAC,QAAgB,EAAE,SAAc;oBAClC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;wBAC1B,GAAG,SAAS;wBACZ,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;qBACxC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;SACH;QAED,OAAO,CAAC,OAAsB,EAAE,EAAE;YAChC,OAAO,cAAc,CAAC,cAAc,CAClC,QAAQ,EACR,EAAE,EACF;gBACE,SAAS,EAAE,OAAO;aACnB,CACF,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAsB;QACnF,kEAAkE;QAClE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE;YACrC,sDAAsD;YACtD,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACzC;QAED,OAAO;YACL,QAAQ;YACR,IAAI;gBACF,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAAc,EAAE,OAAsB;QAClE,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,QAAQ,GAAG,IAAI,OAAO,CAAC,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC;QAEjD,OAAO,+BAAA,IAAI,iCAAgB,MAApB,IAAI,EAAiB,QAAQ,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;;AA/HY,SAAS;IAHrB,IAAA,uBAAU,EAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,KAAK;KAChB,CAAC;GACW,SAAS,CA+HrB;AA/HY,8BAAS","sourcesContent":["import {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {getCachedEngine, importEngine} 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 #renderToString: any;\n\n async $onInit() {\n await super.$onInit();\n await importEngine(\"vue-pronto/lib/index\", \"pronto\");\n await importEngine(\"vueify\");\n await importEngine(\"vue-server-renderer\");\n const ssrRenderer = this.vueServerRenderer.createRenderer();\n\n this.#renderToString = promisify(ssrRenderer.renderToString.bind(this));\n }\n\n get pronto() {\n return getCachedEngine(\"pronto\");\n }\n\n get vueify() {\n return getCachedEngine(\"vueify\");\n }\n\n get vueServerRenderer() {\n return getCachedEngine(\"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"]}
1
+ {"version":3,"file":"VueEngine.js","sourceRoot":"","sources":["../../../src/components/VueEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {getCachedEngine, importEngine} 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 #renderToString: any;\n\n async $onInit() {\n await super.$onInit();\n await importEngine(\"vue-pronto/lib/index\", \"pronto\");\n await importEngine(\"vueify\");\n await importEngine(\"vue-server-renderer\");\n const ssrRenderer = this.vueServerRenderer.createRenderer();\n\n this.#renderToString = promisify(ssrRenderer.renderToString.bind(this));\n }\n\n get pronto() {\n return getCachedEngine(\"pronto\");\n }\n\n get vueify() {\n return getCachedEngine(\"vueify\");\n }\n\n get vueServerRenderer() {\n return getCachedEngine(\"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"]}
@@ -1,31 +1,26 @@
1
1
  "use strict";
2
- var _EnginesContainer_providers;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.engines = exports.EnginesContainer = void 0;
5
- const tslib_1 = require("tslib");
6
4
  class EnginesContainer {
7
- constructor() {
8
- _EnginesContainer_providers.set(this, new Map());
9
- }
5
+ #providers = new Map();
10
6
  has(key) {
11
- return tslib_1.__classPrivateFieldGet(this, _EnginesContainer_providers, "f").has(key);
7
+ return this.#providers.has(key);
12
8
  }
13
9
  get(key) {
14
- const provider = tslib_1.__classPrivateFieldGet(this, _EnginesContainer_providers, "f").get(key);
10
+ const provider = this.#providers.get(key);
15
11
  if (provider && !provider.instance) {
16
12
  provider.instance = new provider.useClass(provider.name, provider.options);
17
13
  }
18
- return provider === null || provider === void 0 ? void 0 : provider.instance;
14
+ return provider?.instance;
19
15
  }
20
16
  set(key, provider) {
21
- tslib_1.__classPrivateFieldGet(this, _EnginesContainer_providers, "f").set(key, provider);
22
- tslib_1.__classPrivateFieldGet(this, _EnginesContainer_providers, "f").set(provider.name, provider);
17
+ this.#providers.set(key, provider);
18
+ this.#providers.set(provider.name, provider);
23
19
  }
24
20
  getSupportedEngines() {
25
- return [...tslib_1.__classPrivateFieldGet(this, _EnginesContainer_providers, "f").keys()].filter((key) => typeof key === "string");
21
+ return [...this.#providers.keys()].filter((key) => typeof key === "string");
26
22
  }
27
23
  }
28
24
  exports.EnginesContainer = EnginesContainer;
29
- _EnginesContainer_providers = new WeakMap();
30
25
  exports.engines = new EnginesContainer();
31
26
  //# sourceMappingURL=EnginesContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnginesContainer.js","sourceRoot":"","sources":["../../../src/registries/EnginesContainer.ts"],"names":[],"mappings":";;;;;AASA,MAAa,gBAAgB;IAA7B;QACE,sCAA0D,IAAI,GAAG,EAAE,EAAC;IAwBtE,CAAC;IAtBC,GAAG,CAAC,GAA2B;QAC7B,OAAO,+BAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,GAA2B;QAC7B,MAAM,QAAQ,GAAG,+BAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAClC,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC5E;QAED,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAkB,EAAE,QAAwB;QAC9C,+BAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,+BAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,GAAG,+BAAA,IAAI,mCAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAa,CAAC;IAC1F,CAAC;CACF;AAzBD,4CAyBC;;AAEY,QAAA,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC","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"]}
1
+ {"version":3,"file":"EnginesContainer.js","sourceRoot":"","sources":["../../../src/registries/EnginesContainer.ts"],"names":[],"mappings":";;;AASA,MAAa,gBAAgB;IAC3B,UAAU,GAAgD,IAAI,GAAG,EAAE,CAAC;IAEpE,GAAG,CAAC,GAA2B;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,GAA2B;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAClC,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC5E;QAED,OAAO,QAAQ,EAAE,QAAQ,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAkB,EAAE,QAAwB;QAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAa,CAAC;IAC1F,CAAC;CACF;AAzBD,4CAyBC;AAEY,QAAA,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC","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"]}
@@ -5,11 +5,8 @@ import { ViewEngine } from "../decorators/viewEngine.js";
5
5
  import { Engine } from "./Engine.js";
6
6
  import { promisify } from "util";
7
7
  let DustEngine = class DustEngine extends Engine {
8
- constructor() {
9
- super(...arguments);
10
- this.views = ".";
11
- this.ext = "dust";
12
- }
8
+ views = ".";
9
+ ext = "dust";
13
10
  configure(options) {
14
11
  if (options) {
15
12
  if (options.ext) {
@@ -1 +1 @@
1
- {"version":3,"file":"DustEngine.js","sourceRoot":"","sources":["../../../src/components/DustEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAC;AAK/B,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,MAAM;IAAtC;;QACU,UAAK,GAAG,GAAG,CAAC;QACZ,QAAG,GAAG,MAAM,CAAC;IA0CvB,CAAC;IAxCC,SAAS,CAAC,OAAY;QACpB,IAAI,OAAO,EAAE;YACX,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACxB;YACD,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC9C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;aACrC;SACF;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,QAAa,EAAE,EAAE;YACzD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACnB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;aAChC;YACD,IAAI;gBACF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3C;YAAC,OAAO,EAAE,EAAE;gBACX,QAAQ,CAAC,EAAE,CAAC,CAAC;aACd;QACH,CAAC,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,YAAY,CAAC;QAEjB,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3H;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAQ,CAAC;IACzE,CAAC;CACF,CAAA;AA5CY,UAAU;IAHtB,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KAChD,CAAC;GACW,UAAU,CA4CtB;SA5CY,UAAU","sourcesContent":["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"]}
1
+ {"version":3,"file":"DustEngine.js","sourceRoot":"","sources":["../../../src/components/DustEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAC;AAK/B,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,MAAM;IAC5B,KAAK,GAAG,GAAG,CAAC;IACZ,GAAG,GAAG,MAAM,CAAC;IAErB,SAAS,CAAC,OAAY;QACpB,IAAI,OAAO,EAAE;YACX,IAAI,OAAO,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;aACxB;YACD,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC9C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;aACrC;SACF;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,QAAa,EAAE,EAAE;YACzD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;gBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACnB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;aAChC;YACD,IAAI;gBACF,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3C;YAAC,OAAO,EAAE,EAAE;gBACX,QAAQ,CAAC,EAAE,CAAC,CAAC;aACd;QACH,CAAC,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAExB,IAAI,YAAY,CAAC;QAEjB,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3H;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAQ,CAAC;IACzE,CAAC;CACF,CAAA;AA5CY,UAAU;IAHtB,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KAChD,CAAC;GACW,UAAU,CA4CtB;SA5CY,UAAU","sourcesContent":["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"]}
@@ -1,5 +1,8 @@
1
1
  import { cache, getCachedEngine, importEngine, read, readPartials } from "../utils/cache.js";
2
2
  export class Engine {
3
+ name;
4
+ options;
5
+ driverName;
3
6
  constructor(name, options) {
4
7
  this.name = name;
5
8
  this.options = options;
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../../src/components/Engine.ts"],"names":[],"mappings":"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","sourcesContent":["import {cache, getCachedEngine, importEngine, read, readPartials} 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, readonly options: ViewEngineOptions) {}\n\n get engine(): any {\n return getCachedEngine(this.name);\n }\n\n async $onInit() {\n await this.importEngine(this.name, this.options);\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 = Object.assign({}, 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 protected importEngine(name: string, options: ViewEngineOptions) {\n const reqs = ([] as string[]).concat(options.requires || [name]);\n\n const promises = reqs.map(async (req: string) => {\n try {\n await importEngine(req, name);\n this.driverName = req;\n } catch (er) {}\n });\n\n return Promise.all(promises);\n }\n}\n"]}
1
+ {"version":3,"file":"Engine.js","sourceRoot":"","sources":["../../../src/components/Engine.ts"],"names":[],"mappings":"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","sourcesContent":["import {cache, getCachedEngine, importEngine, read, readPartials} 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, readonly options: ViewEngineOptions) {}\n\n get engine(): any {\n return getCachedEngine(this.name);\n }\n\n async $onInit() {\n await this.importEngine(this.name, this.options);\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 = Object.assign({}, 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 protected importEngine(name: string, options: ViewEngineOptions) {\n const reqs = ([] as string[]).concat(options.requires || [name]);\n\n const promises = reqs.map(async (req: string) => {\n try {\n await importEngine(req, name);\n this.driverName = req;\n } catch (er) {}\n });\n\n return Promise.all(promises);\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { ViewEngine } from "../decorators/viewEngine.js";
3
3
  import { Engine } from "./Engine.js";
4
4
  import { existsSync } from "fs";
5
5
  let TwingEngine = class TwingEngine extends Engine {
6
+ instance;
6
7
  $compile(template, options) {
7
8
  const engine = this.engine;
8
9
  if (!this.instance) {
@@ -1 +1 @@
1
- {"version":3,"file":"TwingEngine.js","sourceRoot":"","sources":["../../../src/components/TwingEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAC;AAG9B,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,MAAM;IAG3B,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAE1C,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACpF,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnE;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACrD;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEpD,OAAO,KAAK,EAAE,OAAY,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAE3B,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,WAAW;IADvB,UAAU,CAAC,OAAO,CAAC;GACP,WAAW,CAwBvB;SAxBY,WAAW","sourcesContent":["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"]}
1
+ {"version":3,"file":"TwingEngine.js","sourceRoot":"","sources":["../../../src/components/TwingEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,IAAI,CAAC;AAG9B,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,MAAM;IAC7B,QAAQ,CAAM;IAEZ,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAE1C,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACpF,MAAM,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnE;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SACrD;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEpD,OAAO,KAAK,EAAE,OAAY,EAAE,EAAE;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAE3B,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,WAAW;IADvB,UAAU,CAAC,OAAO,CAAC;GACP,WAAW,CAwBvB;SAxBY,WAAW","sourcesContent":["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"]}
@@ -1,5 +1,4 @@
1
- var _VueEngine_renderToString;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
1
+ import { __decorate } from "tslib";
3
2
  import { Engine } from "./Engine.js";
4
3
  import { ViewEngine } from "../decorators/viewEngine.js";
5
4
  import { getCachedEngine, importEngine } from "../utils/cache.js";
@@ -19,17 +18,14 @@ function hashCode(str) {
19
18
  return str.split("").reduce((prevHash, currVal) => (prevHash << 5) - prevHash + currVal.charCodeAt(0), 0);
20
19
  }
21
20
  let VueEngine = class VueEngine extends Engine {
22
- constructor() {
23
- super(...arguments);
24
- _VueEngine_renderToString.set(this, void 0);
25
- }
21
+ #renderToString;
26
22
  async $onInit() {
27
23
  await super.$onInit();
28
24
  await importEngine("vue-pronto/lib/index", "pronto");
29
25
  await importEngine("vueify");
30
26
  await importEngine("vue-server-renderer");
31
27
  const ssrRenderer = this.vueServerRenderer.createRenderer();
32
- __classPrivateFieldSet(this, _VueEngine_renderToString, promisify(ssrRenderer.renderToString.bind(this)), "f");
28
+ this.#renderToString = promisify(ssrRenderer.renderToString.bind(this));
33
29
  }
34
30
  get pronto() {
35
31
  return getCachedEngine("pronto");
@@ -123,10 +119,9 @@ let VueEngine = class VueEngine extends Engine {
123
119
  async renderComponent(Component, options) {
124
120
  let Factory = this.engine.extend(Component);
125
121
  let instance = new Factory({ propsData: options });
126
- return __classPrivateFieldGet(this, _VueEngine_renderToString, "f").call(this, instance);
122
+ return this.#renderToString(instance);
127
123
  }
128
124
  };
129
- _VueEngine_renderToString = new WeakMap();
130
125
  VueEngine = __decorate([
131
126
  ViewEngine("vue", {
132
127
  requires: "vue"
@@ -1 +1 @@
1
- {"version":3,"file":"VueEngine.js","sourceRoot":"","sources":["../../../src/components/VueEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {getCachedEngine, importEngine} 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 #renderToString: any;\n\n async $onInit() {\n await super.$onInit();\n await importEngine(\"vue-pronto/lib/index\", \"pronto\");\n await importEngine(\"vueify\");\n await importEngine(\"vue-server-renderer\");\n const ssrRenderer = this.vueServerRenderer.createRenderer();\n\n this.#renderToString = promisify(ssrRenderer.renderToString.bind(this));\n }\n\n get pronto() {\n return getCachedEngine(\"pronto\");\n }\n\n get vueify() {\n return getCachedEngine(\"vueify\");\n }\n\n get vueServerRenderer() {\n return getCachedEngine(\"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"]}
1
+ {"version":3,"file":"VueEngine.js","sourceRoot":"","sources":["../../../src/components/VueEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {getCachedEngine, importEngine} 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 #renderToString: any;\n\n async $onInit() {\n await super.$onInit();\n await importEngine(\"vue-pronto/lib/index\", \"pronto\");\n await importEngine(\"vueify\");\n await importEngine(\"vue-server-renderer\");\n const ssrRenderer = this.vueServerRenderer.createRenderer();\n\n this.#renderToString = promisify(ssrRenderer.renderToString.bind(this));\n }\n\n get pronto() {\n return getCachedEngine(\"pronto\");\n }\n\n get vueify() {\n return getCachedEngine(\"vueify\");\n }\n\n get vueServerRenderer() {\n return getCachedEngine(\"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"]}
@@ -1,27 +1,22 @@
1
- var _EnginesContainer_providers;
2
- import { __classPrivateFieldGet } from "tslib";
3
1
  export class EnginesContainer {
4
- constructor() {
5
- _EnginesContainer_providers.set(this, new Map());
6
- }
2
+ #providers = new Map();
7
3
  has(key) {
8
- return __classPrivateFieldGet(this, _EnginesContainer_providers, "f").has(key);
4
+ return this.#providers.has(key);
9
5
  }
10
6
  get(key) {
11
- const provider = __classPrivateFieldGet(this, _EnginesContainer_providers, "f").get(key);
7
+ const provider = this.#providers.get(key);
12
8
  if (provider && !provider.instance) {
13
9
  provider.instance = new provider.useClass(provider.name, provider.options);
14
10
  }
15
- return provider === null || provider === void 0 ? void 0 : provider.instance;
11
+ return provider?.instance;
16
12
  }
17
13
  set(key, provider) {
18
- __classPrivateFieldGet(this, _EnginesContainer_providers, "f").set(key, provider);
19
- __classPrivateFieldGet(this, _EnginesContainer_providers, "f").set(provider.name, provider);
14
+ this.#providers.set(key, provider);
15
+ this.#providers.set(provider.name, provider);
20
16
  }
21
17
  getSupportedEngines() {
22
- return [...__classPrivateFieldGet(this, _EnginesContainer_providers, "f").keys()].filter((key) => typeof key === "string");
18
+ return [...this.#providers.keys()].filter((key) => typeof key === "string");
23
19
  }
24
20
  }
25
- _EnginesContainer_providers = new WeakMap();
26
21
  export const engines = new EnginesContainer();
27
22
  //# sourceMappingURL=EnginesContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnginesContainer.js","sourceRoot":"","sources":["../../../src/registries/EnginesContainer.ts"],"names":[],"mappings":";;AASA,MAAM,OAAO,gBAAgB;IAA7B;QACE,sCAA0D,IAAI,GAAG,EAAE,EAAC;IAwBtE,CAAC;IAtBC,GAAG,CAAC,GAA2B;QAC7B,OAAO,uBAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,GAA2B;QAC7B,MAAM,QAAQ,GAAG,uBAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAClC,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC5E;QAED,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAkB,EAAE,QAAwB;QAC9C,uBAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,uBAAA,IAAI,mCAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,GAAG,uBAAA,IAAI,mCAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAa,CAAC;IAC1F,CAAC;CACF;;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC","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"]}
1
+ {"version":3,"file":"EnginesContainer.js","sourceRoot":"","sources":["../../../src/registries/EnginesContainer.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,gBAAgB;IAC3B,UAAU,GAAgD,IAAI,GAAG,EAAE,CAAC;IAEpE,GAAG,CAAC,GAA2B;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,GAA2B;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAClC,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC5E;QAED,OAAO,QAAQ,EAAE,QAAQ,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAkB,EAAE,QAAwB;QAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAa,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC","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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/engines",
3
- "version": "6.114.15",
3
+ "version": "6.114.18",
4
4
  "description": "Template engines library. Provide an API to adding custom engines from decorators.",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",
@@ -22,7 +22,7 @@
22
22
  "private": false,
23
23
  "dependencies": {
24
24
  "fs-extra": "10.0.1",
25
- "tslib": "^2.3.1"
25
+ "tslib": "2.4.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/fs-extra": "^9.0.13",