From 709779425cec16744addb1d184a28dfe85787e14 Mon Sep 17 00:00:00 2001 From: Kevin Jahns <kevin.jahns@rwth-aachen.de> Date: Wed, 2 Dec 2015 20:04:59 +0100 Subject: [PATCH] make module import safer --- dist | 2 +- src/Transaction.js | 2 +- src/y.js | 32 ++++++++++++++------------------ 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/dist b/dist index 5da36f07..08f0702f 160000 --- a/dist +++ b/dist @@ -1 +1 @@ -Subproject commit 5da36f07cebfdcad53b845c0c3924c22f4894f2f +Subproject commit 08f0702fcde82f22663752d3b8e31803f819c094 diff --git a/src/Transaction.js b/src/Transaction.js index 1c5b6e22..57e14fed 100644 --- a/src/Transaction.js +++ b/src/Transaction.js @@ -550,7 +550,7 @@ module.exports = function (Y/* :any */) { } * addOperation (op) { yield* this.os.put(op) - if (!this.store.y.connector.isDisconnected() && this.store.forwardAppliedOperations) { + if (!this.store.y.connector.isDisconnected() && this.store.forwardAppliedOperations && op.id[0] !== '_') { // is connected, and this is not going to be send in addOperation this.store.y.connector.broadcast({ type: 'update', diff --git a/src/y.js b/src/y.js index b2d596f7..17b5595b 100644 --- a/src/y.js +++ b/src/y.js @@ -25,30 +25,26 @@ function requestModules (modules) { // determine if this module was compiled for es5 or es6 (y.js vs. y.es6) // if Insert.execute is a Function, then it isnt a generator.. // then load the es5(.js) files.. - var extention = Y.Struct.Insert.execute.constructor === Function ? '.js' : '.es6' + var extention = typeof regeneratorRuntime !== 'undefined' ? '.js' : '.es6' var promises = [] for (var i = 0; i < modules.length; i++) { var modulename = 'y-' + modules[i].toLowerCase() if (Y[modules[i]] == null) { if (requiringModules[modules[i]] == null) { - try { - require(modulename)(Y) - } catch (e) { - // module does not exist - if (typeof window !== 'undefined') { - var imported = document.createElement('script') - imported.src = Y.sourceDir + '/' + modulename + '/' + modulename + extention - document.head.appendChild(imported) + // module does not exist + if (typeof window !== 'undefined' && window.Y !== 'undefined') { + var imported = document.createElement('script') + imported.src = Y.sourceDir + '/' + modulename + '/' + modulename + extention + document.head.appendChild(imported) - let requireModule = {} - requiringModules[modules[i]] = requireModule - requireModule.promise = new Promise(function (resolve) { - requireModule.resolve = resolve - }) - promises.push(requireModule.promise) - } else { - throw e - } + let requireModule = {} + requiringModules[modules[i]] = requireModule + requireModule.promise = new Promise(function (resolve) { + requireModule.resolve = resolve + }) + promises.push(requireModule.promise) + } else { + require(modulename)(Y) } } else { promises.push(requiringModules[modules[i]].promise) -- GitLab