@tsed/platform-views 7.0.0-beta.2 → 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.
@@ -1,31 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.View = void 0;
4
- const core_1 = require("@tsed/core");
5
- /**
6
- * Use a view and sends the rendered HTML string to the client. Optional parameter:
7
- *
8
- * * viewOptions, an object whose properties define local variables for the view.
9
- *
10
- * The view argument is a string that is the file path of the view file to render.
11
- * This can be an absolute path, or a path relative to the views setting.
12
- * If the path does not contain a file extension, then the view engine setting determines the file extension.
13
- * If the path does contain a file extension, then Express will load the module for the specified template engine (via require())
14
- * and render it using the loaded module’s __express function.
15
- *
16
- * For more information, see [Using template engines with Express](http://expressjs.com/guide/using-template-engines.html).
17
- *
18
- * > NOTE: The view argument performs file system operations like reading a file from disk and evaluating Node.js modules,
19
- * and as so for security reasons should not contain input from the end-user.
20
- *
21
- * @param path Relative path to the view file.
22
- * @param options Additional options
23
- * @decorator
24
- * @operation
25
- * @response
26
- */
27
- function View(path, options) {
28
- return (0, core_1.StoreSet)("view", { path, options });
29
- }
30
- exports.View = View;
4
+ var schema_1 = require("@tsed/schema");
5
+ Object.defineProperty(exports, "View", { enumerable: true, get: function () { return schema_1.View; } });
31
6
  //# sourceMappingURL=view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/decorators/view.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAEpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,IAAI,CAAC,IAAY,EAAE,OAAgB;IACjD,OAAO,IAAA,eAAQ,EAAC,MAAM,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAQ,CAAC;AAClD,CAAC;AAFD,oBAEC","sourcesContent":["import {StoreSet} from \"@tsed/core\";\n\n/**\n * Use a view and sends the rendered HTML string to the client. Optional parameter:\n *\n * * viewOptions, an object whose properties define local variables for the view.\n *\n * The view argument is a string that is the file path of the view file to render.\n * This can be an absolute path, or a path relative to the views setting.\n * If the path does not contain a file extension, then the view engine setting determines the file extension.\n * If the path does contain a file extension, then Express will load the module for the specified template engine (via require())\n * and render it using the loaded module’s __express function.\n *\n * For more information, see [Using template engines with Express](http://expressjs.com/guide/using-template-engines.html).\n *\n * > NOTE: The view argument performs file system operations like reading a file from disk and evaluating Node.js modules,\n * and as so for security reasons should not contain input from the end-user.\n *\n * @param path Relative path to the view file.\n * @param options Additional options\n * @decorator\n * @operation\n * @response\n */\nexport function View(path: string, options?: Object): MethodDecorator {\n return StoreSet(\"view\", {path, options}) as any;\n}\n"]}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/decorators/view.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAA1B,8FAAA,IAAI,OAAA","sourcesContent":["export {View} from \"@tsed/schema\";\n"]}
package/lib/cjs/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
+ /**
3
+ * @file Automatically generated by barrelsby.
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./decorators/view"), exports);
5
- (0, tslib_1.__exportStar)(require("./domain/PlatformViewsSettings"), exports);
6
- (0, tslib_1.__exportStar)(require("./services/PlatformViews"), exports);
7
+ tslib_1.__exportStar(require("./decorators/view"), exports);
8
+ tslib_1.__exportStar(require("./domain/PlatformViewsSettings"), exports);
9
+ tslib_1.__exportStar(require("./services/PlatformViews"), exports);
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iEAAkC;AAClC,8EAA+C;AAC/C,wEAAyC","sourcesContent":["export * from \"./decorators/view\";\nexport * from \"./domain/PlatformViewsSettings\";\nexport * from \"./services/PlatformViews\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,4DAAkC;AAClC,yEAA+C;AAC/C,mEAAyC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./decorators/view\";\nexport * from \"./domain/PlatformViewsSettings\";\nexport * from \"./services/PlatformViews\";\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -5,19 +5,23 @@ exports.PlatformViews = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  const core_1 = require("@tsed/core");
7
7
  const di_1 = require("@tsed/di");
8
- const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
8
+ const fs_1 = tslib_1.__importDefault(require("fs"));
9
9
  const path_1 = require("path");
10
10
  const PlatformViewsSettings_1 = require("../domain/PlatformViewsSettings");
11
- function patchEJS(ejs) {
11
+ async function patchEJS(ejs) {
12
+ if (!ejs) {
13
+ const mod = await Promise.resolve().then(() => tslib_1.__importStar(require("ejs")));
14
+ ejs = mod.default;
15
+ }
12
16
  return {
13
17
  compile(str, { client, ...options }) {
14
- return (ejs || require("ejs")).compile(str, options);
18
+ return ejs.compile(str, options);
15
19
  }
16
20
  };
17
21
  }
18
22
  async function tryImport(name) {
19
23
  try {
20
- return await Promise.resolve().then(() => (0, tslib_1.__importStar)(require(name)));
24
+ return await Promise.resolve().then(() => tslib_1.__importStar(require(name)));
21
25
  }
22
26
  catch (er) {
23
27
  // istanbul ignore next
@@ -34,7 +38,7 @@ let PlatformViews = class PlatformViews {
34
38
  }
35
39
  async $onInit() {
36
40
  if (!this.disabled) {
37
- (0, tslib_1.__classPrivateFieldSet)(this, _PlatformViews_extensions, new Map(Object.entries({
41
+ tslib_1.__classPrivateFieldSet(this, _PlatformViews_extensions, new Map(Object.entries({
38
42
  ...PlatformViewsSettings_1.PLATFORM_VIEWS_EXTENSIONS,
39
43
  ...this.extensionsOptions
40
44
  })), "f");
@@ -48,8 +52,8 @@ let PlatformViews = class PlatformViews {
48
52
  async loadFromConsolidate() {
49
53
  const cons = await tryImport("consolidate");
50
54
  if (cons) {
51
- cons.requires.ejs = patchEJS(cons.requires.ejs);
52
- (0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_extensions, "f").forEach((engineType) => {
55
+ cons.requires.ejs = await patchEJS(cons.requires.ejs);
56
+ tslib_1.__classPrivateFieldGet(this, _PlatformViews_extensions, "f").forEach((engineType) => {
53
57
  if (cons[engineType]) {
54
58
  const options = this.getEngineOptions(engineType);
55
59
  if (options.requires) {
@@ -66,8 +70,8 @@ let PlatformViews = class PlatformViews {
66
70
  async loadFromTsedEngines() {
67
71
  const tsed = await tryImport("@tsed/engines");
68
72
  if (tsed) {
69
- tsed.requires.set("ejs", patchEJS(tsed.requires.get("ejs")));
70
- (0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_extensions, "f").forEach((engineType) => {
73
+ tsed.requires.set("ejs", await patchEJS(tsed.requires.get("ejs")));
74
+ tslib_1.__classPrivateFieldGet(this, _PlatformViews_extensions, "f").forEach((engineType) => {
71
75
  if (tsed.engines.has(engineType)) {
72
76
  const options = this.getEngineOptions(engineType);
73
77
  if (options.requires) {
@@ -82,7 +86,7 @@ let PlatformViews = class PlatformViews {
82
86
  }
83
87
  }
84
88
  getEngines() {
85
- return [...(0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_extensions, "f").entries()].map(([extension, engineType]) => {
89
+ return [...tslib_1.__classPrivateFieldGet(this, _PlatformViews_extensions, "f").entries()].map(([extension, engineType]) => {
86
90
  const engine = this.getEngine(this.getExtension(engineType));
87
91
  return {
88
92
  extension,
@@ -91,17 +95,17 @@ let PlatformViews = class PlatformViews {
91
95
  });
92
96
  }
93
97
  registerEngine(engineType, engine) {
94
- (0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_engines, "f").set(engineType, engine);
98
+ tslib_1.__classPrivateFieldGet(this, _PlatformViews_engines, "f").set(engineType, engine);
95
99
  return this;
96
100
  }
97
101
  getEngine(type) {
98
- return (0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_engines, "f").get((0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_extensions, "f").get(type) || type);
102
+ return tslib_1.__classPrivateFieldGet(this, _PlatformViews_engines, "f").get(tslib_1.__classPrivateFieldGet(this, _PlatformViews_extensions, "f").get(type) || type);
99
103
  }
100
104
  getEngineOptions(engineType) {
101
105
  return (0, core_1.getValue)(this.engineOptions, engineType, {});
102
106
  }
103
107
  async render(viewPath, options = {}) {
104
- const { path, extension } = (0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_cachePaths, "f").get(viewPath) || (0, tslib_1.__classPrivateFieldGet)(this, _PlatformViews_cachePaths, "f").set(viewPath, this.resolve(viewPath)).get(viewPath);
108
+ const { path, extension } = tslib_1.__classPrivateFieldGet(this, _PlatformViews_cachePaths, "f").get(viewPath) || tslib_1.__classPrivateFieldGet(this, _PlatformViews_cachePaths, "f").set(viewPath, this.resolve(viewPath)).get(viewPath);
105
109
  const engine = this.getEngine(extension);
106
110
  if (!engine) {
107
111
  throw new Error(`Engine not found to render the following "${viewPath}"`);
@@ -127,35 +131,35 @@ let PlatformViews = class PlatformViews {
127
131
  }
128
132
  };
129
133
  _PlatformViews_extensions = new WeakMap(), _PlatformViews_engines = new WeakMap(), _PlatformViews_cachePaths = new WeakMap();
130
- (0, tslib_1.__decorate)([
134
+ tslib_1.__decorate([
131
135
  (0, di_1.Constant)("env"),
132
- (0, tslib_1.__metadata)("design:type", String)
136
+ tslib_1.__metadata("design:type", String)
133
137
  ], PlatformViews.prototype, "env", void 0);
134
- (0, tslib_1.__decorate)([
138
+ tslib_1.__decorate([
135
139
  (0, di_1.Constant)("views.root", `${process.cwd()}/views`),
136
- (0, tslib_1.__metadata)("design:type", String)
140
+ tslib_1.__metadata("design:type", String)
137
141
  ], PlatformViews.prototype, "root", void 0);
138
- (0, tslib_1.__decorate)([
142
+ tslib_1.__decorate([
139
143
  (0, di_1.Constant)("views.cache"),
140
- (0, tslib_1.__metadata)("design:type", Boolean)
144
+ tslib_1.__metadata("design:type", Boolean)
141
145
  ], PlatformViews.prototype, "cache", void 0);
142
- (0, tslib_1.__decorate)([
146
+ tslib_1.__decorate([
143
147
  (0, di_1.Constant)("views.disabled", false),
144
- (0, tslib_1.__metadata)("design:type", String)
148
+ tslib_1.__metadata("design:type", String)
145
149
  ], PlatformViews.prototype, "disabled", void 0);
146
- (0, tslib_1.__decorate)([
150
+ tslib_1.__decorate([
147
151
  (0, di_1.Constant)("views.viewEngine", "ejs"),
148
- (0, tslib_1.__metadata)("design:type", String)
152
+ tslib_1.__metadata("design:type", String)
149
153
  ], PlatformViews.prototype, "viewEngine", void 0);
150
- (0, tslib_1.__decorate)([
154
+ tslib_1.__decorate([
151
155
  (0, di_1.Constant)("views.extensions", {}),
152
- (0, tslib_1.__metadata)("design:type", Object)
156
+ tslib_1.__metadata("design:type", Object)
153
157
  ], PlatformViews.prototype, "extensionsOptions", void 0);
154
- (0, tslib_1.__decorate)([
158
+ tslib_1.__decorate([
155
159
  (0, di_1.Constant)("views.options", {}),
156
- (0, tslib_1.__metadata)("design:type", Object)
160
+ tslib_1.__metadata("design:type", Object)
157
161
  ], PlatformViews.prototype, "engineOptions", void 0);
158
- PlatformViews = (0, tslib_1.__decorate)([
162
+ PlatformViews = tslib_1.__decorate([
159
163
  (0, di_1.Module)({
160
164
  views: {
161
165
  exists: true
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformViews.js","sourceRoot":"","sources":["../../../src/services/PlatformViews.ts"],"names":[],"mappings":";;;;;AAAA,qCAAyC;AACzC,iCAA0C;AAC1C,yDAAoB;AACpB,+BAA4C;AAC5C,2EAKyC;AAEzC,SAAS,QAAQ,CAAC,GAAQ;IACxB,OAAO;QACL,OAAO,CAAC,GAAW,EAAE,EAAC,MAAM,EAAE,GAAG,OAAO,EAAM;YAC5C,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI;QACF,OAAO,qEAAa,IAAI,GAAC,CAAC;KAC3B;IAAC,OAAO,EAAE,EAAE;QACX,uBAAuB;KACxB;AACH,CAAC;AAED;;GAEG;AAMH,IAAa,aAAa,GAA1B,MAAa,aAAa;IAA1B;QAsBE,4CAAiC;QACjC,iCAAW,IAAI,GAAG,EAA8B,EAAC;QACjD,oCAAc,IAAI,GAAG,EAA6C,EAAC;IA0HrE,CAAC;IAxHC,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,oCAAA,IAAI,6BAAe,IAAI,GAAG,CACxB,MAAM,CAAC,OAAO,CAAC;gBACb,GAAG,iDAAyB;gBAC5B,GAAG,IAAI,CAAC,iBAAiB;aAC1B,CAAC,CACH,MAAA,CAAC;YAEF,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAClC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAEhD,oCAAA,IAAI,iCAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAK,IAAY,CAAC,UAAU,CAAC,EAAE;oBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAElD,IAAI,OAAO,CAAC,QAAQ,EAAE;wBACnB,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;qBACvD;oBAED,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;wBAC9B,OAAO;wBACP,MAAM,EAAG,IAAY,CAAC,UAAU,CAAC;qBAClC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;QAE9C,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE7D,oCAAA,IAAI,iCAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;oBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAElD,IAAI,OAAO,CAAC,QAAQ,EAAE;wBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACjD;oBAED,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;wBAC9B,OAAO;wBACP,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;qBACnC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,oCAAA,IAAI,iCAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAE,CAAC;YAE9D,OAAO;gBACL,SAAS;gBACT,MAAM;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,MAA0B;QAC3D,oCAAA,IAAI,8BAAS,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,oCAAA,IAAI,8BAAS,CAAC,GAAG,CAAC,oCAAA,IAAI,iCAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB,CAAC,UAAkB;QACjC,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,UAAe,EAAE;QAC9C,MAAM,EAAC,IAAI,EAAE,SAAS,EAAC,GAAG,oCAAA,IAAI,iCAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,oCAAA,IAAI,iCAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAClI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,GAAG,CAAC,CAAC;SAC3E;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,UAAG,CAAC,IAAI,EAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnH,CAAC;IAES,YAAY,CAAC,QAAgB;QACrC,OAAO,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAES,OAAO,CAAC,QAAgB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE9C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;QAErE,MAAM,IAAI,GACR;YACE,QAAQ;YACR,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClC,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACjD,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;QAEpD,OAAO;YACL,IAAI;YACJ,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAA;;AAhJC;IADC,IAAA,aAAQ,EAAC,KAAK,CAAC;;0CACP;AAGT;IADC,IAAA,aAAQ,EAAC,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;;2CAC3B;AAGtB;IADC,IAAA,aAAQ,EAAC,aAAa,CAAC;;4CACA;AAGxB;IADC,IAAA,aAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC;;+CACR;AAG1B;IADC,IAAA,aAAQ,EAAC,kBAAkB,EAAE,KAAK,CAAC;;iDACR;AAG5B;IADC,IAAA,aAAQ,EAAC,kBAAkB,EAAE,EAAE,CAAC;;wDACyB;AAG1D;IADC,IAAA,aAAQ,EAAC,eAAe,EAAE,EAAE,CAAC;;oDACsC;AApBzD,aAAa;IALzB,IAAA,WAAM,EAAC;QACN,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;SACb;KACF,CAAC;GACW,aAAa,CAkJzB;AAlJY,sCAAa","sourcesContent":["import {Env, getValue} from \"@tsed/core\";\nimport {Constant, Module} from \"@tsed/di\";\nimport Fs from \"fs\";\nimport {extname, join, resolve} from \"path\";\nimport {\n PLATFORM_VIEWS_EXTENSIONS,\n PlatformViewEngine,\n PlatformViewsEngineOptions,\n PlatformViewsExtensionsTypes\n} from \"../domain/PlatformViewsSettings\";\n\nfunction patchEJS(ejs: any) {\n return {\n compile(str: string, {client, ...options}: any) {\n return (ejs || require(\"ejs\")).compile(str, options);\n }\n };\n}\n\nasync function tryImport(name: string) {\n try {\n return await import(name);\n } catch (er) {\n // istanbul ignore next\n }\n}\n\n/**\n * @platform\n */\n@Module({\n views: {\n exists: true\n }\n})\nexport class PlatformViews {\n @Constant(\"env\")\n env: Env;\n\n @Constant(\"views.root\", `${process.cwd()}/views`)\n readonly root: string;\n\n @Constant(\"views.cache\")\n readonly cache: boolean;\n\n @Constant(\"views.disabled\", false)\n readonly disabled: string;\n\n @Constant(\"views.viewEngine\", \"ejs\")\n readonly viewEngine: string;\n\n @Constant(\"views.extensions\", {})\n protected extensionsOptions: PlatformViewsExtensionsTypes;\n\n @Constant(\"views.options\", {})\n protected engineOptions: Record<string, PlatformViewsEngineOptions>;\n\n #extensions: Map<string, string>;\n #engines = new Map<string, PlatformViewEngine>();\n #cachePaths = new Map<string, {path: string; extension: string}>();\n\n async $onInit() {\n if (!this.disabled) {\n this.#extensions = new Map(\n Object.entries({\n ...PLATFORM_VIEWS_EXTENSIONS,\n ...this.extensionsOptions\n })\n );\n\n await this.loadFromConsolidate();\n await this.loadFromTsedEngines();\n }\n }\n\n /**\n * @deprecated\n */\n async loadFromConsolidate() {\n const cons = await tryImport(\"consolidate\");\n if (cons) {\n cons.requires.ejs = patchEJS(cons.requires.ejs);\n\n this.#extensions.forEach((engineType) => {\n if ((cons as any)[engineType]) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n (cons.requires as any)[engineType] = options.requires;\n }\n\n this.registerEngine(engineType, {\n options,\n render: (cons as any)[engineType]\n });\n }\n });\n }\n }\n\n async loadFromTsedEngines() {\n const tsed = await tryImport(\"@tsed/engines\");\n\n if (tsed) {\n tsed.requires.set(\"ejs\", patchEJS(tsed.requires.get(\"ejs\")));\n\n this.#extensions.forEach((engineType) => {\n if (tsed.engines.has(engineType)) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n tsed.requires.set(engineType, options.requires);\n }\n\n this.registerEngine(engineType, {\n options,\n render: tsed.getEngine(engineType)\n });\n }\n });\n }\n }\n\n getEngines() {\n return [...this.#extensions.entries()].map(([extension, engineType]) => {\n const engine = this.getEngine(this.getExtension(engineType))!;\n\n return {\n extension,\n engine\n };\n });\n }\n\n registerEngine(engineType: string, engine: PlatformViewEngine) {\n this.#engines.set(engineType, engine);\n\n return this;\n }\n\n getEngine(type: string) {\n return this.#engines.get(this.#extensions.get(type) || type);\n }\n\n getEngineOptions(engineType: string): PlatformViewsEngineOptions {\n return getValue(this.engineOptions, engineType, {});\n }\n\n async render(viewPath: string, options: any = {}): Promise<string> {\n const {path, extension} = this.#cachePaths.get(viewPath) || this.#cachePaths.set(viewPath, this.resolve(viewPath)).get(viewPath)!;\n const engine = this.getEngine(extension);\n\n if (!engine) {\n throw new Error(`Engine not found to render the following \"${viewPath}\"`);\n }\n\n return engine.render(path, Object.assign({cache: this.cache || this.env === Env.PROD}, engine.options, options));\n }\n\n protected getExtension(viewPath: string) {\n return (extname(viewPath) || this.viewEngine).replace(/\\./, \"\");\n }\n\n protected resolve(viewPath: string) {\n const extension = this.getExtension(viewPath);\n\n viewPath = viewPath.replace(extname(viewPath), \"\") + \".\" + extension;\n\n const path =\n [\n viewPath,\n resolve(join(this.root, viewPath)),\n resolve(join(process.cwd(), \"views\", viewPath)),\n resolve(join(process.cwd(), \"public\", viewPath))\n ].find((file) => Fs.existsSync(file)) || viewPath;\n\n return {\n path,\n extension\n };\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformViews.js","sourceRoot":"","sources":["../../../src/services/PlatformViews.ts"],"names":[],"mappings":";;;;;AAAA,qCAAyC;AACzC,iCAA0C;AAC1C,oDAAoB;AACpB,+BAA4C;AAC5C,2EAKyC;AAEzC,KAAK,UAAU,QAAQ,CAAC,GAAQ;IAC9B,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,GAAG,GAAG,gEAAa,KAAK,GAAC,CAAC;QAChC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;KACnB;IAED,OAAO;QACL,OAAO,CAAC,GAAW,EAAE,EAAC,MAAM,EAAE,GAAG,OAAO,EAAM;YAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,IAAI;QACF,OAAO,gEAAa,IAAI,GAAC,CAAC;KAC3B;IAAC,OAAO,EAAE,EAAE;QACX,uBAAuB;KACxB;AACH,CAAC;AAED;;GAEG;AAMH,IAAa,aAAa,GAA1B,MAAa,aAAa;IAA1B;QAsBE,4CAAiC;QACjC,iCAAW,IAAI,GAAG,EAA8B,EAAC;QACjD,oCAAc,IAAI,GAAG,EAA6C,EAAC;IA0HrE,CAAC;IAxHC,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,+BAAA,IAAI,6BAAe,IAAI,GAAG,CACxB,MAAM,CAAC,OAAO,CAAC;gBACb,GAAG,iDAAyB;gBAC5B,GAAG,IAAI,CAAC,iBAAiB;aAC1B,CAAC,CACH,MAAA,CAAC;YAEF,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAClC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAEtD,+BAAA,IAAI,iCAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAK,IAAY,CAAC,UAAU,CAAC,EAAE;oBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAElD,IAAI,OAAO,CAAC,QAAQ,EAAE;wBACnB,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;qBACvD;oBAED,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;wBAC9B,OAAO;wBACP,MAAM,EAAG,IAAY,CAAC,UAAU,CAAC;qBAClC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;QAE9C,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEnE,+BAAA,IAAI,iCAAY,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;oBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBAElD,IAAI,OAAO,CAAC,QAAQ,EAAE;wBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACjD;oBAED,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;wBAC9B,OAAO;wBACP,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;qBACnC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,+BAAA,IAAI,iCAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAE,CAAC;YAE9D,OAAO;gBACL,SAAS;gBACT,MAAM;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,UAAkB,EAAE,MAA0B;QAC3D,+BAAA,IAAI,8BAAS,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,+BAAA,IAAI,8BAAS,CAAC,GAAG,CAAC,+BAAA,IAAI,iCAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,gBAAgB,CAAC,UAAkB;QACjC,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,UAAe,EAAE;QAC9C,MAAM,EAAC,IAAI,EAAE,SAAS,EAAC,GAAG,+BAAA,IAAI,iCAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,+BAAA,IAAI,iCAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAClI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,GAAG,CAAC,CAAC;SAC3E;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,UAAG,CAAC,IAAI,EAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnH,CAAC;IAES,YAAY,CAAC,QAAgB;QACrC,OAAO,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAES,OAAO,CAAC,QAAgB;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE9C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;QAErE,MAAM,IAAI,GACR;YACE,QAAQ;YACR,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClC,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAA,cAAO,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACjD,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC;QAEpD,OAAO;YACL,IAAI;YACJ,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAA;;AAhJC;IADC,IAAA,aAAQ,EAAC,KAAK,CAAC;;0CACP;AAGT;IADC,IAAA,aAAQ,EAAC,YAAY,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;;2CAC3B;AAGtB;IADC,IAAA,aAAQ,EAAC,aAAa,CAAC;;4CACA;AAGxB;IADC,IAAA,aAAQ,EAAC,gBAAgB,EAAE,KAAK,CAAC;;+CACR;AAG1B;IADC,IAAA,aAAQ,EAAC,kBAAkB,EAAE,KAAK,CAAC;;iDACR;AAG5B;IADC,IAAA,aAAQ,EAAC,kBAAkB,EAAE,EAAE,CAAC;;wDACyB;AAG1D;IADC,IAAA,aAAQ,EAAC,eAAe,EAAE,EAAE,CAAC;;oDACsC;AApBzD,aAAa;IALzB,IAAA,WAAM,EAAC;QACN,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;SACb;KACF,CAAC;GACW,aAAa,CAkJzB;AAlJY,sCAAa","sourcesContent":["import {Env, getValue} from \"@tsed/core\";\nimport {Constant, Module} from \"@tsed/di\";\nimport Fs from \"fs\";\nimport {extname, join, resolve} from \"path\";\nimport {\n PLATFORM_VIEWS_EXTENSIONS,\n PlatformViewEngine,\n PlatformViewsEngineOptions,\n PlatformViewsExtensionsTypes\n} from \"../domain/PlatformViewsSettings\";\n\nasync function patchEJS(ejs: any) {\n if (!ejs) {\n const mod = await import(\"ejs\");\n ejs = mod.default;\n }\n\n return {\n compile(str: string, {client, ...options}: any) {\n return ejs.compile(str, options);\n }\n };\n}\n\nasync function tryImport(name: string) {\n try {\n return await import(name);\n } catch (er) {\n // istanbul ignore next\n }\n}\n\n/**\n * @platform\n */\n@Module({\n views: {\n exists: true\n }\n})\nexport class PlatformViews {\n @Constant(\"env\")\n env: Env;\n\n @Constant(\"views.root\", `${process.cwd()}/views`)\n readonly root: string;\n\n @Constant(\"views.cache\")\n readonly cache: boolean;\n\n @Constant(\"views.disabled\", false)\n readonly disabled: string;\n\n @Constant(\"views.viewEngine\", \"ejs\")\n readonly viewEngine: string;\n\n @Constant(\"views.extensions\", {})\n protected extensionsOptions: PlatformViewsExtensionsTypes;\n\n @Constant(\"views.options\", {})\n protected engineOptions: Record<string, PlatformViewsEngineOptions>;\n\n #extensions: Map<string, string>;\n #engines = new Map<string, PlatformViewEngine>();\n #cachePaths = new Map<string, {path: string; extension: string}>();\n\n async $onInit() {\n if (!this.disabled) {\n this.#extensions = new Map(\n Object.entries({\n ...PLATFORM_VIEWS_EXTENSIONS,\n ...this.extensionsOptions\n })\n );\n\n await this.loadFromConsolidate();\n await this.loadFromTsedEngines();\n }\n }\n\n /**\n * @deprecated\n */\n async loadFromConsolidate() {\n const cons = await tryImport(\"consolidate\");\n if (cons) {\n cons.requires.ejs = await patchEJS(cons.requires.ejs);\n\n this.#extensions.forEach((engineType) => {\n if ((cons as any)[engineType]) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n (cons.requires as any)[engineType] = options.requires;\n }\n\n this.registerEngine(engineType, {\n options,\n render: (cons as any)[engineType]\n });\n }\n });\n }\n }\n\n async loadFromTsedEngines() {\n const tsed = await tryImport(\"@tsed/engines\");\n\n if (tsed) {\n tsed.requires.set(\"ejs\", await patchEJS(tsed.requires.get(\"ejs\")));\n\n this.#extensions.forEach((engineType) => {\n if (tsed.engines.has(engineType)) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n tsed.requires.set(engineType, options.requires);\n }\n\n this.registerEngine(engineType, {\n options,\n render: tsed.getEngine(engineType)\n });\n }\n });\n }\n }\n\n getEngines() {\n return [...this.#extensions.entries()].map(([extension, engineType]) => {\n const engine = this.getEngine(this.getExtension(engineType))!;\n\n return {\n extension,\n engine\n };\n });\n }\n\n registerEngine(engineType: string, engine: PlatformViewEngine) {\n this.#engines.set(engineType, engine);\n\n return this;\n }\n\n getEngine(type: string) {\n return this.#engines.get(this.#extensions.get(type) || type);\n }\n\n getEngineOptions(engineType: string): PlatformViewsEngineOptions {\n return getValue(this.engineOptions, engineType, {});\n }\n\n async render(viewPath: string, options: any = {}): Promise<string> {\n const {path, extension} = this.#cachePaths.get(viewPath) || this.#cachePaths.set(viewPath, this.resolve(viewPath)).get(viewPath)!;\n const engine = this.getEngine(extension);\n\n if (!engine) {\n throw new Error(`Engine not found to render the following \"${viewPath}\"`);\n }\n\n return engine.render(path, Object.assign({cache: this.cache || this.env === Env.PROD}, engine.options, options));\n }\n\n protected getExtension(viewPath: string) {\n return (extname(viewPath) || this.viewEngine).replace(/\\./, \"\");\n }\n\n protected resolve(viewPath: string) {\n const extension = this.getExtension(viewPath);\n\n viewPath = viewPath.replace(extname(viewPath), \"\") + \".\" + extension;\n\n const path =\n [\n viewPath,\n resolve(join(this.root, viewPath)),\n resolve(join(process.cwd(), \"views\", viewPath)),\n resolve(join(process.cwd(), \"public\", viewPath))\n ].find((file) => Fs.existsSync(file)) || viewPath;\n\n return {\n path,\n extension\n };\n }\n}\n"]}
@@ -1,27 +1,2 @@
1
- import { StoreSet } from "@tsed/core";
2
- /**
3
- * Use a view and sends the rendered HTML string to the client. Optional parameter:
4
- *
5
- * * viewOptions, an object whose properties define local variables for the view.
6
- *
7
- * The view argument is a string that is the file path of the view file to render.
8
- * This can be an absolute path, or a path relative to the views setting.
9
- * If the path does not contain a file extension, then the view engine setting determines the file extension.
10
- * If the path does contain a file extension, then Express will load the module for the specified template engine (via require())
11
- * and render it using the loaded module’s __express function.
12
- *
13
- * For more information, see [Using template engines with Express](http://expressjs.com/guide/using-template-engines.html).
14
- *
15
- * > NOTE: The view argument performs file system operations like reading a file from disk and evaluating Node.js modules,
16
- * and as so for security reasons should not contain input from the end-user.
17
- *
18
- * @param path Relative path to the view file.
19
- * @param options Additional options
20
- * @decorator
21
- * @operation
22
- * @response
23
- */
24
- export function View(path, options) {
25
- return StoreSet("view", { path, options });
26
- }
1
+ export { View } from "@tsed/schema";
27
2
  //# sourceMappingURL=view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/decorators/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,OAAgB;IACjD,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,OAAO,EAAC,CAAQ,CAAC;AAClD,CAAC","sourcesContent":["import {StoreSet} from \"@tsed/core\";\n\n/**\n * Use a view and sends the rendered HTML string to the client. Optional parameter:\n *\n * * viewOptions, an object whose properties define local variables for the view.\n *\n * The view argument is a string that is the file path of the view file to render.\n * This can be an absolute path, or a path relative to the views setting.\n * If the path does not contain a file extension, then the view engine setting determines the file extension.\n * If the path does contain a file extension, then Express will load the module for the specified template engine (via require())\n * and render it using the loaded module’s __express function.\n *\n * For more information, see [Using template engines with Express](http://expressjs.com/guide/using-template-engines.html).\n *\n * > NOTE: The view argument performs file system operations like reading a file from disk and evaluating Node.js modules,\n * and as so for security reasons should not contain input from the end-user.\n *\n * @param path Relative path to the view file.\n * @param options Additional options\n * @decorator\n * @operation\n * @response\n */\nexport function View(path: string, options?: Object): MethodDecorator {\n return StoreSet(\"view\", {path, options}) as any;\n}\n"]}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/decorators/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC","sourcesContent":["export {View} from \"@tsed/schema\";\n"]}
package/lib/esm/index.js CHANGED
@@ -1,4 +1,7 @@
1
- export * from "./decorators/view";
2
- export * from "./domain/PlatformViewsSettings";
3
- export * from "./services/PlatformViews";
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
4
+ export * from "./decorators/view.js";
5
+ export * from "./domain/PlatformViewsSettings.js";
6
+ export * from "./services/PlatformViews.js";
4
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./decorators/view\";\nexport * from \"./domain/PlatformViewsSettings\";\nexport * from \"./services/PlatformViews\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./decorators/view\";\nexport * from \"./domain/PlatformViewsSettings\";\nexport * from \"./services/PlatformViews\";\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -4,11 +4,15 @@ import { Env, getValue } from "@tsed/core";
4
4
  import { Constant, Module } from "@tsed/di";
5
5
  import Fs from "fs";
6
6
  import { extname, join, resolve } from "path";
7
- import { PLATFORM_VIEWS_EXTENSIONS } from "../domain/PlatformViewsSettings";
8
- function patchEJS(ejs) {
7
+ import { PLATFORM_VIEWS_EXTENSIONS } from "../domain/PlatformViewsSettings.js";
8
+ async function patchEJS(ejs) {
9
+ if (!ejs) {
10
+ const mod = await import("ejs");
11
+ ejs = mod.default;
12
+ }
9
13
  return {
10
14
  compile(str, { client, ...options }) {
11
- return (ejs || require("ejs")).compile(str, options);
15
+ return ejs.compile(str, options);
12
16
  }
13
17
  };
14
18
  }
@@ -45,7 +49,7 @@ let PlatformViews = class PlatformViews {
45
49
  async loadFromConsolidate() {
46
50
  const cons = await tryImport("consolidate");
47
51
  if (cons) {
48
- cons.requires.ejs = patchEJS(cons.requires.ejs);
52
+ cons.requires.ejs = await patchEJS(cons.requires.ejs);
49
53
  __classPrivateFieldGet(this, _PlatformViews_extensions, "f").forEach((engineType) => {
50
54
  if (cons[engineType]) {
51
55
  const options = this.getEngineOptions(engineType);
@@ -63,7 +67,7 @@ let PlatformViews = class PlatformViews {
63
67
  async loadFromTsedEngines() {
64
68
  const tsed = await tryImport("@tsed/engines");
65
69
  if (tsed) {
66
- tsed.requires.set("ejs", patchEJS(tsed.requires.get("ejs")));
70
+ tsed.requires.set("ejs", await patchEJS(tsed.requires.get("ejs")));
67
71
  __classPrivateFieldGet(this, _PlatformViews_extensions, "f").forEach((engineType) => {
68
72
  if (tsed.engines.has(engineType)) {
69
73
  const options = this.getEngineOptions(engineType);
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformViews.js","sourceRoot":"","sources":["../../../src/services/PlatformViews.ts"],"names":[],"mappings":"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","sourcesContent":["import {Env, getValue} from \"@tsed/core\";\nimport {Constant, Module} from \"@tsed/di\";\nimport Fs from \"fs\";\nimport {extname, join, resolve} from \"path\";\nimport {\n PLATFORM_VIEWS_EXTENSIONS,\n PlatformViewEngine,\n PlatformViewsEngineOptions,\n PlatformViewsExtensionsTypes\n} from \"../domain/PlatformViewsSettings\";\n\nfunction patchEJS(ejs: any) {\n return {\n compile(str: string, {client, ...options}: any) {\n return (ejs || require(\"ejs\")).compile(str, options);\n }\n };\n}\n\nasync function tryImport(name: string) {\n try {\n return await import(name);\n } catch (er) {\n // istanbul ignore next\n }\n}\n\n/**\n * @platform\n */\n@Module({\n views: {\n exists: true\n }\n})\nexport class PlatformViews {\n @Constant(\"env\")\n env: Env;\n\n @Constant(\"views.root\", `${process.cwd()}/views`)\n readonly root: string;\n\n @Constant(\"views.cache\")\n readonly cache: boolean;\n\n @Constant(\"views.disabled\", false)\n readonly disabled: string;\n\n @Constant(\"views.viewEngine\", \"ejs\")\n readonly viewEngine: string;\n\n @Constant(\"views.extensions\", {})\n protected extensionsOptions: PlatformViewsExtensionsTypes;\n\n @Constant(\"views.options\", {})\n protected engineOptions: Record<string, PlatformViewsEngineOptions>;\n\n #extensions: Map<string, string>;\n #engines = new Map<string, PlatformViewEngine>();\n #cachePaths = new Map<string, {path: string; extension: string}>();\n\n async $onInit() {\n if (!this.disabled) {\n this.#extensions = new Map(\n Object.entries({\n ...PLATFORM_VIEWS_EXTENSIONS,\n ...this.extensionsOptions\n })\n );\n\n await this.loadFromConsolidate();\n await this.loadFromTsedEngines();\n }\n }\n\n /**\n * @deprecated\n */\n async loadFromConsolidate() {\n const cons = await tryImport(\"consolidate\");\n if (cons) {\n cons.requires.ejs = patchEJS(cons.requires.ejs);\n\n this.#extensions.forEach((engineType) => {\n if ((cons as any)[engineType]) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n (cons.requires as any)[engineType] = options.requires;\n }\n\n this.registerEngine(engineType, {\n options,\n render: (cons as any)[engineType]\n });\n }\n });\n }\n }\n\n async loadFromTsedEngines() {\n const tsed = await tryImport(\"@tsed/engines\");\n\n if (tsed) {\n tsed.requires.set(\"ejs\", patchEJS(tsed.requires.get(\"ejs\")));\n\n this.#extensions.forEach((engineType) => {\n if (tsed.engines.has(engineType)) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n tsed.requires.set(engineType, options.requires);\n }\n\n this.registerEngine(engineType, {\n options,\n render: tsed.getEngine(engineType)\n });\n }\n });\n }\n }\n\n getEngines() {\n return [...this.#extensions.entries()].map(([extension, engineType]) => {\n const engine = this.getEngine(this.getExtension(engineType))!;\n\n return {\n extension,\n engine\n };\n });\n }\n\n registerEngine(engineType: string, engine: PlatformViewEngine) {\n this.#engines.set(engineType, engine);\n\n return this;\n }\n\n getEngine(type: string) {\n return this.#engines.get(this.#extensions.get(type) || type);\n }\n\n getEngineOptions(engineType: string): PlatformViewsEngineOptions {\n return getValue(this.engineOptions, engineType, {});\n }\n\n async render(viewPath: string, options: any = {}): Promise<string> {\n const {path, extension} = this.#cachePaths.get(viewPath) || this.#cachePaths.set(viewPath, this.resolve(viewPath)).get(viewPath)!;\n const engine = this.getEngine(extension);\n\n if (!engine) {\n throw new Error(`Engine not found to render the following \"${viewPath}\"`);\n }\n\n return engine.render(path, Object.assign({cache: this.cache || this.env === Env.PROD}, engine.options, options));\n }\n\n protected getExtension(viewPath: string) {\n return (extname(viewPath) || this.viewEngine).replace(/\\./, \"\");\n }\n\n protected resolve(viewPath: string) {\n const extension = this.getExtension(viewPath);\n\n viewPath = viewPath.replace(extname(viewPath), \"\") + \".\" + extension;\n\n const path =\n [\n viewPath,\n resolve(join(this.root, viewPath)),\n resolve(join(process.cwd(), \"views\", viewPath)),\n resolve(join(process.cwd(), \"public\", viewPath))\n ].find((file) => Fs.existsSync(file)) || viewPath;\n\n return {\n path,\n extension\n };\n }\n}\n"]}
1
+ {"version":3,"file":"PlatformViews.js","sourceRoot":"","sources":["../../../src/services/PlatformViews.ts"],"names":[],"mappings":"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","sourcesContent":["import {Env, getValue} from \"@tsed/core\";\nimport {Constant, Module} from \"@tsed/di\";\nimport Fs from \"fs\";\nimport {extname, join, resolve} from \"path\";\nimport {\n PLATFORM_VIEWS_EXTENSIONS,\n PlatformViewEngine,\n PlatformViewsEngineOptions,\n PlatformViewsExtensionsTypes\n} from \"../domain/PlatformViewsSettings\";\n\nasync function patchEJS(ejs: any) {\n if (!ejs) {\n const mod = await import(\"ejs\");\n ejs = mod.default;\n }\n\n return {\n compile(str: string, {client, ...options}: any) {\n return ejs.compile(str, options);\n }\n };\n}\n\nasync function tryImport(name: string) {\n try {\n return await import(name);\n } catch (er) {\n // istanbul ignore next\n }\n}\n\n/**\n * @platform\n */\n@Module({\n views: {\n exists: true\n }\n})\nexport class PlatformViews {\n @Constant(\"env\")\n env: Env;\n\n @Constant(\"views.root\", `${process.cwd()}/views`)\n readonly root: string;\n\n @Constant(\"views.cache\")\n readonly cache: boolean;\n\n @Constant(\"views.disabled\", false)\n readonly disabled: string;\n\n @Constant(\"views.viewEngine\", \"ejs\")\n readonly viewEngine: string;\n\n @Constant(\"views.extensions\", {})\n protected extensionsOptions: PlatformViewsExtensionsTypes;\n\n @Constant(\"views.options\", {})\n protected engineOptions: Record<string, PlatformViewsEngineOptions>;\n\n #extensions: Map<string, string>;\n #engines = new Map<string, PlatformViewEngine>();\n #cachePaths = new Map<string, {path: string; extension: string}>();\n\n async $onInit() {\n if (!this.disabled) {\n this.#extensions = new Map(\n Object.entries({\n ...PLATFORM_VIEWS_EXTENSIONS,\n ...this.extensionsOptions\n })\n );\n\n await this.loadFromConsolidate();\n await this.loadFromTsedEngines();\n }\n }\n\n /**\n * @deprecated\n */\n async loadFromConsolidate() {\n const cons = await tryImport(\"consolidate\");\n if (cons) {\n cons.requires.ejs = await patchEJS(cons.requires.ejs);\n\n this.#extensions.forEach((engineType) => {\n if ((cons as any)[engineType]) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n (cons.requires as any)[engineType] = options.requires;\n }\n\n this.registerEngine(engineType, {\n options,\n render: (cons as any)[engineType]\n });\n }\n });\n }\n }\n\n async loadFromTsedEngines() {\n const tsed = await tryImport(\"@tsed/engines\");\n\n if (tsed) {\n tsed.requires.set(\"ejs\", await patchEJS(tsed.requires.get(\"ejs\")));\n\n this.#extensions.forEach((engineType) => {\n if (tsed.engines.has(engineType)) {\n const options = this.getEngineOptions(engineType);\n\n if (options.requires) {\n tsed.requires.set(engineType, options.requires);\n }\n\n this.registerEngine(engineType, {\n options,\n render: tsed.getEngine(engineType)\n });\n }\n });\n }\n }\n\n getEngines() {\n return [...this.#extensions.entries()].map(([extension, engineType]) => {\n const engine = this.getEngine(this.getExtension(engineType))!;\n\n return {\n extension,\n engine\n };\n });\n }\n\n registerEngine(engineType: string, engine: PlatformViewEngine) {\n this.#engines.set(engineType, engine);\n\n return this;\n }\n\n getEngine(type: string) {\n return this.#engines.get(this.#extensions.get(type) || type);\n }\n\n getEngineOptions(engineType: string): PlatformViewsEngineOptions {\n return getValue(this.engineOptions, engineType, {});\n }\n\n async render(viewPath: string, options: any = {}): Promise<string> {\n const {path, extension} = this.#cachePaths.get(viewPath) || this.#cachePaths.set(viewPath, this.resolve(viewPath)).get(viewPath)!;\n const engine = this.getEngine(extension);\n\n if (!engine) {\n throw new Error(`Engine not found to render the following \"${viewPath}\"`);\n }\n\n return engine.render(path, Object.assign({cache: this.cache || this.env === Env.PROD}, engine.options, options));\n }\n\n protected getExtension(viewPath: string) {\n return (extname(viewPath) || this.viewEngine).replace(/\\./, \"\");\n }\n\n protected resolve(viewPath: string) {\n const extension = this.getExtension(viewPath);\n\n viewPath = viewPath.replace(extname(viewPath), \"\") + \".\" + extension;\n\n const path =\n [\n viewPath,\n resolve(join(this.root, viewPath)),\n resolve(join(process.cwd(), \"views\", viewPath)),\n resolve(join(process.cwd(), \"public\", viewPath))\n ].find((file) => Fs.existsSync(file)) || viewPath;\n\n return {\n path,\n extension\n };\n }\n}\n"]}
@@ -1,23 +1 @@
1
- /**
2
- * Use a view and sends the rendered HTML string to the client. Optional parameter:
3
- *
4
- * * viewOptions, an object whose properties define local variables for the view.
5
- *
6
- * The view argument is a string that is the file path of the view file to render.
7
- * This can be an absolute path, or a path relative to the views setting.
8
- * If the path does not contain a file extension, then the view engine setting determines the file extension.
9
- * If the path does contain a file extension, then Express will load the module for the specified template engine (via require())
10
- * and render it using the loaded module’s __express function.
11
- *
12
- * For more information, see [Using template engines with Express](http://expressjs.com/guide/using-template-engines.html).
13
- *
14
- * > NOTE: The view argument performs file system operations like reading a file from disk and evaluating Node.js modules,
15
- * and as so for security reasons should not contain input from the end-user.
16
- *
17
- * @param path Relative path to the view file.
18
- * @param options Additional options
19
- * @decorator
20
- * @operation
21
- * @response
22
- */
23
- export declare function View(path: string, options?: Object): MethodDecorator;
1
+ export { View } from "@tsed/schema";
@@ -1,3 +1,6 @@
1
+ /**
2
+ * @file Automatically generated by barrelsby.
3
+ */
1
4
  export * from "./decorators/view";
2
5
  export * from "./domain/PlatformViewsSettings";
3
6
  export * from "./services/PlatformViews";
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@tsed/platform-views",
3
- "version": "7.0.0-beta.2",
3
+ "version": "7.0.0-beta.5",
4
4
  "description": "Views module for Ts.ED Framework",
5
5
  "private": false,
6
6
  "source": "./src/index.ts",
7
7
  "main": "./lib/cjs/index.js",
8
+ "module": "./lib/esm/index.js",
8
9
  "typings": "./lib/types/index.d.ts",
9
10
  "exports": {
10
11
  "types": "./lib/types/index.d.ts",
@@ -13,35 +14,54 @@
13
14
  "default": "./lib/esm/index.js"
14
15
  },
15
16
  "scripts": {
16
- "build": "yarn run build:esm && yarn run build:cjs",
17
+ "build": "yarn barrels && yarn run build:esm && yarn run build:cjs",
17
18
  "build:cjs": "tsc --build tsconfig.compile.json",
18
- "build:esm": "tsc --build tsconfig.compile.esm.json"
19
+ "build:esm": "tsc --build tsconfig.compile.esm.json",
20
+ "barrels": "yarn barrelsby --delete -d ./src -e \"\\.spec\\.ts\" -e \"__mock__\" -e \".benchmark.ts\""
19
21
  },
20
22
  "dependencies": {
21
23
  "consolidate": "^0.16.0",
22
24
  "ejs": "^3.1.5",
23
- "tslib": "2.2.0"
25
+ "tslib": "2.3.1"
24
26
  },
25
27
  "devDependencies": {
26
- "@tsed/core": "7.0.0-beta.2",
27
- "@tsed/di": "7.0.0-beta.2",
28
- "@tsed/engines": "^1.1.5",
29
- "@tsed/exceptions": "7.0.0-beta.2",
30
- "@tsed/schema": "7.0.0-beta.2",
31
- "@types/consolidate": "0.14.0"
28
+ "@tsed/core": "7.0.0-beta.5",
29
+ "@tsed/di": "7.0.0-beta.5",
30
+ "@tsed/engines": "7.0.0-beta.5",
31
+ "@tsed/exceptions": "7.0.0-beta.5",
32
+ "@tsed/schema": "7.0.0-beta.5",
33
+ "@types/consolidate": "0.14.1",
34
+ "@types/ejs": "3.1.0"
32
35
  },
33
36
  "peerDependencies": {
34
- "@tsed/core": "^7.0.0-beta.2",
35
- "@tsed/di": "^7.0.0-beta.2",
36
- "@tsed/engines": "^1.1.5",
37
- "@tsed/exceptions": "^7.0.0-beta.2",
38
- "@tsed/schema": "^7.0.0-beta.2"
37
+ "@tsed/core": "^7.0.0-beta.5",
38
+ "@tsed/di": "^7.0.0-beta.5",
39
+ "@tsed/engines": "^7.0.0-beta.5",
40
+ "@tsed/exceptions": "^7.0.0-beta.5",
41
+ "@tsed/schema": "^7.0.0-beta.5"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "@tsed/core": {
45
+ "optional": false
46
+ },
47
+ "@tsed/di": {
48
+ "optional": false
49
+ },
50
+ "@tsed/exceptions": {
51
+ "optional": false
52
+ },
53
+ "@tsed/schema": {
54
+ "optional": false
55
+ },
56
+ "@tsed/engines": {
57
+ "optional": true
58
+ }
39
59
  },
40
60
  "repository": "https://github.com/tsedio/tsed",
41
61
  "bugs": {
42
62
  "url": "https://github.com/tsedio/tsed/issues"
43
63
  },
44
- "homepage": "https://github.com/tsedio/tsed/tree/alpha/packages/platform/platform-views",
64
+ "homepage": "https://github.com/tsedio/tsed/tree/production/packages/platform/platform-views",
45
65
  "author": "Romain Lenzotti",
46
66
  "license": "MIT"
47
67
  }
package/readme.md CHANGED
@@ -36,18 +36,17 @@ npm install --save @tsed/core
36
36
  ```
37
37
 
38
38
  ## Contributors
39
+
39
40
  Please read [contributing guidelines here](https://tsed.io/CONTRIBUTING.html).
40
41
 
41
42
  <a href="https://github.com/tsedio/ts-express-decorators/graphs/contributors"><img src="https://opencollective.com/tsed/contributors.svg?width=890" /></a>
42
43
 
43
-
44
44
  ## Backers
45
45
 
46
46
  Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/tsed#backer)]
47
47
 
48
48
  <a href="https://opencollective.com/tsed#backers" target="_blank"><img src="https://opencollective.com/tsed/tiers/backer.svg?width=890"></a>
49
49
 
50
-
51
50
  ## Sponsors
52
51
 
53
52
  Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)]
@@ -8,16 +8,5 @@
8
8
  "declaration": true,
9
9
  "declarationDir": "./lib/types"
10
10
  },
11
- "exclude": [
12
- "node_modules",
13
- "test",
14
- "lib",
15
- "benchmark",
16
- "coverage",
17
- "spec",
18
- "**/*.benchmark.ts",
19
- "**/*.spec.ts",
20
- "keys",
21
- "jest.config.js"
22
- ]
11
+ "exclude": ["node_modules", "test", "lib", "benchmark", "coverage", "spec", "**/*.benchmark.ts", "**/*.spec.ts", "keys", "jest.config.js"]
23
12
  }