@kosatyi/ejs 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -12
- package/dist/ejs.cjs +57 -15
- package/dist/ejs.js +55 -14
- package/dist/ejs.min.js +1 -1
- package/dist/ejs.mjs +70 -17
- package/package.json +4 -6
package/README.md
CHANGED
|
@@ -68,7 +68,6 @@ $ npm install ejs@npm:@kosatyi/ejs --save
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
```js
|
|
71
|
-
// const ejs = require('ejs')
|
|
72
71
|
const express = require('express')
|
|
73
72
|
const app = express()
|
|
74
73
|
app.set('views', 'views')
|
|
@@ -85,22 +84,22 @@ app.set('view options', {
|
|
|
85
84
|
```ejs
|
|
86
85
|
<html>
|
|
87
86
|
<head>
|
|
88
|
-
<title><%-get('title')%></title>
|
|
89
|
-
<% block('resources',()=>{ %>
|
|
87
|
+
<title><%-ejs.get('title')%></title>
|
|
88
|
+
<% ejs.block('resources',()=>{ %>
|
|
90
89
|
<link rel="stylesheet" type="text/css" href="/dist/styles.css">
|
|
91
90
|
<% }) %>
|
|
92
91
|
</head>
|
|
93
92
|
<body>
|
|
94
93
|
<header>
|
|
95
|
-
<% block('header',()=>{ %>
|
|
96
|
-
<h1><%-get('title')%></h1>
|
|
94
|
+
<% ejs.block('header',()=>{ %>
|
|
95
|
+
<h1><%-ejs.get('title')%></h1>
|
|
97
96
|
<% }) %>
|
|
98
97
|
</header>
|
|
99
98
|
<main>
|
|
100
|
-
<% block('content') %>
|
|
99
|
+
<% ejs.block('content') %>
|
|
101
100
|
</main>
|
|
102
101
|
<footer>
|
|
103
|
-
<% block('footer',()=>{ %>
|
|
102
|
+
<% ejs.block('footer',()=>{ %>
|
|
104
103
|
Copyright
|
|
105
104
|
<% }) %>
|
|
106
105
|
</footer>
|
|
@@ -111,18 +110,18 @@ app.set('view options', {
|
|
|
111
110
|
**page/index.ejs**
|
|
112
111
|
|
|
113
112
|
```ejs
|
|
114
|
-
<% extend('layout/default') %>
|
|
113
|
+
<% ejs.extend('layout/default') %>
|
|
115
114
|
|
|
116
|
-
<% set('title','Page Title') %>
|
|
115
|
+
<% ejs.set('title','Page Title') %>
|
|
117
116
|
|
|
118
|
-
<% block('resources',(parent)=>{ %>
|
|
117
|
+
<% ejs.block('resources',(parent)=>{ %>
|
|
119
118
|
<% parent() %>
|
|
120
119
|
<script defer src="/dist/framework.js"></script>
|
|
121
120
|
<% }) %>
|
|
122
121
|
|
|
123
|
-
<% block('content',()=>{ %>
|
|
122
|
+
<% ejs.block('content',()=>{ %>
|
|
124
123
|
|
|
125
|
-
<% each('posts',(post)=>{ %>
|
|
124
|
+
<% ejs.each('posts',(post)=>{ %>
|
|
126
125
|
<article>
|
|
127
126
|
<h3><%-post.title%></h3>
|
|
128
127
|
<div><%=post.content%></div>
|
package/dist/ejs.cjs
CHANGED
|
@@ -4,12 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var path = require('path');
|
|
6
6
|
var fs = require('fs');
|
|
7
|
-
require('chokidar');
|
|
7
|
+
var chokidar = require('chokidar');
|
|
8
8
|
|
|
9
9
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
10
|
|
|
11
11
|
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
12
12
|
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
13
|
+
var chokidar__default = /*#__PURE__*/_interopDefaultLegacy(chokidar);
|
|
13
14
|
|
|
14
15
|
var defaults = {};
|
|
15
16
|
defaults["export"] = 'ejs.precompiled';
|
|
@@ -17,6 +18,7 @@ defaults.cache = true;
|
|
|
17
18
|
defaults.path = 'views';
|
|
18
19
|
defaults.resolver = null;
|
|
19
20
|
defaults.extension = 'ejs';
|
|
21
|
+
defaults.rmWhitespace = true;
|
|
20
22
|
defaults.withObject = false;
|
|
21
23
|
defaults.vars = {
|
|
22
24
|
SCOPE: 'ejs',
|
|
@@ -280,6 +282,7 @@ var Compiler = /*#__PURE__*/function () {
|
|
|
280
282
|
value: function configure(config) {
|
|
281
283
|
var _this = this;
|
|
282
284
|
this.withObject = config.withObject;
|
|
285
|
+
this.rmWhitespace = config.rmWhitespace;
|
|
283
286
|
this.token = config.token;
|
|
284
287
|
this.vars = config.vars;
|
|
285
288
|
this.matches = [];
|
|
@@ -297,6 +300,11 @@ var Compiler = /*#__PURE__*/function () {
|
|
|
297
300
|
this.slurpStart = new RegExp([this.slurp.match, this.slurp.start.join('')].join(''), 'gm');
|
|
298
301
|
this.slurpEnd = new RegExp([this.slurp.end.join(''), this.slurp.match].join(''), 'gm');
|
|
299
302
|
}
|
|
303
|
+
}, {
|
|
304
|
+
key: "truncate",
|
|
305
|
+
value: function truncate(value) {
|
|
306
|
+
return value && value.replace(/^(?:\r\n|\r|\n)/, '');
|
|
307
|
+
}
|
|
300
308
|
}, {
|
|
301
309
|
key: "compile",
|
|
302
310
|
value: function compile(content, path) {
|
|
@@ -305,13 +313,17 @@ var Compiler = /*#__PURE__*/function () {
|
|
|
305
313
|
SCOPE = _this$vars.SCOPE,
|
|
306
314
|
SAFE = _this$vars.SAFE,
|
|
307
315
|
BUFFER = _this$vars.BUFFER;
|
|
308
|
-
|
|
316
|
+
if (this.rmWhitespace) {
|
|
317
|
+
content = content.replace(/[\r\n]+/g, '\n').replace(/^\s+|\s+$/gm, '');
|
|
318
|
+
}
|
|
309
319
|
content = content.replace(this.slurpStart, this.token.start).replace(this.slurpEnd, this.token.end);
|
|
310
320
|
var source = "".concat(BUFFER, "('");
|
|
311
321
|
matchTokens(this.regex, content, function (params, index, offset) {
|
|
312
322
|
source += symbols(content.slice(index, offset));
|
|
313
323
|
params.forEach(function (value, index) {
|
|
314
|
-
if (value)
|
|
324
|
+
if (value) {
|
|
325
|
+
source += _this2.formats[index](value);
|
|
326
|
+
}
|
|
315
327
|
});
|
|
316
328
|
});
|
|
317
329
|
source += "');";
|
|
@@ -370,14 +382,19 @@ var Bundler = /*#__PURE__*/function () {
|
|
|
370
382
|
return Bundler;
|
|
371
383
|
}();
|
|
372
384
|
|
|
373
|
-
var
|
|
374
|
-
|
|
385
|
+
var resolvePath = function resolvePath(path, template) {
|
|
386
|
+
template = [path, template].join('/');
|
|
387
|
+
template = template.replace(/\/\//g, '/');
|
|
388
|
+
return template;
|
|
389
|
+
};
|
|
390
|
+
var httpRequest = function httpRequest(path, template) {
|
|
391
|
+
return fetch(resolvePath(path, template)).then(function (response) {
|
|
375
392
|
return response.text();
|
|
376
393
|
});
|
|
377
394
|
};
|
|
378
|
-
var fileSystem = function fileSystem(template) {
|
|
395
|
+
var fileSystem = function fileSystem(path, template) {
|
|
379
396
|
return new Promise(function (resolve, reject) {
|
|
380
|
-
fs__default["default"].readFile(template, function (error, data) {
|
|
397
|
+
fs__default["default"].readFile(resolvePath(path, template), function (error, data) {
|
|
381
398
|
if (error) {
|
|
382
399
|
reject(error);
|
|
383
400
|
} else {
|
|
@@ -386,15 +403,25 @@ var fileSystem = function fileSystem(template) {
|
|
|
386
403
|
});
|
|
387
404
|
});
|
|
388
405
|
};
|
|
389
|
-
var
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
406
|
+
var disableWatcher = function disableWatcher(watcher) {
|
|
407
|
+
if (watcher) {
|
|
408
|
+
watcher.unwatch('.');
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
var enableWatcher = function enableWatcher(path, cache) {
|
|
412
|
+
return chokidar__default["default"].watch('.', {
|
|
413
|
+
cwd: path
|
|
414
|
+
}).on('change', function (name) {
|
|
415
|
+
cache.remove(name);
|
|
416
|
+
}).on('error', function (error) {
|
|
417
|
+
console.log('watcher error: ' + error);
|
|
418
|
+
});
|
|
393
419
|
};
|
|
394
420
|
var Template = /*#__PURE__*/function () {
|
|
395
421
|
function Template(config, cache, compiler) {
|
|
396
422
|
_classCallCheck(this, Template);
|
|
397
423
|
this.cache = cache;
|
|
424
|
+
this.watcher = null;
|
|
398
425
|
this.compiler = compiler;
|
|
399
426
|
this.configure(config);
|
|
400
427
|
}
|
|
@@ -403,18 +430,31 @@ var Template = /*#__PURE__*/function () {
|
|
|
403
430
|
value: function configure(config) {
|
|
404
431
|
this.path = config.path;
|
|
405
432
|
this.resolver = isFunction(config.resolver) ? config.resolver : isNode() ? fileSystem : httpRequest;
|
|
433
|
+
disableWatcher(this.watcher);
|
|
434
|
+
if (config.watch && isNode()) {
|
|
435
|
+
this.watcher = enableWatcher(this.cache, this.path);
|
|
436
|
+
}
|
|
406
437
|
}
|
|
407
438
|
}, {
|
|
408
439
|
key: "resolve",
|
|
409
440
|
value: function resolve(template) {
|
|
410
|
-
return this.resolver(
|
|
441
|
+
return this.resolver(this.path, template);
|
|
411
442
|
}
|
|
412
443
|
}, {
|
|
413
444
|
key: "result",
|
|
414
|
-
value: function result(
|
|
445
|
+
value: function result(template, content) {
|
|
415
446
|
this.cache.set(template, content);
|
|
416
447
|
return content;
|
|
417
448
|
}
|
|
449
|
+
}, {
|
|
450
|
+
key: "compile",
|
|
451
|
+
value: function compile(content, template) {
|
|
452
|
+
if (isFunction(content)) {
|
|
453
|
+
return content;
|
|
454
|
+
} else {
|
|
455
|
+
return this.compiler.compile(content, template);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
418
458
|
}, {
|
|
419
459
|
key: "get",
|
|
420
460
|
value: function get(template) {
|
|
@@ -423,9 +463,9 @@ var Template = /*#__PURE__*/function () {
|
|
|
423
463
|
return this.cache.resolve(template);
|
|
424
464
|
}
|
|
425
465
|
var content = this.resolve(template).then(function (content) {
|
|
426
|
-
return _this.result(_this.
|
|
466
|
+
return _this.result(template, _this.compile(content, template));
|
|
427
467
|
});
|
|
428
|
-
return this.result(
|
|
468
|
+
return this.result(template, content);
|
|
429
469
|
}
|
|
430
470
|
}]);
|
|
431
471
|
return Template;
|
|
@@ -714,6 +754,7 @@ var configSchema = function configSchema(config, options) {
|
|
|
714
754
|
resolver: typeProp(isFunction, defaults.resolver, config.resolver, options.resolver),
|
|
715
755
|
extension: typeProp(isString, defaults.extension, config.extension, options.extension),
|
|
716
756
|
withObject: typeProp(isBoolean, defaults.withObject, config.withObject, options.withObject),
|
|
757
|
+
rmWhitespace: typeProp(isBoolean, defaults.rmWhitespace, config.rmWhitespace, options.rmWhitespace),
|
|
717
758
|
token: extend({}, defaults.token, config.token, options.token),
|
|
718
759
|
vars: extend({}, defaults.vars, config.vars, options.vars)
|
|
719
760
|
});
|
|
@@ -738,6 +779,7 @@ var init = function init(options) {
|
|
|
738
779
|
bundler.configure(config);
|
|
739
780
|
cache.configure(config);
|
|
740
781
|
template.configure(config);
|
|
782
|
+
return config;
|
|
741
783
|
};
|
|
742
784
|
var output = function output(path, scope) {
|
|
743
785
|
return template.get(path).then(function (callback) {
|
package/dist/ejs.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
defaults.path = 'views';
|
|
13
13
|
defaults.resolver = null;
|
|
14
14
|
defaults.extension = 'ejs';
|
|
15
|
+
defaults.rmWhitespace = true;
|
|
15
16
|
defaults.withObject = false;
|
|
16
17
|
defaults.vars = {
|
|
17
18
|
SCOPE: 'ejs',
|
|
@@ -275,6 +276,7 @@
|
|
|
275
276
|
value: function configure(config) {
|
|
276
277
|
var _this = this;
|
|
277
278
|
this.withObject = config.withObject;
|
|
279
|
+
this.rmWhitespace = config.rmWhitespace;
|
|
278
280
|
this.token = config.token;
|
|
279
281
|
this.vars = config.vars;
|
|
280
282
|
this.matches = [];
|
|
@@ -292,6 +294,11 @@
|
|
|
292
294
|
this.slurpStart = new RegExp([this.slurp.match, this.slurp.start.join('')].join(''), 'gm');
|
|
293
295
|
this.slurpEnd = new RegExp([this.slurp.end.join(''), this.slurp.match].join(''), 'gm');
|
|
294
296
|
}
|
|
297
|
+
}, {
|
|
298
|
+
key: "truncate",
|
|
299
|
+
value: function truncate(value) {
|
|
300
|
+
return value && value.replace(/^(?:\r\n|\r|\n)/, '');
|
|
301
|
+
}
|
|
295
302
|
}, {
|
|
296
303
|
key: "compile",
|
|
297
304
|
value: function compile(content, path) {
|
|
@@ -300,13 +307,17 @@
|
|
|
300
307
|
SCOPE = _this$vars.SCOPE,
|
|
301
308
|
SAFE = _this$vars.SAFE,
|
|
302
309
|
BUFFER = _this$vars.BUFFER;
|
|
303
|
-
|
|
310
|
+
if (this.rmWhitespace) {
|
|
311
|
+
content = content.replace(/[\r\n]+/g, '\n').replace(/^\s+|\s+$/gm, '');
|
|
312
|
+
}
|
|
304
313
|
content = content.replace(this.slurpStart, this.token.start).replace(this.slurpEnd, this.token.end);
|
|
305
314
|
var source = "".concat(BUFFER, "('");
|
|
306
315
|
matchTokens(this.regex, content, function (params, index, offset) {
|
|
307
316
|
source += symbols(content.slice(index, offset));
|
|
308
317
|
params.forEach(function (value, index) {
|
|
309
|
-
if (value)
|
|
318
|
+
if (value) {
|
|
319
|
+
source += _this2.formats[index](value);
|
|
320
|
+
}
|
|
310
321
|
});
|
|
311
322
|
});
|
|
312
323
|
source += "');";
|
|
@@ -365,14 +376,19 @@
|
|
|
365
376
|
return Bundler;
|
|
366
377
|
}();
|
|
367
378
|
|
|
368
|
-
var
|
|
369
|
-
|
|
379
|
+
var resolvePath = function resolvePath(path, template) {
|
|
380
|
+
template = [path, template].join('/');
|
|
381
|
+
template = template.replace(/\/\//g, '/');
|
|
382
|
+
return template;
|
|
383
|
+
};
|
|
384
|
+
var httpRequest = function httpRequest(path, template) {
|
|
385
|
+
return fetch(resolvePath(path, template)).then(function (response) {
|
|
370
386
|
return response.text();
|
|
371
387
|
});
|
|
372
388
|
};
|
|
373
|
-
var fileSystem = function fileSystem(template) {
|
|
389
|
+
var fileSystem = function fileSystem(path$1, template) {
|
|
374
390
|
return new Promise(function (resolve, reject) {
|
|
375
|
-
path.readFile(template, function (error, data) {
|
|
391
|
+
path.readFile(resolvePath(path$1, template), function (error, data) {
|
|
376
392
|
if (error) {
|
|
377
393
|
reject(error);
|
|
378
394
|
} else {
|
|
@@ -381,15 +397,25 @@
|
|
|
381
397
|
});
|
|
382
398
|
});
|
|
383
399
|
};
|
|
384
|
-
var
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
400
|
+
var disableWatcher = function disableWatcher(watcher) {
|
|
401
|
+
if (watcher) {
|
|
402
|
+
watcher.unwatch('.');
|
|
403
|
+
}
|
|
404
|
+
};
|
|
405
|
+
var enableWatcher = function enableWatcher(path$1, cache) {
|
|
406
|
+
return path.watch('.', {
|
|
407
|
+
cwd: path$1
|
|
408
|
+
}).on('change', function (name) {
|
|
409
|
+
cache.remove(name);
|
|
410
|
+
}).on('error', function (error) {
|
|
411
|
+
console.log('watcher error: ' + error);
|
|
412
|
+
});
|
|
388
413
|
};
|
|
389
414
|
var Template = /*#__PURE__*/function () {
|
|
390
415
|
function Template(config, cache, compiler) {
|
|
391
416
|
_classCallCheck(this, Template);
|
|
392
417
|
this.cache = cache;
|
|
418
|
+
this.watcher = null;
|
|
393
419
|
this.compiler = compiler;
|
|
394
420
|
this.configure(config);
|
|
395
421
|
}
|
|
@@ -398,18 +424,31 @@
|
|
|
398
424
|
value: function configure(config) {
|
|
399
425
|
this.path = config.path;
|
|
400
426
|
this.resolver = isFunction(config.resolver) ? config.resolver : isNode() ? fileSystem : httpRequest;
|
|
427
|
+
disableWatcher(this.watcher);
|
|
428
|
+
if (config.watch && isNode()) {
|
|
429
|
+
this.watcher = enableWatcher(this.cache, this.path);
|
|
430
|
+
}
|
|
401
431
|
}
|
|
402
432
|
}, {
|
|
403
433
|
key: "resolve",
|
|
404
434
|
value: function resolve(template) {
|
|
405
|
-
return this.resolver(
|
|
435
|
+
return this.resolver(this.path, template);
|
|
406
436
|
}
|
|
407
437
|
}, {
|
|
408
438
|
key: "result",
|
|
409
|
-
value: function result(
|
|
439
|
+
value: function result(template, content) {
|
|
410
440
|
this.cache.set(template, content);
|
|
411
441
|
return content;
|
|
412
442
|
}
|
|
443
|
+
}, {
|
|
444
|
+
key: "compile",
|
|
445
|
+
value: function compile(content, template) {
|
|
446
|
+
if (isFunction(content)) {
|
|
447
|
+
return content;
|
|
448
|
+
} else {
|
|
449
|
+
return this.compiler.compile(content, template);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
413
452
|
}, {
|
|
414
453
|
key: "get",
|
|
415
454
|
value: function get(template) {
|
|
@@ -418,9 +457,9 @@
|
|
|
418
457
|
return this.cache.resolve(template);
|
|
419
458
|
}
|
|
420
459
|
var content = this.resolve(template).then(function (content) {
|
|
421
|
-
return _this.result(_this.
|
|
460
|
+
return _this.result(template, _this.compile(content, template));
|
|
422
461
|
});
|
|
423
|
-
return this.result(
|
|
462
|
+
return this.result(template, content);
|
|
424
463
|
}
|
|
425
464
|
}]);
|
|
426
465
|
return Template;
|
|
@@ -709,6 +748,7 @@
|
|
|
709
748
|
resolver: typeProp(isFunction, defaults.resolver, config.resolver, options.resolver),
|
|
710
749
|
extension: typeProp(isString, defaults.extension, config.extension, options.extension),
|
|
711
750
|
withObject: typeProp(isBoolean, defaults.withObject, config.withObject, options.withObject),
|
|
751
|
+
rmWhitespace: typeProp(isBoolean, defaults.rmWhitespace, config.rmWhitespace, options.rmWhitespace),
|
|
712
752
|
token: extend({}, defaults.token, config.token, options.token),
|
|
713
753
|
vars: extend({}, defaults.vars, config.vars, options.vars)
|
|
714
754
|
});
|
|
@@ -733,6 +773,7 @@
|
|
|
733
773
|
bundler.configure(config);
|
|
734
774
|
cache.configure(config);
|
|
735
775
|
template.configure(config);
|
|
776
|
+
return config;
|
|
736
777
|
};
|
|
737
778
|
var output = function output(path, scope) {
|
|
738
779
|
return template.get(path).then(function (callback) {
|
package/dist/ejs.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).ejs={})}(this,(function(t){"use strict";var n={},e={export:"ejs.precompiled",cache:!0,path:"views",resolver:null,extension:"ejs",withObject:!1,vars:{SCOPE:"ejs",EXTEND:"$$e",BUFFER:"$$a",LAYOUT:"$$l",BLOCKS:"$$b",MACRO:"$$m",SAFE:"$$v"},token:{start:"<%",end:"%>",regex:"([\\s\\S]+?)"}},r=function(){var t=[].slice.call(arguments),n=t.shift();return t.filter(n).pop()},i=function(t){return"function"==typeof t},o=function(t){return"string"==typeof t},c=function(t){return"boolean"==typeof t},u="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0),s=function(){return u},a={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"},f={"&":"&","<":"<",">":">",'"':""","'":"'"},h=function(t){return new RegExp(["[",Object.keys(t).join(""),"]"].join(""),"g")},l=h(f),p=h(a),v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return(""+t).replace(l,(function(t){return f[t]}))},d=function(t,n,e){return null==(e=t)?"":n?v(e):e},m=function(t,n){var e=t,r=n.split("."),i=r.pop();return r.forEach((function(t){e=e[t]=e[t]||{}})),[e,i]},g=function(t,n){var e=t.split(".").pop();return e!==n&&(t=[t,n].join(".")),t},y=function(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];var r=n.shift();return n.filter((function(t){return t})).reduce((function(t,n){return Object.assign(t,n)}),r)},b=function(){},w=function(t,n){var e;for(e in t)k(t,e)&&n(t[e],e,t)},j=function(t,n){return function(t,n,e){var r=t instanceof Array,i=r?[]:{};return w(t,(function(t,e,o){var c=n(t,e,o);void 0!==c&&(r?i.push(c):i[e]=c)})),i}(t,(function(t,e){if(-1===n.indexOf(e))return t}))},x=function(t,n,e){return Promise.resolve(t).then(n.bind(e))},k=function(t,n){return t&&t.hasOwnProperty(n)},E=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"],O=" ",F='"',P="/",S="<",B=">",R=function(t,n,e){var r=[],i=-1===E.indexOf(t),o=function(t,n,e){var r=[];return w(t,(function(t,e,i){var o=n(t,e,i);void 0!==o&&r.push(o)})),r}(n,(function(t,n){if(null!=t)return[v(n),[F,v(t),F].join("")].join("=")})).join(O);return r.push([S,t,O,o,B].join("")),e&&r.push(e instanceof Array?e.join(""):e),i&&r.push([S,P,t,B].join("")),r.join("")};function $(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function T(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,A(r.key),r)}}function U(t,n,e){return n&&T(t.prototype,n),e&&T(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function A(t){var n=function(t,n){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==typeof n?n:String(n)}var M=[{symbol:"-",format:function(t){return"')\n".concat(this.BUFFER,"(").concat(this.SAFE,"(").concat(t,",1))\n").concat(this.BUFFER,"('")}},{symbol:"=",format:function(t){return"')\n".concat(this.BUFFER,"(").concat(this.SAFE,"(").concat(t,"))\n").concat(this.BUFFER,"('")}},{symbol:"#",format:function(t){return"')\n/**".concat(t,"**/\n").concat(this.BUFFER,"('")}},{symbol:"",format:function(t){return"')\n".concat(t.trim(),"\n").concat(this.BUFFER,"('")}}],_=function(){function t(n){$(this,t),this.configure(n)}return U(t,[{key:"configure",value:function(t){var n=this;this.withObject=t.withObject,this.token=t.token,this.vars=t.vars,this.matches=[],this.formats=[],this.slurp={match:"[ \\t]*",start:[this.token.start,"_"],end:["_",this.token.end]},M.forEach((function(t){n.matches.push(n.token.start.concat(t.symbol).concat(n.token.regex).concat(n.token.end)),n.formats.push(t.format.bind(n.vars))})),this.regex=new RegExp(this.matches.join("|").concat("|$"),"g"),this.slurpStart=new RegExp([this.slurp.match,this.slurp.start.join("")].join(""),"gm"),this.slurpEnd=new RegExp([this.slurp.end.join(""),this.slurp.match].join(""),"gm")}},{key:"compile",value:function(t,n){var e=this,r=this.vars,i=r.SCOPE,o=r.SAFE,c=r.BUFFER;t=(t=t.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")).replace(this.slurpStart,this.token.start).replace(this.slurpEnd,this.token.end);var u,s,f,h="".concat(c,"('");u=this.regex,s=function(n,r,i){h+=(""+t.slice(r,i)).replace(p,(function(t){return"\\"+a[t]})),n.forEach((function(t,n){t&&(h+=e.formats[n](t))}))},f=0,t.replace(u,(function(){var t=[].slice.call(arguments,0,-1),n=t.pop(),e=t.shift();return s(t,f,n),f=n+e.length,e})),h="try{".concat(h+="');","}catch(e){console.info(e)}"),this.withObject&&(h="with(".concat(i,"){").concat(h,"}")),h="".concat(c,".start();").concat(h,"return ").concat(c,".end();"),h+="\n//# sourceURL=".concat(n);var l=null;try{(l=new Function(i,c,o,h)).source="(function(".concat(i,",").concat(c,",").concat(o,"){\n").concat(h,"\n})")}catch(t){throw t.filename=n,t.source=h,t}return l}}]),t}(),L=function(){function t(n){$(this,t),this.configure(n)}return U(t,[{key:"configure",value:function(t){this.namespace=t.export,this.useStrict=!1===t.withObject}},{key:"wrapper",value:function(t){var n="";return n+="(function(global,factory){",n+='typeof exports === "object" && typeof module !== "undefined" ?',n+="module.exports = factory():",n+='typeof define === "function" && define.amd ? define(factory):',n+='(global = typeof globalThis !== "undefined" ? globalThis:',n+='global || self,global["'+this.namespace+'"] = factory())',n+="})(this,(function(){",this.useStrict&&(n+="'use strict';\n"),n+="var list = {};\n",t.forEach((function(t){n+="list["+JSON.stringify(t.name)+"]="+String(t.content)+";\n"})),n+="return list;}));\n"}}]),t}(),C=function(t){return fetch(t).then((function(t){return t.text()}))},N=function(t){return new Promise((function(e,r){n.readFile(t,(function(t,n){t?r(t):e(n.toString())}))}))},q=function(){function t(n,e,r){$(this,t),this.cache=e,this.compiler=r,this.configure(n)}return U(t,[{key:"configure",value:function(t){this.path=t.path,this.resolver=i(t.resolver)?t.resolver:s()?N:C}},{key:"resolve",value:function(t){return this.resolver(function(t,n){return(n=[t,n].join("/")).replace(/\/\//g,"/")}(this.path,t))}},{key:"result",value:function(t,n){return this.cache.set(n,t),t}},{key:"get",value:function(t){var n=this;if(this.cache.exist(t))return this.cache.resolve(t);var e=this.resolve(t).then((function(e){return n.result(n.compiler.compile(e,t),t)}));return this.result(e,t)}}]),t}(),D=function(t){return Promise.all(t).then((function(t){return t.join("")}))},K=function(){function t(n){$(this,t),this.configure(n)}return U(t,[{key:"configure",value:function(t,n){var e=t.vars,r=e.EXTEND,c=e.LAYOUT,u=e.BLOCKS,s=e.BUFFER,a=e.MACRO;function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.initBlocks(),this.initMacro(),y(this,t)}this.create=function(t){return new f(t)},this.helpers=function(t){y(f.prototype,t)},f.prototype=y({},n||{}),f.defineProp=f.method=function(t,n){var e=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Object.defineProperty(f.prototype,t,{value:n,writable:e,configurable:r,enumerable:i})},f.defineProp(s,function(){var t=[],n=[];function e(t){n.push(t)}return e.start=function(){n=[]},e.backup=function(){t.push(n.concat()),n=[]},e.restore=function(){var e=n.concat();return n=t.pop(),D(e)},e.error=function(t){throw t},e.end=function(){return D(n)},e}()),f.defineProp(u,{},!0),f.defineProp(a,{},!0),f.defineProp(c,!1,!0),f.defineProp(r,!1,!0),f.method("initBlocks",(function(){this[u]={}})),f.method("initMacro",(function(){this[a]={}})),f.method("getMacro",(function(){return this[a]})),f.method("getBuffer",(function(){return this[s]})),f.method("getBlocks",(function(){return this[u]})),f.method("setExtend",(function(t){this[r]=t})),f.method("getExtend",(function(){return this[r]})),f.method("setLayout",(function(t){this[c]=t})),f.method("getLayout",(function(){return this[c]})),f.method("clone",(function(t){var n=[c,r,s];return!0===t&&n.push(u),j(this,n)})),f.method("extend",(function(t){this.setExtend(!0),this.setLayout(t)})),f.method("echo",(function(){var t=this.getBuffer(),n=[].slice.call(arguments);n.forEach(t)})),f.method("fn",(function(t){var n=this.getBuffer(),e=this;return function(){return n.backup(),i(t)&&t.apply(e,arguments),n.restore()}})),f.method("get",(function(t,n){var e=m(this,t),r=e.shift(),i=e.pop();return k(r,i)?r[i]:n})),f.method("set",(function(t,n){var e=m(this,t),r=e.shift(),i=e.pop();return this.getExtend()&&k(r,i)?r[i]:r[i]=n})),f.method("macro",(function(t,n){var e=this.getMacro(),r=this.fn(n),i=this;e[t]=function(){return i.echo(r.apply(void 0,arguments))}})),f.method("call",(function(t){var n=this.getMacro(),e=n[t],r=[].slice.call(arguments,1);if(i(e))return e.apply(e,r)})),f.method("block",(function(t,n){var e=this,r=this.getBlocks();if(r[t]=r[t]||[],r[t].push(this.fn(n)),!this.getExtend()){var i=Object.assign([],r[t]),o=function(){return i.shift()};this.echo(o()(function t(){var n=o();return n?function(){e.echo(n(t()))}:b}()))}})),f.method("include",(function(t,n,e){var r=!1===e?{}:this.clone(!0),i=y(r,n||{}),o=this.render(t,i);this.echo(o)})),f.method("use",(function(t,n){var e=this.require(t);this.echo(x(e,(function(t){var e=this.getMacro();w(t,(function(t,r){e[[n,r].join(".")]=t}))}),this))})),f.method("async",(function(t,n){this.echo(x(t,(function(t){return this.fn(n)(t)}),this))})),f.method("node",(function(t,n,e){return R(t,n,e)})),f.method("el",(function(t,n,e){i(e)&&(e=this.fn(e)()),this.echo(x(e,(function(e){return R(t,n,e)}),this))})),f.method("each",(function(t,n){o(t)&&(t=this.get(t,[])),w(t,n)}))}}]),t}(),X="undefined"!=typeof globalThis?globalThis:window||self,Y=function(){function t(n){var e,r,i;$(this,t),e=this,i={},(r=A(r="list"))in e?Object.defineProperty(e,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[r]=i,this.configure(n),!1===s()&&this.load(X[this.namespace])}return U(t,[{key:"configure",value:function(t){this.list={},this.namespace=t.export}},{key:"load",value:function(t){return y(this.list,t),this}},{key:"exist",value:function(t){return k(this.list,t)}},{key:"get",value:function(t){return this.list[t]}},{key:"remove",value:function(t){delete this.list[t]}},{key:"resolve",value:function(t){return Promise.resolve(this.get(t))}},{key:"set",value:function(t,n){return this.list[t]=n,this}}]),t}(),J=function(t,n){y(t,{export:r(o,e.export,t.export,n.export),path:r(o,e.path,t.path,n.path),resolver:r(i,e.resolver,t.resolver,n.resolver),extension:r(o,e.extension,t.extension,n.extension),withObject:r(c,e.withObject,t.withObject,n.withObject),token:y({},e.token,t.token,n.token),vars:y({},e.vars,t.vars,n.vars)})},V=function t(u){var s={},a={};J(s,u||{});var f=new K(s),h=new _(s),l=new L(s),p=new Y(s),v=new q(s,p,h),m=function(t){J(s,t),f.configure(s,a),h.configure(s),l.configure(s),p.configure(s),v.configure(s)},b=function(t,n){return v.get(t).then((function(t){return t.call(n,n,n.getBuffer(),d)}))},w=function(t,n){var e=g(t,s.extension),r=f.create(n);return b(e,r).then((function(t){if(r.getExtend()){r.setExtend(!1);var n=r.getLayout(),e=r.clone();return w(n,e)}return t}))},j=function(t){f.helpers(y(a,t||{}))};return j({require:function(t){return function(t){var n=g(t,s.extension),e=f.create({});return b(n,e).then((function(){return e.getMacro()}))}(t)},render:function(t,n){return w(t,n)}}),{render:w,helpers:j,configure:m,wrapper:function(t){return l.wrapper(t)},compile:function(t,n){return h.compile(t,n)},create:function(n){return t(n)},preload:function(t){return p.load(t)},__express:function(t,u,s){i(u)&&(s=u,u={});var a=y({},(u=u||{}).settings),f=r(o,e.path,a.views),h=r(c,e.cache,a["view cache"]),l=y({},a["view options"]),p=n.relative(f,t);return l.path=f,l.cache=h,m(l),w(p,u).then((function(t){s(null,t)})).catch((function(t){s(t)}))}}}({}),z=V.render,G=V.helpers,H=V.configure,I=V.wrapper,Q=V.compile,W=V.create,Z=V.preload,tt=V.__express;t.__express=tt,t.compile=Q,t.configure=H,t.create=W,t.element=R,t.helpers=G,t.preload=Z,t.render=z,t.safeValue=d,t.wrapper=I,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ejs={})}(this,(function(t){"use strict";var e={},n={export:"ejs.precompiled",cache:!0,path:"views",resolver:null,extension:"ejs",rmWhitespace:!0,withObject:!1,vars:{SCOPE:"ejs",EXTEND:"$$e",BUFFER:"$$a",LAYOUT:"$$l",BLOCKS:"$$b",MACRO:"$$m",SAFE:"$$v"},token:{start:"<%",end:"%>",regex:"([\\s\\S]+?)"}},r=function(){var t=[].slice.call(arguments),e=t.shift();return t.filter(e).pop()},i=function(t){return"function"==typeof t},o=function(t){return"string"==typeof t},c=function(t){return"boolean"==typeof t},u="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0),s=function(){return u},a={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"},f={"&":"&","<":"<",">":">",'"':""","'":"'"},h=function(t){return new RegExp(["[",Object.keys(t).join(""),"]"].join(""),"g")},l=h(f),p=h(a),v=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return(""+t).replace(l,(function(t){return f[t]}))},d=function(t,e,n){return null==(n=t)?"":e?v(n):n},m=function(t,e){var n=t,r=e.split("."),i=r.pop();return r.forEach((function(t){n=n[t]=n[t]||{}})),[n,i]},g=function(t,e){var n=t.split(".").pop();return n!==e&&(t=[t,e].join(".")),t},y=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.shift();return e.filter((function(t){return t})).reduce((function(t,e){return Object.assign(t,e)}),r)},b=function(){},w=function(t,e){var n;for(n in t)k(t,n)&&e(t[n],n,t)},j=function(t,e){return function(t,e,n){var r=t instanceof Array,i=r?[]:{};return w(t,(function(t,n,o){var c=e(t,n,o);void 0!==c&&(r?i.push(c):i[n]=c)})),i}(t,(function(t,n){if(-1===e.indexOf(n))return t}))},x=function(t,e,n){return Promise.resolve(t).then(e.bind(n))},k=function(t,e){return t&&t.hasOwnProperty(e)},E=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"],O=" ",F='"',P="/",S="<",B=">",R=function(t,e,n){var r=[],i=-1===E.indexOf(t),o=function(t,e,n){var r=[];return w(t,(function(t,n,i){var o=e(t,n,i);void 0!==o&&r.push(o)})),r}(e,(function(t,e){if(null!=t)return[v(e),[F,v(t),F].join("")].join("=")})).join(O);return r.push([S,t,O,o,B].join("")),n&&r.push(n instanceof Array?n.join(""):n),i&&r.push([S,P,t,B].join("")),r.join("")};function $(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function T(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,A(r.key),r)}}function U(t,e,n){return e&&T(t.prototype,e),n&&T(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function A(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}var M=[{symbol:"-",format:function(t){return"')\n".concat(this.BUFFER,"(").concat(this.SAFE,"(").concat(t,",1))\n").concat(this.BUFFER,"('")}},{symbol:"=",format:function(t){return"')\n".concat(this.BUFFER,"(").concat(this.SAFE,"(").concat(t,"))\n").concat(this.BUFFER,"('")}},{symbol:"#",format:function(t){return"')\n/**".concat(t,"**/\n").concat(this.BUFFER,"('")}},{symbol:"",format:function(t){return"')\n".concat(t.trim(),"\n").concat(this.BUFFER,"('")}}],_=function(){function t(e){$(this,t),this.configure(e)}return U(t,[{key:"configure",value:function(t){var e=this;this.withObject=t.withObject,this.rmWhitespace=t.rmWhitespace,this.token=t.token,this.vars=t.vars,this.matches=[],this.formats=[],this.slurp={match:"[ \\t]*",start:[this.token.start,"_"],end:["_",this.token.end]},M.forEach((function(t){e.matches.push(e.token.start.concat(t.symbol).concat(e.token.regex).concat(e.token.end)),e.formats.push(t.format.bind(e.vars))})),this.regex=new RegExp(this.matches.join("|").concat("|$"),"g"),this.slurpStart=new RegExp([this.slurp.match,this.slurp.start.join("")].join(""),"gm"),this.slurpEnd=new RegExp([this.slurp.end.join(""),this.slurp.match].join(""),"gm")}},{key:"truncate",value:function(t){return t&&t.replace(/^(?:\r\n|\r|\n)/,"")}},{key:"compile",value:function(t,e){var n=this,r=this.vars,i=r.SCOPE,o=r.SAFE,c=r.BUFFER;this.rmWhitespace&&(t=t.replace(/[\r\n]+/g,"\n").replace(/^\s+|\s+$/gm,"")),t=t.replace(this.slurpStart,this.token.start).replace(this.slurpEnd,this.token.end);var u,s,f,h="".concat(c,"('");u=this.regex,s=function(e,r,i){h+=(""+t.slice(r,i)).replace(p,(function(t){return"\\"+a[t]})),e.forEach((function(t,e){t&&(h+=n.formats[e](t))}))},f=0,t.replace(u,(function(){var t=[].slice.call(arguments,0,-1),e=t.pop(),n=t.shift();return s(t,f,e),f=e+n.length,n})),h="try{".concat(h+="');","}catch(e){console.info(e)}"),this.withObject&&(h="with(".concat(i,"){").concat(h,"}")),h="".concat(c,".start();").concat(h,"return ").concat(c,".end();"),h+="\n//# sourceURL=".concat(e);var l=null;try{(l=new Function(i,c,o,h)).source="(function(".concat(i,",").concat(c,",").concat(o,"){\n").concat(h,"\n})")}catch(t){throw t.filename=e,t.source=h,t}return l}}]),t}(),L=function(){function t(e){$(this,t),this.configure(e)}return U(t,[{key:"configure",value:function(t){this.namespace=t.export,this.useStrict=!1===t.withObject}},{key:"wrapper",value:function(t){var e="";return e+="(function(global,factory){",e+='typeof exports === "object" && typeof module !== "undefined" ?',e+="module.exports = factory():",e+='typeof define === "function" && define.amd ? define(factory):',e+='(global = typeof globalThis !== "undefined" ? globalThis:',e+='global || self,global["'+this.namespace+'"] = factory())',e+="})(this,(function(){",this.useStrict&&(e+="'use strict';\n"),e+="var list = {};\n",t.forEach((function(t){e+="list["+JSON.stringify(t.name)+"]="+String(t.content)+";\n"})),e+="return list;}));\n"}}]),t}(),W=function(t,e){return e=(e=[t,e].join("/")).replace(/\/\//g,"/")},C=function(t,e){return fetch(W(t,e)).then((function(t){return t.text()}))},N=function(t,n){return new Promise((function(r,i){e.readFile(W(t,n),(function(t,e){t?i(t):r(e.toString())}))}))},q=function(){function t(e,n,r){$(this,t),this.cache=n,this.watcher=null,this.compiler=r,this.configure(e)}return U(t,[{key:"configure",value:function(t){var n,r,o;this.path=t.path,this.resolver=i(t.resolver)?t.resolver:s()?N:C,(n=this.watcher)&&n.unwatch("."),t.watch&&s()&&(this.watcher=(r=this.cache,o=this.path,e.watch(".",{cwd:r}).on("change",(function(t){o.remove(t)})).on("error",(function(t){console.log("watcher error: "+t)}))))}},{key:"resolve",value:function(t){return this.resolver(this.path,t)}},{key:"result",value:function(t,e){return this.cache.set(t,e),e}},{key:"compile",value:function(t,e){return i(t)?t:this.compiler.compile(t,e)}},{key:"get",value:function(t){var e=this;if(this.cache.exist(t))return this.cache.resolve(t);var n=this.resolve(t).then((function(n){return e.result(t,e.compile(n,t))}));return this.result(t,n)}}]),t}(),D=function(t){return Promise.all(t).then((function(t){return t.join("")}))},K=function(){function t(e){$(this,t),this.configure(e)}return U(t,[{key:"configure",value:function(t,e){var n=t.vars,r=n.EXTEND,c=n.LAYOUT,u=n.BLOCKS,s=n.BUFFER,a=n.MACRO;function f(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.initBlocks(),this.initMacro(),y(this,t)}this.create=function(t){return new f(t)},this.helpers=function(t){y(f.prototype,t)},f.prototype=y({},e||{}),f.defineProp=f.method=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];Object.defineProperty(f.prototype,t,{value:e,writable:n,configurable:r,enumerable:i})},f.defineProp(s,function(){var t=[],e=[];function n(t){e.push(t)}return n.start=function(){e=[]},n.backup=function(){t.push(e.concat()),e=[]},n.restore=function(){var n=e.concat();return e=t.pop(),D(n)},n.error=function(t){throw t},n.end=function(){return D(e)},n}()),f.defineProp(u,{},!0),f.defineProp(a,{},!0),f.defineProp(c,!1,!0),f.defineProp(r,!1,!0),f.method("initBlocks",(function(){this[u]={}})),f.method("initMacro",(function(){this[a]={}})),f.method("getMacro",(function(){return this[a]})),f.method("getBuffer",(function(){return this[s]})),f.method("getBlocks",(function(){return this[u]})),f.method("setExtend",(function(t){this[r]=t})),f.method("getExtend",(function(){return this[r]})),f.method("setLayout",(function(t){this[c]=t})),f.method("getLayout",(function(){return this[c]})),f.method("clone",(function(t){var e=[c,r,s];return!0===t&&e.push(u),j(this,e)})),f.method("extend",(function(t){this.setExtend(!0),this.setLayout(t)})),f.method("echo",(function(){var t=this.getBuffer(),e=[].slice.call(arguments);e.forEach(t)})),f.method("fn",(function(t){var e=this.getBuffer(),n=this;return function(){return e.backup(),i(t)&&t.apply(n,arguments),e.restore()}})),f.method("get",(function(t,e){var n=m(this,t),r=n.shift(),i=n.pop();return k(r,i)?r[i]:e})),f.method("set",(function(t,e){var n=m(this,t),r=n.shift(),i=n.pop();return this.getExtend()&&k(r,i)?r[i]:r[i]=e})),f.method("macro",(function(t,e){var n=this.getMacro(),r=this.fn(e),i=this;n[t]=function(){return i.echo(r.apply(void 0,arguments))}})),f.method("call",(function(t){var e=this.getMacro(),n=e[t],r=[].slice.call(arguments,1);if(i(n))return n.apply(n,r)})),f.method("block",(function(t,e){var n=this,r=this.getBlocks();if(r[t]=r[t]||[],r[t].push(this.fn(e)),!this.getExtend()){var i=Object.assign([],r[t]),o=function(){return i.shift()};this.echo(o()(function t(){var e=o();return e?function(){n.echo(e(t()))}:b}()))}})),f.method("include",(function(t,e,n){var r=!1===n?{}:this.clone(!0),i=y(r,e||{}),o=this.render(t,i);this.echo(o)})),f.method("use",(function(t,e){var n=this.require(t);this.echo(x(n,(function(t){var n=this.getMacro();w(t,(function(t,r){n[[e,r].join(".")]=t}))}),this))})),f.method("async",(function(t,e){this.echo(x(t,(function(t){return this.fn(e)(t)}),this))})),f.method("node",(function(t,e,n){return R(t,e,n)})),f.method("el",(function(t,e,n){i(n)&&(n=this.fn(n)()),this.echo(x(n,(function(n){return R(t,e,n)}),this))})),f.method("each",(function(t,e){o(t)&&(t=this.get(t,[])),w(t,e)}))}}]),t}(),X="undefined"!=typeof globalThis?globalThis:window||self,Y=function(){function t(e){var n,r,i;$(this,t),n=this,i={},(r=A(r="list"))in n?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,this.configure(e),!1===s()&&this.load(X[this.namespace])}return U(t,[{key:"configure",value:function(t){this.list={},this.namespace=t.export}},{key:"load",value:function(t){return y(this.list,t),this}},{key:"exist",value:function(t){return k(this.list,t)}},{key:"get",value:function(t){return this.list[t]}},{key:"remove",value:function(t){delete this.list[t]}},{key:"resolve",value:function(t){return Promise.resolve(this.get(t))}},{key:"set",value:function(t,e){return this.list[t]=e,this}}]),t}(),J=function(t,e){y(t,{export:r(o,n.export,t.export,e.export),path:r(o,n.path,t.path,e.path),resolver:r(i,n.resolver,t.resolver,e.resolver),extension:r(o,n.extension,t.extension,e.extension),withObject:r(c,n.withObject,t.withObject,e.withObject),rmWhitespace:r(c,n.rmWhitespace,t.rmWhitespace,e.rmWhitespace),token:y({},n.token,t.token,e.token),vars:y({},n.vars,t.vars,e.vars)})},V=function t(u){var s={},a={};J(s,u||{});var f=new K(s),h=new _(s),l=new L(s),p=new Y(s),v=new q(s,p,h),m=function(t){return J(s,t),f.configure(s,a),h.configure(s),l.configure(s),p.configure(s),v.configure(s),s},b=function(t,e){return v.get(t).then((function(t){return t.call(e,e,e.getBuffer(),d)}))},w=function(t,e){var n=g(t,s.extension),r=f.create(e);return b(n,r).then((function(t){if(r.getExtend()){r.setExtend(!1);var e=r.getLayout(),n=r.clone();return w(e,n)}return t}))},j=function(t){f.helpers(y(a,t||{}))};return j({require:function(t){return function(t){var e=g(t,s.extension),n=f.create({});return b(e,n).then((function(){return n.getMacro()}))}(t)},render:function(t,e){return w(t,e)}}),{render:w,helpers:j,configure:m,wrapper:function(t){return l.wrapper(t)},compile:function(t,e){return h.compile(t,e)},create:function(e){return t(e)},preload:function(t){return p.load(t)},__express:function(t,u,s){i(u)&&(s=u,u={});var a=y({},(u=u||{}).settings),f=r(o,n.path,a.views),h=r(c,n.cache,a["view cache"]),l=y({},a["view options"]),p=e.relative(f,t);return l.path=f,l.cache=h,m(l),w(p,u).then((function(t){s(null,t)})).catch((function(t){s(t)}))}}}({}),z=V.render,G=V.helpers,H=V.configure,I=V.wrapper,Q=V.compile,Z=V.create,tt=V.preload,et=V.__express;t.__express=et,t.compile=Q,t.configure=H,t.create=Z,t.element=R,t.helpers=G,t.preload=tt,t.render=z,t.safeValue=d,t.wrapper=I,Object.defineProperty(t,"__esModule",{value:!0})}));
|
package/dist/ejs.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
-
import 'chokidar';
|
|
3
|
+
import chokidar from 'chokidar';
|
|
4
4
|
|
|
5
5
|
const defaults = {};
|
|
6
6
|
|
|
@@ -14,6 +14,8 @@ defaults.resolver = null;
|
|
|
14
14
|
|
|
15
15
|
defaults.extension = 'ejs';
|
|
16
16
|
|
|
17
|
+
defaults.rmWhitespace = true;
|
|
18
|
+
|
|
17
19
|
defaults.withObject = false;
|
|
18
20
|
|
|
19
21
|
defaults.vars = {
|
|
@@ -262,6 +264,7 @@ class Compiler {
|
|
|
262
264
|
}
|
|
263
265
|
configure(config) {
|
|
264
266
|
this.withObject = config.withObject;
|
|
267
|
+
this.rmWhitespace = config.rmWhitespace;
|
|
265
268
|
this.token = config.token;
|
|
266
269
|
this.vars = config.vars;
|
|
267
270
|
this.matches = [];
|
|
@@ -290,9 +293,16 @@ class Compiler {
|
|
|
290
293
|
'gm'
|
|
291
294
|
);
|
|
292
295
|
}
|
|
296
|
+
truncate(value) {
|
|
297
|
+
return value && value.replace(/^(?:\r\n|\r|\n)/, '')
|
|
298
|
+
}
|
|
293
299
|
compile(content, path) {
|
|
294
300
|
const { SCOPE, SAFE, BUFFER } = this.vars;
|
|
295
|
-
|
|
301
|
+
if (this.rmWhitespace) {
|
|
302
|
+
content = content
|
|
303
|
+
.replace(/[\r\n]+/g, '\n')
|
|
304
|
+
.replace(/^\s+|\s+$/gm, '');
|
|
305
|
+
}
|
|
296
306
|
content = content
|
|
297
307
|
.replace(this.slurpStart, this.token.start)
|
|
298
308
|
.replace(this.slurpEnd, this.token.end);
|
|
@@ -300,7 +310,9 @@ class Compiler {
|
|
|
300
310
|
matchTokens(this.regex, content, (params, index, offset) => {
|
|
301
311
|
source += symbols(content.slice(index, offset));
|
|
302
312
|
params.forEach((value, index) => {
|
|
303
|
-
if (value)
|
|
313
|
+
if (value) {
|
|
314
|
+
source += this.formats[index](value);
|
|
315
|
+
}
|
|
304
316
|
});
|
|
305
317
|
});
|
|
306
318
|
source += `');`;
|
|
@@ -355,30 +367,53 @@ class Bundler {
|
|
|
355
367
|
}
|
|
356
368
|
}
|
|
357
369
|
|
|
358
|
-
const
|
|
359
|
-
|
|
370
|
+
const resolvePath = (path, template) => {
|
|
371
|
+
template = [path, template].join('/');
|
|
372
|
+
template = template.replace(/\/\//g, '/');
|
|
373
|
+
return template
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
const httpRequest = (path, template) => {
|
|
377
|
+
return fetch(resolvePath(path, template)).then((response) =>
|
|
378
|
+
response.text()
|
|
379
|
+
)
|
|
360
380
|
};
|
|
361
381
|
|
|
362
|
-
const fileSystem = (template) =>
|
|
363
|
-
new Promise((resolve, reject) => {
|
|
364
|
-
fs.readFile(template, (error, data) => {
|
|
382
|
+
const fileSystem = (path, template) => {
|
|
383
|
+
return new Promise((resolve, reject) => {
|
|
384
|
+
fs.readFile(resolvePath(path, template), (error, data) => {
|
|
365
385
|
if (error) {
|
|
366
386
|
reject(error);
|
|
367
387
|
} else {
|
|
368
388
|
resolve(data.toString());
|
|
369
389
|
}
|
|
370
390
|
});
|
|
371
|
-
})
|
|
391
|
+
})
|
|
392
|
+
};
|
|
372
393
|
|
|
373
|
-
const
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
394
|
+
const disableWatcher = (watcher) => {
|
|
395
|
+
if (watcher) {
|
|
396
|
+
watcher.unwatch('.');
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
const enableWatcher = (path, cache) => {
|
|
401
|
+
return chokidar
|
|
402
|
+
.watch('.', {
|
|
403
|
+
cwd: path,
|
|
404
|
+
})
|
|
405
|
+
.on('change', (name) => {
|
|
406
|
+
cache.remove(name);
|
|
407
|
+
})
|
|
408
|
+
.on('error', (error) => {
|
|
409
|
+
console.log('watcher error: ' + error);
|
|
410
|
+
})
|
|
377
411
|
};
|
|
378
412
|
|
|
379
413
|
class Template {
|
|
380
414
|
constructor(config, cache, compiler) {
|
|
381
415
|
this.cache = cache;
|
|
416
|
+
this.watcher = null;
|
|
382
417
|
this.compiler = compiler;
|
|
383
418
|
this.configure(config);
|
|
384
419
|
}
|
|
@@ -389,22 +424,33 @@ class Template {
|
|
|
389
424
|
: isNode()
|
|
390
425
|
? fileSystem
|
|
391
426
|
: httpRequest;
|
|
427
|
+
disableWatcher(this.watcher);
|
|
428
|
+
if (config.watch && isNode()) {
|
|
429
|
+
this.watcher = enableWatcher(this.cache, this.path);
|
|
430
|
+
}
|
|
392
431
|
}
|
|
393
432
|
resolve(template) {
|
|
394
|
-
return this.resolver(
|
|
433
|
+
return this.resolver(this.path, template)
|
|
395
434
|
}
|
|
396
|
-
result(
|
|
435
|
+
result(template, content) {
|
|
397
436
|
this.cache.set(template, content);
|
|
398
437
|
return content
|
|
399
438
|
}
|
|
439
|
+
compile(content, template) {
|
|
440
|
+
if (isFunction(content)) {
|
|
441
|
+
return content
|
|
442
|
+
} else {
|
|
443
|
+
return this.compiler.compile(content, template)
|
|
444
|
+
}
|
|
445
|
+
}
|
|
400
446
|
get(template) {
|
|
401
447
|
if (this.cache.exist(template)) {
|
|
402
448
|
return this.cache.resolve(template)
|
|
403
449
|
}
|
|
404
450
|
const content = this.resolve(template).then((content) =>
|
|
405
|
-
this.result(this.
|
|
451
|
+
this.result(template, this.compile(content, template))
|
|
406
452
|
);
|
|
407
|
-
return this.result(
|
|
453
|
+
return this.result(template, content)
|
|
408
454
|
}
|
|
409
455
|
}
|
|
410
456
|
|
|
@@ -701,6 +747,12 @@ const configSchema = (config, options) => {
|
|
|
701
747
|
config.withObject,
|
|
702
748
|
options.withObject
|
|
703
749
|
),
|
|
750
|
+
rmWhitespace: typeProp(
|
|
751
|
+
isBoolean,
|
|
752
|
+
defaults.rmWhitespace,
|
|
753
|
+
config.rmWhitespace,
|
|
754
|
+
options.rmWhitespace
|
|
755
|
+
),
|
|
704
756
|
token: extend({}, defaults.token, config.token, options.token),
|
|
705
757
|
vars: extend({}, defaults.vars, config.vars, options.vars),
|
|
706
758
|
});
|
|
@@ -729,6 +781,7 @@ const init = (options) => {
|
|
|
729
781
|
bundler.configure(config);
|
|
730
782
|
cache.configure(config);
|
|
731
783
|
template.configure(config);
|
|
784
|
+
return config
|
|
732
785
|
};
|
|
733
786
|
|
|
734
787
|
const output = (path, scope) => {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@kosatyi/ejs",
|
|
3
3
|
"description": "EJS Templates",
|
|
4
4
|
"homepage": "https://github.com/kosatyi/ejs",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.32",
|
|
6
6
|
"main": "dist/ejs.cjs",
|
|
7
7
|
"module": "dist/ejs.mjs",
|
|
8
8
|
"browser": "dist/ejs.js",
|
|
@@ -24,12 +24,10 @@
|
|
|
24
24
|
"postversion": "git push && git push --tags"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@kosatyi/rollup": "^0.0.1",
|
|
28
27
|
"@babel/core": "^7.20.12",
|
|
29
|
-
"@babel/preset-env": "^7.20.2"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"test": "test"
|
|
28
|
+
"@babel/preset-env": "^7.20.2",
|
|
29
|
+
"@kosatyi/ejs-bundle": "^1.0.6",
|
|
30
|
+
"@kosatyi/rollup": "^0.0.1"
|
|
33
31
|
},
|
|
34
32
|
"license": "MIT",
|
|
35
33
|
"bugs": {
|