@tsed/engines 1.1.4 → 7.0.0-beta.5

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.
Files changed (226) hide show
  1. package/.mocharc.js +5 -0
  2. package/.nycrc +26 -0
  3. package/lib/cjs/components/AtplEngine.js +13 -0
  4. package/lib/cjs/components/AtplEngine.js.map +1 -0
  5. package/lib/cjs/components/BracketEngine.js +18 -0
  6. package/lib/cjs/components/BracketEngine.js.map +1 -0
  7. package/lib/cjs/components/DotEngine.js +20 -0
  8. package/lib/cjs/components/DotEngine.js.map +1 -0
  9. package/lib/cjs/components/DustEngine.js +60 -0
  10. package/lib/cjs/components/DustEngine.js.map +1 -0
  11. package/lib/cjs/components/EctEngine.js +27 -0
  12. package/lib/cjs/components/EctEngine.js.map +1 -0
  13. package/lib/cjs/components/EjsEngine.js +13 -0
  14. package/lib/cjs/components/EjsEngine.js.map +1 -0
  15. package/lib/cjs/components/Engine.js +63 -0
  16. package/lib/cjs/components/Engine.js.map +1 -0
  17. package/lib/cjs/components/HamlCoffeeEngine.js +13 -0
  18. package/lib/cjs/components/HamlCoffeeEngine.js.map +1 -0
  19. package/lib/cjs/components/HamlEngine.js +19 -0
  20. package/lib/cjs/components/HamlEngine.js.map +1 -0
  21. package/lib/cjs/components/HamletEngine.js +19 -0
  22. package/lib/cjs/components/HamletEngine.js.map +1 -0
  23. package/lib/cjs/components/HandlebarsEngine.js +25 -0
  24. package/lib/cjs/components/HandlebarsEngine.js.map +1 -0
  25. package/lib/cjs/components/HoganEngine.js +21 -0
  26. package/lib/cjs/components/HoganEngine.js.map +1 -0
  27. package/lib/cjs/components/HtmlingEngine.js +17 -0
  28. package/lib/cjs/components/HtmlingEngine.js.map +1 -0
  29. package/lib/cjs/components/JazzEngine.js +17 -0
  30. package/lib/cjs/components/JazzEngine.js.map +1 -0
  31. package/lib/cjs/components/JqtplEngine.js +17 -0
  32. package/lib/cjs/components/JqtplEngine.js.map +1 -0
  33. package/lib/cjs/components/JustEngine.js +27 -0
  34. package/lib/cjs/components/JustEngine.js.map +1 -0
  35. package/lib/cjs/components/LiquorEngine.js +13 -0
  36. package/lib/cjs/components/LiquorEngine.js.map +1 -0
  37. package/lib/cjs/components/LodashEngine.js +20 -0
  38. package/lib/cjs/components/LodashEngine.js.map +1 -0
  39. package/lib/cjs/components/MarkoEngine.js +29 -0
  40. package/lib/cjs/components/MarkoEngine.js.map +1 -0
  41. package/lib/cjs/components/MoteEngine.js +13 -0
  42. package/lib/cjs/components/MoteEngine.js.map +1 -0
  43. package/lib/cjs/components/MustacheEngine.js +16 -0
  44. package/lib/cjs/components/MustacheEngine.js.map +1 -0
  45. package/lib/cjs/components/NunjucksEngine.js +56 -0
  46. package/lib/cjs/components/NunjucksEngine.js.map +1 -0
  47. package/lib/cjs/components/PlatesEngine.js +19 -0
  48. package/lib/cjs/components/PlatesEngine.js.map +1 -0
  49. package/lib/cjs/components/PugEngine.js +21 -0
  50. package/lib/cjs/components/PugEngine.js.map +1 -0
  51. package/lib/cjs/components/RactiveEngine.js +36 -0
  52. package/lib/cjs/components/RactiveEngine.js.map +1 -0
  53. package/lib/cjs/components/ReactEngine.js +136 -0
  54. package/lib/cjs/components/ReactEngine.js.map +1 -0
  55. package/lib/cjs/components/SlmEngine.js +13 -0
  56. package/lib/cjs/components/SlmEngine.js.map +1 -0
  57. package/lib/cjs/components/SquirrellyEngine.js +23 -0
  58. package/lib/cjs/components/SquirrellyEngine.js.map +1 -0
  59. package/lib/cjs/components/SwigEngine.js +21 -0
  60. package/lib/cjs/components/SwigEngine.js.map +1 -0
  61. package/lib/cjs/components/TemplayedEngine.js +16 -0
  62. package/lib/cjs/components/TemplayedEngine.js.map +1 -0
  63. package/lib/cjs/components/ToffeeEngine.js +22 -0
  64. package/lib/cjs/components/ToffeeEngine.js.map +1 -0
  65. package/lib/cjs/components/TwigEngine.js +28 -0
  66. package/lib/cjs/components/TwigEngine.js.map +1 -0
  67. package/lib/cjs/components/TwingEngine.js +29 -0
  68. package/lib/cjs/components/TwingEngine.js.map +1 -0
  69. package/lib/cjs/components/UnderscoreEngine.js +28 -0
  70. package/lib/cjs/components/UnderscoreEngine.js.map +1 -0
  71. package/lib/cjs/components/VashEngine.js +35 -0
  72. package/lib/cjs/components/VashEngine.js.map +1 -0
  73. package/lib/cjs/components/VelocityEngine.js +18 -0
  74. package/lib/cjs/components/VelocityEngine.js.map +1 -0
  75. package/lib/cjs/components/VueEngine.js +139 -0
  76. package/lib/cjs/components/VueEngine.js.map +1 -0
  77. package/lib/cjs/components/WalrusEngine.js +17 -0
  78. package/lib/cjs/components/WalrusEngine.js.map +1 -0
  79. package/lib/cjs/decorators/viewEngine.js +11 -0
  80. package/lib/cjs/decorators/viewEngine.js.map +1 -0
  81. package/lib/cjs/index.js +49 -0
  82. package/lib/cjs/index.js.map +1 -0
  83. package/lib/cjs/package.json +3 -0
  84. package/lib/cjs/registries/EnginesContainer.js +31 -0
  85. package/lib/cjs/registries/EnginesContainer.js.map +1 -0
  86. package/lib/cjs/utils/cache.js +140 -0
  87. package/lib/cjs/utils/cache.js.map +1 -0
  88. package/lib/cjs/utils/getEngines.js +47 -0
  89. package/lib/cjs/utils/getEngines.js.map +1 -0
  90. package/lib/esm/components/AtplEngine.js +10 -0
  91. package/lib/esm/components/AtplEngine.js.map +1 -0
  92. package/lib/esm/components/BracketEngine.js +15 -0
  93. package/lib/esm/components/BracketEngine.js.map +1 -0
  94. package/lib/esm/components/DotEngine.js +17 -0
  95. package/lib/esm/components/DotEngine.js.map +1 -0
  96. package/lib/esm/components/DustEngine.js +57 -0
  97. package/lib/esm/components/DustEngine.js.map +1 -0
  98. package/lib/esm/components/EctEngine.js +24 -0
  99. package/lib/esm/components/EctEngine.js.map +1 -0
  100. package/lib/esm/components/EjsEngine.js +10 -0
  101. package/lib/esm/components/EjsEngine.js.map +1 -0
  102. package/lib/esm/components/Engine.js +59 -0
  103. package/lib/esm/components/Engine.js.map +1 -0
  104. package/lib/esm/components/HamlCoffeeEngine.js +10 -0
  105. package/lib/esm/components/HamlCoffeeEngine.js.map +1 -0
  106. package/lib/esm/components/HamlEngine.js +16 -0
  107. package/lib/esm/components/HamlEngine.js.map +1 -0
  108. package/lib/esm/components/HamletEngine.js +16 -0
  109. package/lib/esm/components/HamletEngine.js.map +1 -0
  110. package/lib/esm/components/HandlebarsEngine.js +22 -0
  111. package/lib/esm/components/HandlebarsEngine.js.map +1 -0
  112. package/lib/esm/components/HoganEngine.js +18 -0
  113. package/lib/esm/components/HoganEngine.js.map +1 -0
  114. package/lib/esm/components/HtmlingEngine.js +14 -0
  115. package/lib/esm/components/HtmlingEngine.js.map +1 -0
  116. package/lib/esm/components/JazzEngine.js +14 -0
  117. package/lib/esm/components/JazzEngine.js.map +1 -0
  118. package/lib/esm/components/JqtplEngine.js +14 -0
  119. package/lib/esm/components/JqtplEngine.js.map +1 -0
  120. package/lib/esm/components/JustEngine.js +24 -0
  121. package/lib/esm/components/JustEngine.js.map +1 -0
  122. package/lib/esm/components/LiquorEngine.js +10 -0
  123. package/lib/esm/components/LiquorEngine.js.map +1 -0
  124. package/lib/esm/components/LodashEngine.js +17 -0
  125. package/lib/esm/components/LodashEngine.js.map +1 -0
  126. package/lib/esm/components/MarkoEngine.js +26 -0
  127. package/lib/esm/components/MarkoEngine.js.map +1 -0
  128. package/lib/esm/components/MoteEngine.js +10 -0
  129. package/lib/esm/components/MoteEngine.js.map +1 -0
  130. package/lib/esm/components/MustacheEngine.js +13 -0
  131. package/lib/esm/components/MustacheEngine.js.map +1 -0
  132. package/lib/esm/components/NunjucksEngine.js +53 -0
  133. package/lib/esm/components/NunjucksEngine.js.map +1 -0
  134. package/lib/esm/components/PlatesEngine.js +16 -0
  135. package/lib/esm/components/PlatesEngine.js.map +1 -0
  136. package/lib/esm/components/PugEngine.js +18 -0
  137. package/lib/esm/components/PugEngine.js.map +1 -0
  138. package/lib/esm/components/RactiveEngine.js +33 -0
  139. package/lib/esm/components/RactiveEngine.js.map +1 -0
  140. package/lib/esm/components/ReactEngine.js +133 -0
  141. package/lib/esm/components/ReactEngine.js.map +1 -0
  142. package/lib/esm/components/SlmEngine.js +10 -0
  143. package/lib/esm/components/SlmEngine.js.map +1 -0
  144. package/lib/esm/components/SquirrellyEngine.js +20 -0
  145. package/lib/esm/components/SquirrellyEngine.js.map +1 -0
  146. package/lib/esm/components/SwigEngine.js +18 -0
  147. package/lib/esm/components/SwigEngine.js.map +1 -0
  148. package/lib/esm/components/TemplayedEngine.js +13 -0
  149. package/lib/esm/components/TemplayedEngine.js.map +1 -0
  150. package/lib/esm/components/ToffeeEngine.js +19 -0
  151. package/lib/esm/components/ToffeeEngine.js.map +1 -0
  152. package/lib/esm/components/TwigEngine.js +25 -0
  153. package/lib/esm/components/TwigEngine.js.map +1 -0
  154. package/lib/esm/components/TwingEngine.js +26 -0
  155. package/lib/esm/components/TwingEngine.js.map +1 -0
  156. package/lib/esm/components/UnderscoreEngine.js +25 -0
  157. package/lib/esm/components/UnderscoreEngine.js.map +1 -0
  158. package/lib/esm/components/VashEngine.js +32 -0
  159. package/lib/esm/components/VashEngine.js.map +1 -0
  160. package/lib/esm/components/VelocityEngine.js +15 -0
  161. package/lib/esm/components/VelocityEngine.js.map +1 -0
  162. package/lib/esm/components/VueEngine.js +136 -0
  163. package/lib/esm/components/VueEngine.js.map +1 -0
  164. package/lib/esm/components/WalrusEngine.js +14 -0
  165. package/lib/esm/components/WalrusEngine.js.map +1 -0
  166. package/lib/esm/decorators/viewEngine.js +7 -0
  167. package/lib/esm/decorators/viewEngine.js.map +1 -0
  168. package/lib/esm/index.js +46 -0
  169. package/lib/esm/index.js.map +1 -0
  170. package/lib/esm/package.json +3 -0
  171. package/lib/esm/registries/EnginesContainer.js +27 -0
  172. package/lib/esm/registries/EnginesContainer.js.map +1 -0
  173. package/lib/esm/utils/cache.js +127 -0
  174. package/lib/esm/utils/cache.js.map +1 -0
  175. package/lib/esm/utils/getEngines.js +42 -0
  176. package/lib/esm/utils/getEngines.js.map +1 -0
  177. package/lib/{components → types/components}/AtplEngine.d.ts +0 -0
  178. package/lib/{components → types/components}/BracketEngine.d.ts +0 -0
  179. package/lib/{components → types/components}/DotEngine.d.ts +0 -0
  180. package/lib/{components → types/components}/DustEngine.d.ts +0 -0
  181. package/lib/{components → types/components}/EctEngine.d.ts +0 -0
  182. package/lib/{components → types/components}/EjsEngine.d.ts +0 -0
  183. package/lib/{components → types/components}/Engine.d.ts +4 -1
  184. package/lib/{components → types/components}/HamlCoffeeEngine.d.ts +0 -0
  185. package/lib/{components → types/components}/HamlEngine.d.ts +0 -0
  186. package/lib/{components → types/components}/HamletEngine.d.ts +0 -0
  187. package/lib/{components → types/components}/HandlebarsEngine.d.ts +0 -0
  188. package/lib/{components → types/components}/HoganEngine.d.ts +0 -0
  189. package/lib/{components → types/components}/HtmlingEngine.d.ts +0 -0
  190. package/lib/{components → types/components}/JazzEngine.d.ts +0 -0
  191. package/lib/{components → types/components}/JqtplEngine.d.ts +0 -0
  192. package/lib/{components → types/components}/JustEngine.d.ts +0 -0
  193. package/lib/{components → types/components}/LiquorEngine.d.ts +0 -0
  194. package/lib/{components → types/components}/LodashEngine.d.ts +0 -0
  195. package/lib/{components → types/components}/MarkoEngine.d.ts +0 -0
  196. package/lib/{components → types/components}/MoteEngine.d.ts +0 -0
  197. package/lib/{components → types/components}/MustacheEngine.d.ts +0 -0
  198. package/lib/{components → types/components}/NunjucksEngine.d.ts +0 -0
  199. package/lib/{components → types/components}/PlatesEngine.d.ts +0 -0
  200. package/lib/{components → types/components}/PugEngine.d.ts +0 -0
  201. package/lib/{components → types/components}/RactiveEngine.d.ts +0 -0
  202. package/lib/{components → types/components}/ReactEngine.d.ts +3 -0
  203. package/lib/{components → types/components}/SlmEngine.d.ts +0 -0
  204. package/lib/{components → types/components}/SquirrellyEngine.d.ts +0 -0
  205. package/lib/{components → types/components}/SwigEngine.d.ts +0 -0
  206. package/lib/{components → types/components}/TemplayedEngine.d.ts +0 -0
  207. package/lib/{components → types/components}/ToffeeEngine.d.ts +0 -0
  208. package/lib/{components → types/components}/TwigEngine.d.ts +0 -0
  209. package/lib/{components → types/components}/TwingEngine.d.ts +0 -0
  210. package/lib/{components → types/components}/UnderscoreEngine.d.ts +0 -0
  211. package/lib/{components → types/components}/VashEngine.d.ts +0 -0
  212. package/lib/{components → types/components}/VelocityEngine.d.ts +0 -0
  213. package/lib/{components → types/components}/VueEngine.d.ts +2 -2
  214. package/lib/{components → types/components}/WalrusEngine.d.ts +0 -0
  215. package/lib/{decorators → types/decorators}/viewEngine.d.ts +0 -0
  216. package/lib/{index.d.ts → types/index.d.ts} +6 -3
  217. package/lib/{registries → types/registries}/EnginesContainer.d.ts +0 -0
  218. package/lib/{utils → types/utils}/cache.d.ts +3 -3
  219. package/lib/{utils → types/utils}/getEngines.d.ts +0 -0
  220. package/package.json +35 -27
  221. package/readme.md +91 -90
  222. package/tsconfig.compile.esm.json +25 -0
  223. package/lib/index.js +0 -1211
  224. package/lib/index.js.map +0 -1
  225. package/lib/index.modern.js +0 -1198
  226. package/lib/index.modern.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let RactiveEngine = class RactiveEngine extends Engine {
5
+ $compile(template, options) {
6
+ const Engine = this.engine;
7
+ const compile = this.engine.parse(template);
8
+ return (options) => {
9
+ options.template = compile;
10
+ return new Engine(this.clean(options)).toHTML();
11
+ };
12
+ }
13
+ clean(options) {
14
+ if (options.data === null || options.data === undefined) {
15
+ // Shallow clone the options object
16
+ options.data = Object.assign({}, options);
17
+ // Remove consolidate-specific properties from the clone
18
+ let i;
19
+ let length;
20
+ let properties = ["template", "filename", "cache", "partials"];
21
+ for (i = 0, length = properties.length; i < length; i++) {
22
+ const property = properties[i];
23
+ delete options.data[property];
24
+ }
25
+ }
26
+ return options;
27
+ }
28
+ };
29
+ RactiveEngine = __decorate([
30
+ ViewEngine("ractive")
31
+ ], RactiveEngine);
32
+ export { RactiveEngine };
33
+ //# sourceMappingURL=RactiveEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RactiveEngine.js","sourceRoot":"","sources":["../../../src/components/RactiveEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAgB,MAAM,UAAU,CAAC;AAG/C,IAAa,aAAa,GAA1B,MAAa,aAAc,SAAQ,MAAM;IAC7B,QAAQ,CAAC,QAAgB,EAAE,OAAsB;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,CAAC,OAAsB,EAAE,EAAE;YAChC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC3B,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,OAAY;QAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YACvD,mCAAmC;YACnC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAE1C,wDAAwD;YACxD,IAAI,CAAC,CAAC;YACN,IAAI,MAAM,CAAC;YACX,IAAI,UAAU,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAE/D,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC/B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC/B;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAA;AA7BY,aAAa;IADzB,UAAU,CAAC,SAAS,CAAC;GACT,aAAa,CA6BzB;SA7BY,aAAa","sourcesContent":["import {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 = Object.assign({}, 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"]}
@@ -0,0 +1,133 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { resolve } from "path";
3
+ import { readFileSync } from "fs";
4
+ import { ViewEngine } from "../decorators/viewEngine.js";
5
+ import { Engine } from "./Engine.js";
6
+ import { getCachedEngine, getFromCache, importEngine, setToCache } from "../utils/cache.js";
7
+ let ReactEngine = class ReactEngine extends Engine {
8
+ constructor(name, options) {
9
+ super(name, options);
10
+ this.patchRequire();
11
+ }
12
+ async $onInit() {
13
+ await super.$onInit();
14
+ await importEngine("react-dom/server", "ReactDOM");
15
+ await importEngine("@babel/core", "babel");
16
+ }
17
+ get babel() {
18
+ return getCachedEngine("babel");
19
+ }
20
+ get reactDOM() {
21
+ return getCachedEngine("ReactDOM");
22
+ }
23
+ patchRequire() {
24
+ if (require.extensions) {
25
+ // Ensure JSX is transformed on require
26
+ if (!require.extensions[".jsx"]) {
27
+ require.extensions[".jsx"] = this.requireReact.bind(this);
28
+ }
29
+ // Supporting .react extension as well as test cases
30
+ // Using .react extension is not recommended.
31
+ if (!require.extensions[".react"]) {
32
+ require.extensions[".react"] = this.requireReact.bind(this);
33
+ }
34
+ }
35
+ }
36
+ configure(options) {
37
+ const base = options.base;
38
+ delete options.base;
39
+ const enableCache = options.cache;
40
+ delete options.cache;
41
+ const isNonStatic = options.isNonStatic;
42
+ delete options.isNonStatic;
43
+ return { base, enableCache, isNonStatic };
44
+ }
45
+ $compile(template, options) {
46
+ // Assign HTML Base
47
+ const { base, enableCache, isNonStatic } = this.configure(options);
48
+ // Start Conversion
49
+ const Code = this.requireReactString(template);
50
+ const Factory = this.engine.createFactory(Code);
51
+ return () => {
52
+ const parsed = new Factory(options);
53
+ const content = isNonStatic ? this.reactDOM.renderToString(parsed) : this.reactDOM.renderToStaticMarkup(parsed);
54
+ if (base) {
55
+ options.content = content;
56
+ return this.renderWithBase(template, base, enableCache, options);
57
+ }
58
+ return content;
59
+ };
60
+ }
61
+ async $compileFile(file, options) {
62
+ // Assign HTML Base
63
+ const { base, enableCache, isNonStatic } = this.configure(options);
64
+ let path = resolve(file);
65
+ delete require.cache[path];
66
+ const ReactDOM = await importEngine("react-dom/server", "ReactDOM");
67
+ const { default: Code } = await import(path);
68
+ const Factory = this.engine.createFactory(Code);
69
+ return () => {
70
+ const parsed = new Factory(options);
71
+ const content = isNonStatic ? ReactDOM.renderToString(parsed) : ReactDOM.renderToStaticMarkup(parsed);
72
+ if (base) {
73
+ options.content = content;
74
+ return this.renderWithBase(file, base, enableCache, options);
75
+ }
76
+ return content;
77
+ };
78
+ }
79
+ renderWithBase(key, base, enableCache, options) {
80
+ const baseStr = getFromCache(key) || readFileSync(resolve(base), "utf8");
81
+ if (enableCache) {
82
+ setToCache(key, baseStr);
83
+ }
84
+ return this.reactBaseTmpl(baseStr, options);
85
+ }
86
+ transformFileSync(filename) {
87
+ return this.babel.transformFileSync(filename, { presets: ["@babel/preset-react"] }).code;
88
+ }
89
+ transform(src) {
90
+ return this.babel.transform(src, { presets: ["@babel/preset-react"] }).code;
91
+ }
92
+ requireReact(module, filename) {
93
+ const compiled = this.transformFileSync(filename);
94
+ return module._compile(compiled, filename);
95
+ }
96
+ requireReactString(src, filename) {
97
+ if (!filename)
98
+ filename = "";
99
+ // @ts-ignore
100
+ const m = new module.constructor();
101
+ filename = filename || "";
102
+ // Compile Using React
103
+ const compiled = this.transform(src);
104
+ // Compile as a module
105
+ m.paths = module.paths;
106
+ m._compile(compiled, filename);
107
+ return m.exports;
108
+ }
109
+ reactBaseTmpl(data, options) {
110
+ let exp;
111
+ let regex;
112
+ // Iterates through the keys in file object
113
+ // and interpolate / replace {{key}} with it's value
114
+ for (const k in options) {
115
+ if (options.hasOwnProperty(k)) {
116
+ exp = `{{${k}}}`;
117
+ regex = new RegExp(exp, "g");
118
+ if (data.match(regex)) {
119
+ data = data.replace(regex, options[k]);
120
+ }
121
+ }
122
+ }
123
+ return data;
124
+ }
125
+ };
126
+ ReactEngine = __decorate([
127
+ ViewEngine("react", {
128
+ requires: ["react"]
129
+ }),
130
+ __metadata("design:paramtypes", [String, Object])
131
+ ], ReactEngine);
132
+ export { ReactEngine };
133
+ //# sourceMappingURL=ReactEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactEngine.js","sourceRoot":"","sources":["../../../src/components/ReactEngine.ts"],"names":[],"mappings":"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","sourcesContent":["import {resolve} from \"path\";\nimport {readFileSync} from \"fs\";\nimport {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine, EngineOptions, ViewEngineOptions} from \"./Engine\";\nimport {getCachedEngine, getFromCache, importEngine, 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 async $onInit() {\n await super.$onInit();\n await importEngine(\"react-dom/server\", \"ReactDOM\");\n await importEngine(\"@babel/core\", \"babel\");\n }\n\n get babel() {\n return getCachedEngine(\"babel\");\n }\n\n get reactDOM() {\n return getCachedEngine(\"ReactDOM\");\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 Code = this.requireReactString(template);\n const Factory = this.engine.createFactory(Code);\n\n return () => {\n const parsed = new Factory(options);\n const content = isNonStatic ? this.reactDOM.renderToString(parsed) : this.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 = await importEngine(\"react-dom/server\", \"ReactDOM\");\n const {default: Code} = await import(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 return this.babel.transformFileSync(filename, {presets: [\"@babel/preset-react\"]}).code;\n }\n\n protected transform(src: string) {\n return this.babel.transform(src, {presets: [\"@babel/preset-react\"]}).code;\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"]}
@@ -0,0 +1,10 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let SlmEngine = class SlmEngine extends Engine {
5
+ };
6
+ SlmEngine = __decorate([
7
+ ViewEngine("slm")
8
+ ], SlmEngine);
9
+ export { SlmEngine };
10
+ //# sourceMappingURL=SlmEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlmEngine.js","sourceRoot":"","sources":["../../../src/components/SlmEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,IAAa,SAAS,GAAtB,MAAa,SAAU,SAAQ,MAAM;CAAG,CAAA;AAA3B,SAAS;IADrB,UAAU,CAAC,KAAK,CAAC;GACL,SAAS,CAAkB;SAA3B,SAAS","sourcesContent":["import {ViewEngine} from \"../decorators/viewEngine\";\nimport {Engine} from \"./Engine\";\n\n@ViewEngine(\"slm\")\nexport class SlmEngine extends Engine {}\n"]}
@@ -0,0 +1,20 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let SquirrellyEngine = class SquirrellyEngine extends Engine {
5
+ $compile(template, options) {
6
+ for (const partial in options.partials) {
7
+ this.engine.definePartial(partial, options.partials[partial]);
8
+ }
9
+ for (const helper in options.helpers) {
10
+ this.engine.defineHelper(helper, options.helpers[helper]);
11
+ }
12
+ const compile = this.engine.Compile(template, options);
13
+ return (options) => compile(options, this.engine);
14
+ }
15
+ };
16
+ SquirrellyEngine = __decorate([
17
+ ViewEngine("squirrelly")
18
+ ], SquirrellyEngine);
19
+ export { SquirrellyEngine };
20
+ //# sourceMappingURL=SquirrellyEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SquirrellyEngine.js","sourceRoot":"","sources":["../../../src/components/SquirrellyEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAgB,MAAM,UAAU,CAAC;AAG/C,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,MAAM;IAChC,QAAQ,CAAC,QAAgB,EAAE,OAAsB;QACzD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;SAC/D;QACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SAC3D;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEvD,OAAO,CAAC,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;CACF,CAAA;AAbY,gBAAgB;IAD5B,UAAU,CAAC,YAAY,CAAC;GACZ,gBAAgB,CAa5B;SAbY,gBAAgB","sourcesContent":["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"]}
@@ -0,0 +1,18 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let SwigEngine = class SwigEngine extends Engine {
5
+ $compile(template, options) {
6
+ if (options.cache === true)
7
+ options.cache = "memory";
8
+ this.engine.setDefaults({ cache: options.cache });
9
+ return this.engine.compile(template, options);
10
+ }
11
+ };
12
+ SwigEngine = __decorate([
13
+ ViewEngine("swig", {
14
+ requires: ["swig", "swig-templates"]
15
+ })
16
+ ], SwigEngine);
17
+ export { SwigEngine };
18
+ //# sourceMappingURL=SwigEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwigEngine.js","sourceRoot":"","sources":["../../../src/components/SwigEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAKhC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,MAAM;IAC1B,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AAPY,UAAU;IAHtB,UAAU,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACrC,CAAC;GACW,UAAU,CAOtB;SAPY,UAAU","sourcesContent":["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"]}
@@ -0,0 +1,13 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let TemplayedEngine = class TemplayedEngine extends Engine {
5
+ $compile(template, options) {
6
+ return this.engine(template);
7
+ }
8
+ };
9
+ TemplayedEngine = __decorate([
10
+ ViewEngine("templayed")
11
+ ], TemplayedEngine);
12
+ export { TemplayedEngine };
13
+ //# sourceMappingURL=TemplayedEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplayedEngine.js","sourceRoot":"","sources":["../../../src/components/TemplayedEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,MAAM;IAC/B,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAA;AAJY,eAAe;IAD3B,UAAU,CAAC,WAAW,CAAC;GACX,eAAe,CAI3B;SAJY,eAAe","sourcesContent":["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"]}
@@ -0,0 +1,19 @@
1
+ import { __decorate } from "tslib";
2
+ import { promisify } from "util";
3
+ import { ViewEngine } from "../decorators/viewEngine.js";
4
+ import { Engine } from "./Engine.js";
5
+ let ToffeeEngine = class ToffeeEngine extends Engine {
6
+ $compile(template, options) {
7
+ const compile = promisify(this.engine.str_render.bind(this.engine));
8
+ return (options) => compile(template, options);
9
+ }
10
+ async $compileFile(file, options) {
11
+ const compile = promisify(this.engine.__consolidate_engine_render.bind(this.engine));
12
+ return (options) => compile(file, options);
13
+ }
14
+ };
15
+ ToffeeEngine = __decorate([
16
+ ViewEngine("toffee")
17
+ ], ToffeeEngine);
18
+ export { ToffeeEngine };
19
+ //# sourceMappingURL=ToffeeEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToffeeEngine.js","sourceRoot":"","sources":["../../../src/components/ToffeeEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,IAAa,YAAY,GAAzB,MAAa,YAAa,SAAQ,MAAM;IAC5B,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpE,OAAO,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,OAAY;QACrD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAErF,OAAO,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAZY,YAAY;IADxB,UAAU,CAAC,QAAQ,CAAC;GACR,YAAY,CAYxB;SAZY,YAAY","sourcesContent":["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"]}
@@ -0,0 +1,25 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let TwigEngine = class TwigEngine extends Engine {
5
+ $cacheOptions(template, options) {
6
+ return {
7
+ ...options,
8
+ data: template,
9
+ allowInlineIncludes: options.allowInlineIncludes,
10
+ namespaces: options.namespaces,
11
+ path: options.path
12
+ };
13
+ }
14
+ $compile(template, options) {
15
+ const { twig: engine } = this.engine;
16
+ options.data = template;
17
+ const compile = engine(options);
18
+ return (options) => compile.render(options);
19
+ }
20
+ };
21
+ TwigEngine = __decorate([
22
+ ViewEngine("twig")
23
+ ], TwigEngine);
24
+ export { TwigEngine };
25
+ //# sourceMappingURL=TwigEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwigEngine.js","sourceRoot":"","sources":["../../../src/components/TwigEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAgB,MAAM,UAAU,CAAC;AAG/C,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,MAAM;IAC1B,aAAa,CAAC,QAAgB,EAAE,OAAY;QACpD,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAsB;QACzD,MAAM,EAAC,IAAI,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACnC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;QAExB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAEhC,OAAO,CAAC,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;CACF,CAAA;AAnBY,UAAU;IADtB,UAAU,CAAC,MAAM,CAAC;GACN,UAAU,CAmBtB;SAnBY,UAAU","sourcesContent":["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"]}
@@ -0,0 +1,26 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ import { existsSync } from "fs";
5
+ let TwingEngine = class TwingEngine extends Engine {
6
+ $compile(template, options) {
7
+ const engine = this.engine;
8
+ if (!this.instance) {
9
+ let loader = new engine.TwingLoaderNull();
10
+ if (options.settings && options.settings.views && existsSync(options.settings.views)) {
11
+ loader = new engine.TwingLoaderFilesystem(options.settings.views);
12
+ }
13
+ this.instance = new engine.TwingEnvironment(loader);
14
+ }
15
+ const $cmp = this.instance.createTemplate(template);
16
+ return async (options) => {
17
+ const compile = await $cmp;
18
+ return compile.render(options);
19
+ };
20
+ }
21
+ };
22
+ TwingEngine = __decorate([
23
+ ViewEngine("twing")
24
+ ], TwingEngine);
25
+ export { TwingEngine };
26
+ //# sourceMappingURL=TwingEngine.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,25 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let UnderscoreEngine = class UnderscoreEngine extends Engine {
5
+ async render(template, options) {
6
+ const tpl = await this.compile(template, options)(options);
7
+ return tpl.replace(/\n$/, "");
8
+ }
9
+ $cacheOptions(template, options) {
10
+ const partials = {};
11
+ for (const partial in options.partials) {
12
+ partials[partial] = this.engine.template(options.partials[partial]);
13
+ }
14
+ options.partials = partials;
15
+ return options;
16
+ }
17
+ $compile(template, options) {
18
+ return this.engine.template(template, null, options);
19
+ }
20
+ };
21
+ UnderscoreEngine = __decorate([
22
+ ViewEngine("underscore")
23
+ ], UnderscoreEngine);
24
+ export { UnderscoreEngine };
25
+ //# sourceMappingURL=UnderscoreEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnderscoreEngine.js","sourceRoot":"","sources":["../../../src/components/UnderscoreEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,MAAM;IAC1C,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAY;QACzC,MAAM,GAAG,GAAW,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAES,aAAa,CAAC,QAAgB,EAAE,OAAY;QACpD,MAAM,QAAQ,GAAQ,EAAE,CAAC;QAEzB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE;YACtC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;SACrE;QAED,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,QAAQ,CAAC,QAAgB,EAAE,OAAY;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACF,CAAA;AArBY,gBAAgB;IAD5B,UAAU,CAAC,YAAY,CAAC;GACZ,gBAAgB,CAqB5B;SArBY,gBAAgB","sourcesContent":["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"]}
@@ -0,0 +1,32 @@
1
+ import { __decorate } from "tslib";
2
+ import { promisify } from "util";
3
+ import { ViewEngine } from "../decorators/viewEngine.js";
4
+ import { Engine } from "./Engine.js";
5
+ let VashEngine = class VashEngine extends Engine {
6
+ compile(template, options) {
7
+ if (options.helpers) {
8
+ for (const key in options.helpers) {
9
+ if (!options.helpers.hasOwnProperty(key) || typeof options.helpers[key] !== "function") {
10
+ continue;
11
+ }
12
+ this.engine.helpers[key] = options.helpers[key];
13
+ }
14
+ }
15
+ const compile = promisify(this.engine.compile(template, options));
16
+ return async (options) => {
17
+ const ctx = await compile(options);
18
+ ctx.finishLayout();
19
+ return ctx.toString();
20
+ };
21
+ }
22
+ async render(template, options) {
23
+ const compile = this.compile(template, options);
24
+ const tpl = await compile(options);
25
+ return tpl.replace(/\n$/, "");
26
+ }
27
+ };
28
+ VashEngine = __decorate([
29
+ ViewEngine("vash")
30
+ ], VashEngine);
31
+ export { VashEngine };
32
+ //# sourceMappingURL=VashEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VashEngine.js","sourceRoot":"","sources":["../../../src/components/VashEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,IAAa,UAAU,GAAvB,MAAa,UAAW,SAAQ,MAAM;IACpC,OAAO,CAAC,QAAgB,EAAE,OAAY;QACpC,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;oBACtF,SAAS;iBACV;gBACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACjD;SACF;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAElE,OAAO,KAAK,EAAE,OAAY,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACnC,GAAG,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAY;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;CACF,CAAA;AA1BY,UAAU;IADtB,UAAU,CAAC,MAAM,CAAC;GACN,UAAU,CA0BtB;SA1BY,UAAU","sourcesContent":["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"]}
@@ -0,0 +1,15 @@
1
+ import { __decorate } from "tslib";
2
+ import { ViewEngine } from "../decorators/viewEngine.js";
3
+ import { Engine } from "./Engine.js";
4
+ let VelocityEngine = class VelocityEngine extends Engine {
5
+ $compile(template, options) {
6
+ return async (options) => {
7
+ return this.engine.render(template, options).trimLeft();
8
+ };
9
+ }
10
+ };
11
+ VelocityEngine = __decorate([
12
+ ViewEngine("velocityjs")
13
+ ], VelocityEngine);
14
+ export { VelocityEngine };
15
+ //# sourceMappingURL=VelocityEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VelocityEngine.js","sourceRoot":"","sources":["../../../src/components/VelocityEngine.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAC,MAAM,EAAgB,MAAM,UAAU,CAAC;AAG/C,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,MAAM;IAC9B,QAAQ,CAAC,QAAgB,EAAE,OAAsB;QACzD,OAAO,KAAK,EAAE,OAAsB,EAAE,EAAE;YACtC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1D,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AANY,cAAc;IAD1B,UAAU,CAAC,YAAY,CAAC;GACZ,cAAc,CAM1B;SANY,cAAc","sourcesContent":["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"]}
@@ -0,0 +1,136 @@
1
+ var _VueEngine_renderToString;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from "tslib";
3
+ import { Engine } from "./Engine.js";
4
+ import { ViewEngine } from "../decorators/viewEngine.js";
5
+ import { getCachedEngine, importEngine } from "../utils/cache.js";
6
+ import { join, resolve } from "path";
7
+ import { promisify } from "util";
8
+ function requireFromString(src, filename) {
9
+ const Module = module.constructor;
10
+ const m = new Module();
11
+ m._compile(src, filename);
12
+ return m.exports;
13
+ }
14
+ /**
15
+ * simple hash a string
16
+ * https://stackoverflow.com/a/34842797/493756
17
+ */
18
+ function hashCode(str) {
19
+ return str.split("").reduce((prevHash, currVal) => (prevHash << 5) - prevHash + currVal.charCodeAt(0), 0);
20
+ }
21
+ let VueEngine = class VueEngine extends Engine {
22
+ constructor() {
23
+ super(...arguments);
24
+ _VueEngine_renderToString.set(this, void 0);
25
+ }
26
+ async $onInit() {
27
+ await super.$onInit();
28
+ await importEngine("vue-pronto/lib/index", "pronto");
29
+ await importEngine("vueify");
30
+ await importEngine("vue-server-renderer");
31
+ const ssrRenderer = this.vueServerRenderer.createRenderer();
32
+ __classPrivateFieldSet(this, _VueEngine_renderToString, promisify(ssrRenderer.renderToString.bind(this)), "f");
33
+ }
34
+ get pronto() {
35
+ return getCachedEngine("pronto");
36
+ }
37
+ get vueify() {
38
+ return getCachedEngine("vueify");
39
+ }
40
+ get vueServerRenderer() {
41
+ return getCachedEngine("vue-server-renderer");
42
+ }
43
+ $cacheOptions(template, options, fromFile) {
44
+ const fullPath = join(__dirname, `/${hashCode(template)}`);
45
+ if (!fromFile) {
46
+ return {
47
+ ...options,
48
+ filename: fullPath
49
+ };
50
+ }
51
+ return options;
52
+ }
53
+ $compile(template, options) {
54
+ // make up a fake path
55
+ const fullPath = join(__dirname, `/${hashCode(template)}`);
56
+ const promise = this.getComponent(fullPath, template, options);
57
+ return async (options) => {
58
+ return this.renderComponent(await promise, options);
59
+ };
60
+ }
61
+ async $compileFile(file, options) {
62
+ // prontoRenderer assume that the filepath is relative to a passed "rootpath"
63
+ // and if you don't pass a rootpath it will try to find one
64
+ // based on its current __dirname
65
+ // https://github.com/express-vue/vue-pronto/blob/c88e380fee8656bc3ed21c7d3adb2ef331be07d5/lib/utils/findPaths.js#L10-L18
66
+ const fullPath = resolve(file);
67
+ const rootPath = process.cwd();
68
+ const filepath = fullPath.replace(`${rootPath}/`, "");
69
+ const prontoOptions = {
70
+ rootPath,
71
+ vueVersion: { disabled: true }
72
+ };
73
+ if (!options.cache) {
74
+ // disable pronto lru cache
75
+ prontoOptions.cacheOptions = { max: 0 };
76
+ }
77
+ let prontoRenderer = new this.pronto.ProntoVueify(prontoOptions);
78
+ if (!options.cache) {
79
+ // disable pronto internal cache
80
+ // yup
81
+ prontoRenderer.internalCache = {
82
+ get: () => { },
83
+ set: () => { }
84
+ };
85
+ }
86
+ else {
87
+ // so, this ties each "renderer" to a rootPath
88
+ // so I have to create a new prontoRenderer each time
89
+ // which sucks! because I loose the internal cache of it,
90
+ // unless, I keep tabs on both lru and internal caches and replace them every time.
91
+ const internalCache = prontoRenderer.internalCache;
92
+ prontoRenderer.internalCache = {
93
+ get: internalCache.get.bind(internalCache),
94
+ set(filename, component) {
95
+ internalCache.set(filename, {
96
+ ...component,
97
+ data: component.data || (() => options)
98
+ });
99
+ }
100
+ };
101
+ }
102
+ return (options) => {
103
+ return prontoRenderer.RenderToString(filepath, {}, {
104
+ propsData: options
105
+ });
106
+ };
107
+ }
108
+ async getComponent(fullPath, template, options) {
109
+ // assume that the str the content of a <template> ... </template>
110
+ if (/<template/.test(template.trim())) {
111
+ // assume that the str is a fileContent of a .vue file
112
+ const compile = promisify(this.vueify.compiler.compile.bind(this.vueify.compiler));
113
+ const cmp = await compile(template, fullPath);
114
+ return requireFromString(cmp, fullPath);
115
+ }
116
+ return {
117
+ template,
118
+ data() {
119
+ return options;
120
+ }
121
+ };
122
+ }
123
+ async renderComponent(Component, options) {
124
+ let Factory = this.engine.extend(Component);
125
+ let instance = new Factory({ propsData: options });
126
+ return __classPrivateFieldGet(this, _VueEngine_renderToString, "f").call(this, instance);
127
+ }
128
+ };
129
+ _VueEngine_renderToString = new WeakMap();
130
+ VueEngine = __decorate([
131
+ ViewEngine("vue", {
132
+ requires: "vue"
133
+ })
134
+ ], VueEngine);
135
+ export { VueEngine };
136
+ //# sourceMappingURL=VueEngine.js.map
@@ -0,0 +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"]}