From 9c7dcb1d0a53ef72e332047c1039a8ec60dac393 Mon Sep 17 00:00:00 2001 From: Egil Date: Sun, 14 Feb 2021 20:18:20 +0100 Subject: [PATCH] eejs: Upgrade ejs to the latest version The type of ejs's `__output` variable is now string instead of array of strings, so the handling of `__output` had to change. --- src/node/eejs/index.js | 13 ++++---- src/package-lock.json | 68 +++++++++++++++++++++++++++++++++++++----- src/package.json | 2 +- 3 files changed, 67 insertions(+), 16 deletions(-) diff --git a/src/node/eejs/index.js b/src/node/eejs/index.js index 9f04fe1fb..d7d8db5ff 100644 --- a/src/node/eejs/index.js +++ b/src/node/eejs/index.js @@ -49,19 +49,18 @@ exports._exit = (b, recursive) => { exports.begin_block = (name) => { exports.info.block_stack.push(name); - exports.info.__output_stack.push(exports.info.__output.concat()); - exports.info.__output.splice(0, exports.info.__output.length); + exports.info.__output_stack.push(exports.info.__output.get()); + exports.info.__output.set(''); }; exports.end_block = () => { const name = exports.info.block_stack.pop(); const renderContext = exports.info.args[exports.info.args.length - 1]; - const content = exports.info.__output.join(''); - exports.info.__output.splice( - 0, exports.info.__output.length, ...exports.info.__output_stack.pop()); + const content = exports.info.__output.get(); + exports.info.__output.set(exports.info.__output_stack.pop()); const args = {content, renderContext}; hooks.callAll(`eejsBlock_${name}`, args); - exports.info.__output.push(args.content); + exports.info.__output.set(exports.info.__output.get().concat(args.content)); }; exports.require = (name, args, mod) => { @@ -85,7 +84,7 @@ exports.require = (name, args, mod) => { const cache = settings.maxAge !== 0; const template = cache && templateCache.get(ejspath) || ejs.compile( - `<% e._init(__output); %>${fs.readFileSync(ejspath).toString()}<% e._exit(); %>`, + `<% e._init({get: () => __output, set: (s) => { __output = s; }}); %>${fs.readFileSync(ejspath).toString()}<% e._exit(); %>`, {filename: ejspath}); if (cache) templateCache.set(ejspath, template); diff --git a/src/package-lock.json b/src/package-lock.json index b3ba5d56d..fd1292945 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -1105,7 +1105,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -1113,8 +1112,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "combined-stream": { "version": "1.0.8", @@ -1471,9 +1469,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "requires": { + "jake": "^10.6.1" + } }, "elasticsearch": { "version": "16.7.2", @@ -2147,6 +2148,14 @@ "flat-cache": "^3.0.4" } }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "requires": { + "minimatch": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2436,8 +2445,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.1", @@ -2812,6 +2820,50 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", diff --git a/src/package.json b/src/package.json index 215d7e809..76b893513 100644 --- a/src/package.json +++ b/src/package.json @@ -36,7 +36,7 @@ "cheerio": "0.22.0", "clean-css": "4.2.3", "cookie-parser": "1.4.5", - "ejs": "2.6.1", + "ejs": "^3.1.6", "etherpad-require-kernel": "1.0.9", "etherpad-yajsml": "0.0.2", "express": "4.17.1",