From 6dd33f4f9035d7df6271c6b5f87e38bd9a480dfd Mon Sep 17 00:00:00 2001 From: Kevin Jahns Date: Mon, 24 Oct 2016 23:10:44 +0200 Subject: [PATCH] copy db, connector, and type properties before handing them over to the connector, etc. This prevents some weird errors using y-elements --- src/y.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/y.js b/src/y.js index 38ff342d..17c68e70 100644 --- a/src/y.js +++ b/src/y.js @@ -112,24 +112,28 @@ function Y (opts/* :YOptions */) /* :Promise */ { modules.push(opts.share[name]) } return new Promise(function (resolve, reject) { - setTimeout(function () { - Y.requestModules(modules).then(function () { - if (opts == null) reject('An options object is expected! ') - else if (opts.connector == null) reject('You must specify a connector! (missing connector property)') - else if (opts.connector.name == null) reject('You must specify connector name! (missing connector.name property)') - else if (opts.db == null) reject('You must specify a database! (missing db property)') - else if (opts.connector.name == null) reject('You must specify db name! (missing db.name property)') - else if (opts.share == null) reject('You must specify a set of shared types!') - else { + if (opts == null) reject('An options object is expected! ') + else if (opts.connector == null) reject('You must specify a connector! (missing connector property)') + else if (opts.connector.name == null) reject('You must specify connector name! (missing connector.name property)') + else if (opts.db == null) reject('You must specify a database! (missing db property)') + else if (opts.connector.name == null) reject('You must specify db name! (missing db.name property)') + else if (opts.share == null) reject('You must specify a set of shared types!') + else { + opts = Y.utils.copyObject(opts) + opts.connector = Y.utils.copyObject(opts.connector) + opts.db = Y.utils.copyObject(opts.db) + opts.share = Y.utils.copyObject(opts.share) + setTimeout(function () { + Y.requestModules(modules).then(function () { var yconfig = new YConfig(opts) yconfig.db.whenUserIdSet(function () { yconfig.init(function () { resolve(yconfig) }) }) - } - }).catch(reject) - }, 0) + }).catch(reject) + }, 0) + } }) }