diff --git a/lib/assets_context.js b/lib/assets_context.js index d0dec6f..9c1ff38 100644 --- a/lib/assets_context.js +++ b/lib/assets_context.js @@ -1,6 +1,9 @@ 'use strict'; const assert = require('assert'); +const utility = require('utility'); + +const CONTEXT_TEMPLATE_ID = 'context' + utility.sha1(String(Date.now())); class Assets { constructor(ctx) { @@ -36,8 +39,10 @@ class Assets { } getContext(data) { - data = data || this.assetsContext || {}; - return ``; + data = safeStringify(data || this.assetsContext); + let ret = `\n`; + ret += ``; + return ret; } setEntry(entry) { @@ -70,3 +75,15 @@ function linkTpl({ url }) { function scriptTpl({ url }) { return ``; } + +const escapeMap = { + '<': '<', + '>': '>', +}; +function safeStringify(data) { + if (!data) return ''; + return JSON.stringify(data) + .replace(/[<>]/g, function(ch) { + return escapeMap[ch]; + }); +} diff --git a/package.json b/package.json index 99d22cb..b0ed7e1 100644 --- a/package.json +++ b/package.json @@ -20,18 +20,19 @@ "detect-port": "^1.2.2", "mz": "^2.7.0", "mz-modules": "^2.1.0", - "sdk-base": "^3.4.0" + "sdk-base": "^3.4.0", + "utility": "^1.13.1" }, "devDependencies": { "autod": "^3.0.1", "autod-egg": "^1.1.0", - "egg": "^2.4.1", - "egg-bin": "^4.3.7", + "egg": "^2.5.0", + "egg-bin": "^4.5.0", "egg-ci": "^1.8.0", - "egg-mock": "^3.15.0", + "egg-mock": "^3.16.0", "egg-view-ejs": "^2.0.0", "egg-view-nunjucks": "^2.1.6", - "eslint": "^4.18.2", + "eslint": "^4.19.1", "eslint-config-egg": "^7.0.0", "supertest": "^3.0.0", "webstorm-disable-index": "^1.2.0" diff --git a/test/assets.test.js b/test/assets.test.js index c55196d..5a1ae20 100644 --- a/test/assets.test.js +++ b/test/assets.test.js @@ -28,7 +28,7 @@ describe('test/assets.test.js', () => { .get('/') .expect(/
<\/div>/) .expect(/<\/link>/) - .expect(/