@tsed/engines 8.11.0 → 8.11.2-rc.1

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 (138) hide show
  1. package/lib/esm/components/AtplEngine.js +0 -1
  2. package/lib/esm/components/BracketEngine.js +0 -1
  3. package/lib/esm/components/DotEngine.js +0 -1
  4. package/lib/esm/components/DustEngine.js +0 -1
  5. package/lib/esm/components/EctEngine.js +0 -1
  6. package/lib/esm/components/EjsEngine.js +0 -1
  7. package/lib/esm/components/Engine.js +0 -1
  8. package/lib/esm/components/HamlCoffeeEngine.js +0 -1
  9. package/lib/esm/components/HamlEngine.js +0 -1
  10. package/lib/esm/components/HamletEngine.js +0 -1
  11. package/lib/esm/components/HandlebarsEngine.js +0 -1
  12. package/lib/esm/components/HoganEngine.js +0 -1
  13. package/lib/esm/components/HtmlingEngine.js +0 -1
  14. package/lib/esm/components/JazzEngine.js +0 -1
  15. package/lib/esm/components/JqtplEngine.js +0 -1
  16. package/lib/esm/components/JustEngine.js +0 -1
  17. package/lib/esm/components/LiquorEngine.js +0 -1
  18. package/lib/esm/components/LodashEngine.js +0 -1
  19. package/lib/esm/components/MoteEngine.js +0 -1
  20. package/lib/esm/components/MustacheEngine.js +0 -1
  21. package/lib/esm/components/NunjucksEngine.js +0 -1
  22. package/lib/esm/components/PlatesEngine.js +0 -1
  23. package/lib/esm/components/PugEngine.js +0 -1
  24. package/lib/esm/components/RactiveEngine.js +0 -1
  25. package/lib/esm/components/ReactEngine.js +0 -1
  26. package/lib/esm/components/SlmEngine.js +0 -1
  27. package/lib/esm/components/SquirrellyEngine.js +0 -1
  28. package/lib/esm/components/SwigEngine.js +0 -1
  29. package/lib/esm/components/TemplayedEngine.js +0 -1
  30. package/lib/esm/components/TwigEngine.js +0 -1
  31. package/lib/esm/components/TwingEngine.js +0 -1
  32. package/lib/esm/components/UnderscoreEngine.js +0 -1
  33. package/lib/esm/components/VashEngine.js +0 -1
  34. package/lib/esm/components/VelocityEngine.js +0 -1
  35. package/lib/esm/components/WalrusEngine.js +0 -1
  36. package/lib/esm/components/index.js +0 -1
  37. package/lib/esm/decorators/viewEngine.js +0 -1
  38. package/lib/esm/exports.js +0 -1
  39. package/lib/esm/index.js +0 -1
  40. package/lib/esm/registries/EnginesContainer.js +0 -1
  41. package/lib/esm/utils/cache.js +0 -1
  42. package/lib/esm/utils/getEngines.js +0 -1
  43. package/package.json +7 -4
  44. package/.barrelsby.json +0 -5
  45. package/lib/esm/components/AtplEngine.js.map +0 -1
  46. package/lib/esm/components/BracketEngine.js.map +0 -1
  47. package/lib/esm/components/DotEngine.js.map +0 -1
  48. package/lib/esm/components/DustEngine.js.map +0 -1
  49. package/lib/esm/components/EctEngine.js.map +0 -1
  50. package/lib/esm/components/EjsEngine.js.map +0 -1
  51. package/lib/esm/components/Engine.js.map +0 -1
  52. package/lib/esm/components/HamlCoffeeEngine.js.map +0 -1
  53. package/lib/esm/components/HamlEngine.js.map +0 -1
  54. package/lib/esm/components/HamletEngine.js.map +0 -1
  55. package/lib/esm/components/HandlebarsEngine.js.map +0 -1
  56. package/lib/esm/components/HoganEngine.js.map +0 -1
  57. package/lib/esm/components/HtmlingEngine.js.map +0 -1
  58. package/lib/esm/components/JazzEngine.js.map +0 -1
  59. package/lib/esm/components/JqtplEngine.js.map +0 -1
  60. package/lib/esm/components/JustEngine.js.map +0 -1
  61. package/lib/esm/components/LiquorEngine.js.map +0 -1
  62. package/lib/esm/components/LodashEngine.js.map +0 -1
  63. package/lib/esm/components/MoteEngine.js.map +0 -1
  64. package/lib/esm/components/MustacheEngine.js.map +0 -1
  65. package/lib/esm/components/NunjucksEngine.js.map +0 -1
  66. package/lib/esm/components/PlatesEngine.js.map +0 -1
  67. package/lib/esm/components/PugEngine.js.map +0 -1
  68. package/lib/esm/components/RactiveEngine.js.map +0 -1
  69. package/lib/esm/components/ReactEngine.js.map +0 -1
  70. package/lib/esm/components/SlmEngine.js.map +0 -1
  71. package/lib/esm/components/SquirrellyEngine.js.map +0 -1
  72. package/lib/esm/components/SwigEngine.js.map +0 -1
  73. package/lib/esm/components/TemplayedEngine.js.map +0 -1
  74. package/lib/esm/components/TwigEngine.js.map +0 -1
  75. package/lib/esm/components/TwingEngine.js.map +0 -1
  76. package/lib/esm/components/UnderscoreEngine.js.map +0 -1
  77. package/lib/esm/components/VashEngine.js.map +0 -1
  78. package/lib/esm/components/VelocityEngine.js.map +0 -1
  79. package/lib/esm/components/WalrusEngine.js.map +0 -1
  80. package/lib/esm/components/index.js.map +0 -1
  81. package/lib/esm/decorators/viewEngine.js.map +0 -1
  82. package/lib/esm/exports.js.map +0 -1
  83. package/lib/esm/index.js.map +0 -1
  84. package/lib/esm/registries/EnginesContainer.js.map +0 -1
  85. package/lib/esm/utils/cache.js.map +0 -1
  86. package/lib/esm/utils/getEngines.js.map +0 -1
  87. package/src/components/AtplEngine.ts +0 -5
  88. package/src/components/BracketEngine.ts +0 -11
  89. package/src/components/DotEngine.ts +0 -14
  90. package/src/components/DustEngine.ts +0 -55
  91. package/src/components/EctEngine.ts +0 -24
  92. package/src/components/EjsEngine.ts +0 -5
  93. package/src/components/Engine.ts +0 -87
  94. package/src/components/HamlCoffeeEngine.ts +0 -5
  95. package/src/components/HamlEngine.ts +0 -12
  96. package/src/components/HamletEngine.ts +0 -12
  97. package/src/components/HandlebarsEngine.ts +0 -19
  98. package/src/components/HoganEngine.spec.ts +0 -79
  99. package/src/components/HoganEngine.ts +0 -14
  100. package/src/components/HtmlingEngine.ts +0 -11
  101. package/src/components/JazzEngine.ts +0 -10
  102. package/src/components/JqtplEngine.ts +0 -10
  103. package/src/components/JustEngine.ts +0 -24
  104. package/src/components/LiquorEngine.ts +0 -5
  105. package/src/components/LodashEngine.ts +0 -14
  106. package/src/components/MoteEngine.ts +0 -5
  107. package/src/components/MustacheEngine.ts +0 -9
  108. package/src/components/NunjucksEngine.ts +0 -58
  109. package/src/components/PlatesEngine.ts +0 -12
  110. package/src/components/PugEngine.spec.ts +0 -50
  111. package/src/components/PugEngine.ts +0 -15
  112. package/src/components/RactiveEngine.spec.ts +0 -36
  113. package/src/components/RactiveEngine.ts +0 -34
  114. package/src/components/ReactEngine.ts +0 -163
  115. package/src/components/SlmEngine.ts +0 -5
  116. package/src/components/SquirrellyEngine.spec.ts +0 -98
  117. package/src/components/SquirrellyEngine.ts +0 -18
  118. package/src/components/SwigEngine.ts +0 -14
  119. package/src/components/TemplayedEngine.ts +0 -9
  120. package/src/components/TwigEngine.spec.ts +0 -44
  121. package/src/components/TwigEngine.ts +0 -24
  122. package/src/components/TwingEngine.spec.ts +0 -36
  123. package/src/components/TwingEngine.ts +0 -31
  124. package/src/components/UnderscoreEngine.ts +0 -26
  125. package/src/components/VashEngine.ts +0 -33
  126. package/src/components/VelocityEngine.spec.ts +0 -50
  127. package/src/components/VelocityEngine.ts +0 -11
  128. package/src/components/WalrusEngine.ts +0 -11
  129. package/src/components/index.ts +0 -38
  130. package/src/decorators/viewEngine.ts +0 -8
  131. package/src/exports.ts +0 -2
  132. package/src/index.ts +0 -8
  133. package/src/registries/EnginesContainer.ts +0 -37
  134. package/src/utils/cache.spec.ts +0 -13
  135. package/src/utils/cache.ts +0 -153
  136. package/src/utils/getEngines.spec.ts +0 -134
  137. package/src/utils/getEngines.ts +0 -60
  138. package/vitest.config.mts +0 -21
@@ -1,37 +0,0 @@
1
- import {Engine, ViewEngineOptions} from "../components/Engine.js";
2
-
3
- export interface EngineProvider {
4
- name: string;
5
- useClass: typeof Engine;
6
- instance?: Engine;
7
- options: ViewEngineOptions;
8
- }
9
-
10
- export class EnginesContainer {
11
- #providers: Map<string | typeof Engine, EngineProvider> = new Map();
12
-
13
- has(key: string | typeof Engine) {
14
- return this.#providers.has(key);
15
- }
16
-
17
- get(key: string | typeof Engine) {
18
- const provider = this.#providers.get(key);
19
-
20
- if (provider && !provider.instance) {
21
- provider.instance = new provider.useClass(provider.name, provider.options);
22
- }
23
-
24
- return provider?.instance;
25
- }
26
-
27
- set(key: typeof Engine, provider: EngineProvider) {
28
- this.#providers.set(key, provider);
29
- this.#providers.set(provider.name, provider);
30
- }
31
-
32
- getSupportedEngines(): string[] {
33
- return [...this.#providers.keys()].filter((key) => typeof key === "string") as string[];
34
- }
35
- }
36
-
37
- export const engines = new EnginesContainer();
@@ -1,13 +0,0 @@
1
- import {clearCache, getFromCache, setToCache} from "./cache.js";
2
-
3
- describe("cache", () => {
4
- describe("setToCache()", () => {
5
- it("should set result to cache", () => {
6
- setToCache("key", "value");
7
- expect(getFromCache("key")).toEqual("value");
8
-
9
- clearCache();
10
- expect(getFromCache("key")).toEqual(undefined);
11
- });
12
- });
13
- });
@@ -1,153 +0,0 @@
1
- import fs from "node:fs";
2
- import {readFile} from "node:fs/promises";
3
- import {dirname, extname, isAbsolute, join} from "node:path";
4
-
5
- const readCache: Map<string, string> = new Map();
6
- const cacheStore: Map<string, any> = new Map();
7
-
8
- export const requires: Map<string, any> = new Map();
9
-
10
- export function getCachedEngine(name: string, toName: string = name) {
11
- const mdl = requires.get(toName) || {};
12
-
13
- return mdl.default || mdl;
14
- }
15
-
16
- export async function importEngine(name: string, toName: string = name) {
17
- if (!requires.has(toName)) {
18
- await setEngine(name, toName);
19
- }
20
-
21
- return getCachedEngine(toName);
22
- }
23
-
24
- export async function setEngine(name: string, toName: string = name) {
25
- const mdl = await import(name);
26
-
27
- requires.set(toName, mdl);
28
- }
29
-
30
- export function setToCache(key: string, value: any) {
31
- readCache.set(key, value);
32
- }
33
-
34
- export function getFromCache(key: string) {
35
- return readCache.get(key);
36
- }
37
-
38
- /**
39
- * Clear the cache.
40
- *
41
- * @api public
42
- */
43
-
44
- export const clearCache = () => {
45
- readCache.clear();
46
- cacheStore.clear();
47
- };
48
-
49
- /**
50
- * Conditionally cache `compiled` template based
51
- * on the `options` filename and `.cache` boolean.
52
- *
53
- * @param {Object} options
54
- * @param {Function} compiled
55
- * @return {Function}
56
- */
57
- export function cache(options: any, compiled?: any) {
58
- // cachable
59
- if (compiled && options.filename && options.cache) {
60
- readCache.delete(options.filename);
61
- cacheStore.set(options.filename, compiled);
62
- return compiled;
63
- }
64
-
65
- // check cache
66
- if (options.filename && options.cache) {
67
- return cacheStore.get(options.filename);
68
- }
69
-
70
- return compiled;
71
- }
72
-
73
- /**
74
- * Read `path` with `options` with
75
- * callback `(err, str)`. When `options.cache`
76
- * is true the template string will be cached.
77
- *
78
- * @param path
79
- * @param {String} options
80
- */
81
- export async function read(path: string, options: any): Promise<string> {
82
- let str = readCache.get(path);
83
-
84
- // cached (only if cached is a string and not a compiled template function)
85
- if (options.cache && str && typeof str === "string") {
86
- return str;
87
- }
88
-
89
- // read
90
- str = await readFile(path, "utf8");
91
-
92
- // remove extraneous utf8 BOM marker
93
- str = str.replace(/^\uFEFF/, "");
94
-
95
- if (options.cache) {
96
- readCache.set(path, str);
97
- }
98
-
99
- return str;
100
- }
101
-
102
- /**
103
- * Read `path` with `options` with
104
- * callback `(err, str)`. When `options.cache`
105
- * is true the partial string will be cached.
106
- *
107
- * @param path
108
- * @param {String} options
109
- * @api private
110
- */
111
- export function readPartials(path: string, options: any): Promise<Record<string, string> | void> {
112
- if (!options.partials) {
113
- return Promise.resolve();
114
- }
115
-
116
- const keys = Object.keys(options.partials);
117
- const partials: Record<string, string> = {};
118
-
119
- return new Promise((resolve, reject) => {
120
- async function next(index: number): Promise<any> {
121
- if (index === keys.length) {
122
- return resolve(partials);
123
- }
124
-
125
- const key = keys[index];
126
- const partialPath = options.partials[key];
127
-
128
- if (partialPath === undefined || partialPath === null || partialPath === false) {
129
- return next(++index);
130
- }
131
-
132
- let file;
133
- if (isAbsolute(partialPath)) {
134
- if (extname(partialPath) !== "") {
135
- file = partialPath;
136
- } else {
137
- file = join(partialPath + extname(path));
138
- }
139
- } else {
140
- file = join(dirname(path), partialPath + extname(path));
141
- }
142
-
143
- try {
144
- partials[key] = await read(file, options);
145
- next(++index);
146
- } catch (err) {
147
- reject(err);
148
- }
149
- }
150
-
151
- next(0);
152
- });
153
- }
@@ -1,134 +0,0 @@
1
- import "../components/index.js";
2
- import "../index.js";
3
-
4
- import {join} from "node:path";
5
-
6
- import {getEngine, getEngines} from "./getEngines.js";
7
-
8
- const rootDir = import.meta.dirname; // automatically replaced by import.meta.dirname on build
9
-
10
- describe("getEngines", () => {
11
- describe("getEngine()", () => {
12
- describe("render file", () => {
13
- it("should return a render function", async () => {
14
- const render = getEngine("ejs");
15
-
16
- const result = await new Promise((resolve, reject) => {
17
- render(
18
- join(rootDir, "../../test/fixtures/ejs/user.ejs"),
19
- {
20
- user: {
21
- name: "Tobi"
22
- }
23
- },
24
- (err, html) => {
25
- err ? reject(err) : resolve(html);
26
- }
27
- );
28
- });
29
-
30
- expect(result).toEqual("<p>Tobi</p>");
31
- });
32
- it("should catch error", async () => {
33
- const render = getEngine("ejs");
34
-
35
- const error: any = await new Promise((resolve) => {
36
- render(
37
- join(rootDir, "../../test/fixtures/ejs/user2.ejs"),
38
- {
39
- user: {
40
- name: "Tobi"
41
- }
42
- },
43
- (err) => {
44
- resolve(err);
45
- }
46
- );
47
- });
48
-
49
- expect(error.message).toContain("ENOENT: no such file or directory");
50
- });
51
- });
52
- describe("render template", () => {
53
- it("should return a render function", async () => {
54
- const {render} = getEngine("ejs");
55
-
56
- const result = await new Promise((resolve, reject) => {
57
- render(
58
- "<p><%= user.name %></p>",
59
- {
60
- user: {
61
- name: "Tobi"
62
- }
63
- },
64
- (err, html) => {
65
- err ? reject(err) : resolve(html);
66
- }
67
- );
68
- });
69
-
70
- expect(result).toEqual("<p>Tobi</p>");
71
- });
72
- it("should catch error", async () => {
73
- const {render} = getEngine("ejs");
74
-
75
- const error: any = await new Promise((resolve) => {
76
- render(
77
- "<p><%= user.name></p>",
78
- {
79
- user: {
80
- name: "Tobi"
81
- }
82
- },
83
- (err) => {
84
- resolve(err);
85
- }
86
- );
87
- });
88
-
89
- expect(error.message).toContain('Could not find matching close tag for "<%=".');
90
- });
91
- });
92
- });
93
- describe("getEngines()", () => {
94
- it("should return engines", () => {
95
- const engines = getEngines();
96
- expect(Object.keys(engines)).toEqual([
97
- "atpl",
98
- "bracket",
99
- "dot",
100
- "dust",
101
- "ect",
102
- "ejs",
103
- "haml-coffee",
104
- "haml",
105
- "hamlet",
106
- "handlebars",
107
- "hogan",
108
- "htmling",
109
- "jazz",
110
- "jqtpl",
111
- "just",
112
- "liquor",
113
- "lodash",
114
- "mote",
115
- "mustache",
116
- "nunjucks",
117
- "plates",
118
- "pug",
119
- "ractive",
120
- "react",
121
- "slm",
122
- "squirrelly",
123
- "swig",
124
- "templayed",
125
- "twig",
126
- "twing",
127
- "underscore",
128
- "vash",
129
- "velocityjs",
130
- "walrus"
131
- ]);
132
- });
133
- });
134
- });
@@ -1,60 +0,0 @@
1
- import {pascalCase} from "pascal-case";
2
-
3
- import {EngineOptions} from "../components/Engine.js";
4
- import {engines} from "../registries/EnginesContainer.js";
5
-
6
- export type RenderCallback = (err: Error | null, str?: string | any) => any;
7
- export interface EngineFunction {
8
- (path: string, options: any, cb: RenderCallback): void;
9
- (path: string, options: any): Promise<string>;
10
-
11
- render(template: string, options: any, cb: RenderCallback): void;
12
- render(template: string, options: any): Promise<string>;
13
- }
14
-
15
- const callbackify = async (fn: any, cb?: RenderCallback) => {
16
- try {
17
- const html = await fn();
18
- cb && cb(null, html);
19
- return html;
20
- } catch (er) {
21
- if (cb) {
22
- cb(er);
23
- } else {
24
- throw er;
25
- }
26
- }
27
- };
28
-
29
- export function getEngine(name: string): EngineFunction {
30
- const cb = async (path: string, options: any, cb?: RenderCallback) => {
31
- const engine = engines.get(name)!;
32
- await engine.$onInit();
33
-
34
- return callbackify(() => engine.renderFile(path, options), cb);
35
- };
36
-
37
- cb.render = async (template: string, options: EngineOptions, cb: RenderCallback) => {
38
- const engine = engines.get(name)!;
39
- await engine.$onInit();
40
-
41
- return callbackify(() => engine.render(template, options), cb);
42
- };
43
-
44
- return cb as any;
45
- }
46
-
47
- let localEngines: any;
48
-
49
- export function getEngines(): Record<string, EngineFunction> {
50
- localEngines =
51
- localEngines ||
52
- engines.getSupportedEngines().reduce((acc, key) => {
53
- return {
54
- ...acc,
55
- [key]: getEngine(key)
56
- };
57
- }, {});
58
-
59
- return localEngines;
60
- }
package/vitest.config.mts DELETED
@@ -1,21 +0,0 @@
1
- // @ts-ignore
2
- import {presets} from "@tsed/vitest/presets";
3
- import {defineConfig} from "vitest/config";
4
-
5
- export default defineConfig(
6
- {
7
- ...presets,
8
- test: {
9
- ...presets.test,
10
- coverage: {
11
- ...presets.test.coverage,
12
- thresholds: {
13
- statements: 0,
14
- branches: 0,
15
- functions: 0,
16
- lines: 0
17
- }
18
- }
19
- }
20
- }
21
- );