diff --git a/packages/boilerplate-generator/boilerplate_web.browser.html b/packages/boilerplate-generator/boilerplate_web.browser.html index eced069aaa..3871c81e6e 100644 --- a/packages/boilerplate-generator/boilerplate_web.browser.html +++ b/packages/boilerplate-generator/boilerplate_web.browser.html @@ -3,7 +3,7 @@ {{#each css}} {{/each}} {{#if inlineScriptsAllowed}} - + {{else}} {{/if}} diff --git a/packages/boilerplate-generator/boilerplate_web.cordova.html b/packages/boilerplate-generator/boilerplate_web.cordova.html index d4cd0be029..7f8252102a 100644 --- a/packages/boilerplate-generator/boilerplate_web.cordova.html +++ b/packages/boilerplate-generator/boilerplate_web.cordova.html @@ -8,7 +8,7 @@ {{#each css}} {{/each}} '); +}); diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index b05041740c..9b4b00fdbd 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -289,7 +289,14 @@ WebAppInternals.generateBoilerplateInstance = function (arch, }; } ), - meteorRuntimeConfig: JSON.stringify(runtimeConfig), + // Convert to a JSON string, then get rid of most weird characters, then + // wrap in double quotes. (The outermost JSON.stringify really ought to + // just be "wrap in double quotes" but we use it to be safe.) This might + // end up inside a ", but normal {{spacebars}} escaping escapes too much! See + // https://github.com/meteor/meteor/issues/3730 + meteorRuntimeConfig: JSON.stringify( + encodeURIComponent(JSON.stringify(runtimeConfig))), rootUrlPathPrefix: __meteor_runtime_config__.ROOT_URL_PATH_PREFIX || '', bundledJsCssPrefix: jsCssPrefix, inlineScriptsAllowed: WebAppInternals.inlineScriptsAllowed(), diff --git a/packages/webapp/webapp_tests.js b/packages/webapp/webapp_tests.js index 74e0b04b48..0d9dcefd54 100644 --- a/packages/webapp/webapp_tests.js +++ b/packages/webapp/webapp_tests.js @@ -155,3 +155,6 @@ Tinytest.add("webapp - generating boilerplate should not change runtime config", test.isFalse(__meteor_runtime_config__.WEBAPP_TEST_KEY); }); + +__meteor_runtime_config__.WEBAPP_TEST_A = '

foo

'; +__meteor_runtime_config__.WEBAPP_TEST_B = ''; diff --git a/tools/commands-cordova.js b/tools/commands-cordova.js index 01407ff194..3baf71e4f9 100644 --- a/tools/commands-cordova.js +++ b/tools/commands-cordova.js @@ -331,7 +331,8 @@ var generateCordovaBoilerplate = function (projectContext, clientDir, options) { urlMapper: _.identity, pathMapper: function (p) { return files.pathJoin(clientDir, p); }, baseDataExtension: { - meteorRuntimeConfig: JSON.stringify(runtimeConfig) + meteorRuntimeConfig: JSON.stringify( + encodeURIComponent(JSON.stringify(runtimeConfig))) } }); return boilerplate.toHTML();