diff --git a/lib/client.js b/lib/client.js index 2a9a15d..09eca42 100644 --- a/lib/client.js +++ b/lib/client.js @@ -1,6 +1,14 @@ Meteor.startup(function() { - var dom = $('script[type="text/inject-data"]', document); - var injectedDataString = $.trim(dom.text()); + var injectedDataString = "" + var scriptTags = document.getElementsByTagName("script"); + + for (var i = 0; i < scriptTags.length; i++) { + if (scriptTags[i].getAttribute("type") == "text/inject-data") { + injectedDataString = scriptTags[i].innerHTML.replace(/(^\s+|\s+$)/g, ""); + break; + } + } + InjectData._data = InjectData._decode(injectedDataString) || {}; }); diff --git a/lib/inject.html b/lib/inject.html deleted file mode 100644 index 6d2b002..0000000 --- a/lib/inject.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/server.js b/lib/server.js index 82043cf..7ec236a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -1,9 +1,6 @@ var http = Npm.require('http'); -var templateText = Assets.getText('lib/inject.html'); -var injectDataTemplate = _.template(templateText); - -// custome API +// custom API InjectData.pushData = function pushData(res, key, value) { if(!res._injectPayload) { res._injectPayload = {}; @@ -15,7 +12,9 @@ InjectData.pushData = function pushData(res, key, value) { InjectData.getData = function getData(res, key) { if(res._injectPayload) { - return _.clone(res._injectPayload[key]); + var data = res._injectPayload[key]; + var clonedData = EJSON.parse(EJSON.stringify(data)); + return clonedData; } else { return null; } @@ -50,7 +49,7 @@ InjectData._hijackWriteIfNeeded = function(res) { // inject data var data = InjectData._encode(res._injectPayload); - var injectHtml = injectDataTemplate({data: data}); + var injectHtml = ''; // if this is a buffer, convert it to string chunk = chunk.toString(); diff --git a/package.js b/package.js index 2102de2..bd12f87 100644 --- a/package.js +++ b/package.js @@ -37,12 +37,7 @@ Package.onTest(function(api) { function configure (api) { api.versionsFrom('METEOR@0.9.3'); - api.use(['ejson', 'underscore'], ['server', 'client']); - api.use('jquery', 'client'); - - api.addFiles([ - 'lib/inject.html', - ], 'server', {isAsset: true}); + api.use('ejson', ['server', 'client']); api.addFiles([ 'lib/namespace.js', diff --git a/tests/integration.js b/tests/integration.js index b65297a..63d83a8 100644 --- a/tests/integration.js +++ b/tests/integration.js @@ -39,9 +39,11 @@ Tinytest.add( }; Picker.route(path, function(params, req, res, next) { - _.each(sendingData, function(val, key) { - InjectData.pushData(res, key, val); - }); + for (var key in sendingData) { + if (sendingData.hasOwnProperty(key)) { + InjectData.pushData(res, key, sendingData[key]); + } + } next(); }); @@ -130,7 +132,8 @@ function getInjectedData(path) { var url = urlResolve(process.env.ROOT_URL, path); var res = HTTP.get(url); - var matched = res.content.match(/data">(.*)<\/script/); + var matched = res.content.match(/data">(.*?)<\/script/); + if(matched) { var encodedData = matched[1]; return InjectData._decode(encodedData);