From 79121b690c75842b62167a45d632d1e709643ba4 Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 14 Jun 2018 16:51:40 +0200 Subject: [PATCH 1/4] add registry --- src/app.js | 2 ++ src/app/editor/editor.js | 18 ++++++------ src/global/registry.js | 1 + src/module-id.js | 8 ++++++ src/registry.js | 62 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 src/global/registry.js create mode 100644 src/module-id.js create mode 100644 src/registry.js diff --git a/src/app.js b/src/app.js index c72a65d1f6..35d531f99a 100644 --- a/src/app.js +++ b/src/app.js @@ -9,6 +9,7 @@ var remixLib = require('remix-lib') var remixTests = require('remix-tests') var EventManager = remixLib.EventManager +var registry = require('./global/registry') var UniversalDApp = require('./universal-dapp.js') var UniversalDAppUI = require('./universal-dapp-ui.js') var Remixd = require('./lib/remixd') @@ -293,6 +294,7 @@ Please make a backup of your contracts and start using http://remix.ethereum.org // ----------------- Compiler ----------------- var compiler = new Compiler(importFileCb) + registry.put({api: compiler, name: 'compiler'}) var offsetToLineColumnConverter = new OffsetToLineColumnConverter(compiler.event) // ----------------- UniversalDApp ----------------- diff --git a/src/app/editor/editor.js b/src/app/editor/editor.js index a67e5dd4de..a4a35889e8 100644 --- a/src/app/editor/editor.js +++ b/src/app/editor/editor.js @@ -1,9 +1,8 @@ 'use strict' -var remixLib = require('remix-lib') -var EventManager = remixLib.EventManager var yo = require('yo-yo') var csjs = require('csjs-inject') var ace = require('brace') +var registry = require('../../global/registry') require('brace/theme/tomorrow_night_blue') @@ -65,6 +64,10 @@ document.head.appendChild(yo` function Editor (opts = {}) { var self = this + + var eventsName = ['breakpointCleared', 'breakpointAdded', 'sessionSwitched', 'contentChanged'] // not used for legacyEvent + var {uid /* api, */, legacyEvents} = registry.put({api: this, events: eventsName, name: 'editor'}) + self.event = legacyEvents var el = yo`
` var editor = ace.edit(el) if (styles.appProperties.aceTheme) { @@ -85,8 +88,7 @@ function Editor (opts = {}) { el.className += ' ' + css['ace-editor'] el.editor = editor // required to access the editor during tests self.render = function () { return el } - var event = new EventManager() - self.event = event + var sessions = {} var sourceAnnotations = [] var readOnlySessions = {} @@ -103,14 +105,14 @@ function Editor (opts = {}) { var breakpoints = e.editor.session.getBreakpoints() for (var k in breakpoints) { if (k === row.toString()) { - event.trigger('breakpointCleared', [currentSession, row]) + self.event.trigger('breakpointCleared', [currentSession, row]) e.editor.session.clearBreakpoint(row) e.stop() return } } self.setBreakpoint(row) - event.trigger('breakpointAdded', [currentSession, row]) + self.event.trigger('breakpointAdded', [currentSession, row]) e.stop() }) @@ -277,10 +279,10 @@ function Editor (opts = {}) { // Do setup on initialisation here editor.on('changeSession', function () { - event.trigger('sessionSwitched', []) + self.event.trigger('sessionSwitched', []) editor.getSession().on('change', function () { - event.trigger('contentChanged', []) + self.event.trigger('contentChanged', []) }) }) diff --git a/src/global/registry.js b/src/global/registry.js new file mode 100644 index 0000000000..80a033ab23 --- /dev/null +++ b/src/global/registry.js @@ -0,0 +1 @@ +module.exports = new (require('../registry.js'))() diff --git a/src/module-id.js b/src/module-id.js new file mode 100644 index 0000000000..5aea03205e --- /dev/null +++ b/src/module-id.js @@ -0,0 +1,8 @@ +module.exports = stacktrace +function stacktrace () { + var _ = Error.prepareStackTrace + Error.prepareStackTrace = (_, stack) => stack + var callsites = new Error().stack + Error.prepareStackTrace = _ + return callsites.slice(2).map(x => { return x.getFunctionName() }).reverse().join('.') +} diff --git a/src/registry.js b/src/registry.js new file mode 100644 index 0000000000..cec342280f --- /dev/null +++ b/src/registry.js @@ -0,0 +1,62 @@ +const moduleID = require('./module-id.js') +const remixLib = require('remix-lib') +const EventManager = remixLib.EventManager + + +module.exports = class registry { + constructor () { + this.state = {} + } + put ({ api, events, name }) { + const serveruid = moduleID() + '.' + (name || '') + console.log('registering ', serveruid) + if (this.state[serveruid]) return this.state[serveruid] + const server = { + uid: serveruid, + // api: new ApiManager(api), + events: makeEvents(events), + legacyEvents: api.event ? api.event : new EventManager() + } + this.state[serveruid] = { + _name: name, + _api: api, + _events: events, + server: server, + clients: [] + } + return server + } + get (uid) { + const clientuid = moduleID() + const state = this.state[uid] + if (!state) return + const server = state.server + const client = { + uid: clientuid, + api: state._api, + events: server.events, + legacyEvents: server.legacyEvents + } + server.clients.push(client) + return client + } +} + +function makeEvents (events) { + if (!events) return [] + function update (name) { update[name] = new EventManager() } + return events.reduce((fn, x) => { + fn[x] = new EventManager() + var oldTrigger = fn[x].trigger + fn[x].trigger = (name, args) => { + console.log(name) + oldTrigger.call(fn[x], name, args) + } + var oldRegister = fn[x].register + fn[x].register = (name, obj, fn) => { + console.log(name) + oldRegister.call(fn[x], obj, fn) + } + return fn + }, update) +} From 2147090260b283c8eee2bc3b09a2d617f6e35238 Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 14 Jun 2018 17:01:25 +0200 Subject: [PATCH 2/4] standard --- src/app/editor/editor.js | 2 +- src/registry.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/editor/editor.js b/src/app/editor/editor.js index a4a35889e8..f56f0341cc 100644 --- a/src/app/editor/editor.js +++ b/src/app/editor/editor.js @@ -66,7 +66,7 @@ function Editor (opts = {}) { var self = this var eventsName = ['breakpointCleared', 'breakpointAdded', 'sessionSwitched', 'contentChanged'] // not used for legacyEvent - var {uid /* api, */, legacyEvents} = registry.put({api: this, events: eventsName, name: 'editor'}) + var {legacyEvents} = registry.put({api: this, events: eventsName, name: 'editor'}) self.event = legacyEvents var el = yo`
` var editor = ace.edit(el) diff --git a/src/registry.js b/src/registry.js index cec342280f..be2fbea5cc 100644 --- a/src/registry.js +++ b/src/registry.js @@ -2,7 +2,6 @@ const moduleID = require('./module-id.js') const remixLib = require('remix-lib') const EventManager = remixLib.EventManager - module.exports = class registry { constructor () { this.state = {} From 5fcbff4f37cc6dbd6fc222e68f7f4fe64a4bb4d0 Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 2 Jul 2018 17:13:21 +0200 Subject: [PATCH 3/4] comment moduleid && and use minimal registry --- src/app/editor/editor.js | 7 +++-- src/module-id.js | 3 ++ src/registry.js | 59 ++++++++-------------------------------- 3 files changed, 18 insertions(+), 51 deletions(-) diff --git a/src/app/editor/editor.js b/src/app/editor/editor.js index f56f0341cc..98c1630e8d 100644 --- a/src/app/editor/editor.js +++ b/src/app/editor/editor.js @@ -1,4 +1,6 @@ 'use strict' +var remixLib = require('remix-lib') +var EventManager = remixLib.EventManager var yo = require('yo-yo') var csjs = require('csjs-inject') var ace = require('brace') @@ -65,9 +67,6 @@ document.head.appendChild(yo` function Editor (opts = {}) { var self = this - var eventsName = ['breakpointCleared', 'breakpointAdded', 'sessionSwitched', 'contentChanged'] // not used for legacyEvent - var {legacyEvents} = registry.put({api: this, events: eventsName, name: 'editor'}) - self.event = legacyEvents var el = yo`
` var editor = ace.edit(el) if (styles.appProperties.aceTheme) { @@ -84,6 +83,8 @@ function Editor (opts = {}) { // @TODO add here other propositions } } + var event = new EventManager() + self.event = event langTools.addCompleter(flowCompleter) el.className += ' ' + css['ace-editor'] el.editor = editor // required to access the editor during tests diff --git a/src/module-id.js b/src/module-id.js index 5aea03205e..efa2e63238 100644 --- a/src/module-id.js +++ b/src/module-id.js @@ -1,4 +1,7 @@ module.exports = stacktrace +/* + Not used yet +*/ function stacktrace () { var _ = Error.prepareStackTrace Error.prepareStackTrace = (_, stack) => stack diff --git a/src/registry.js b/src/registry.js index be2fbea5cc..951d076165 100644 --- a/src/registry.js +++ b/src/registry.js @@ -1,61 +1,24 @@ -const moduleID = require('./module-id.js') -const remixLib = require('remix-lib') -const EventManager = remixLib.EventManager +// const moduleID = require('./module-id.js') module.exports = class registry { constructor () { this.state = {} } - put ({ api, events, name }) { - const serveruid = moduleID() + '.' + (name || '') - console.log('registering ', serveruid) - if (this.state[serveruid]) return this.state[serveruid] + put ({ api, name }) { + // const serveruid = moduleID() + '.' + (name || '') + if (this.state[name]) return this.state[name] const server = { - uid: serveruid, - // api: new ApiManager(api), - events: makeEvents(events), - legacyEvents: api.event ? api.event : new EventManager() - } - this.state[serveruid] = { - _name: name, - _api: api, - _events: events, - server: server, - clients: [] + // uid: serveruid, + api } + this.state[name] = { server } return server } - get (uid) { - const clientuid = moduleID() - const state = this.state[uid] + get (name) { + // const clientuid = moduleID() + const state = this.state[name] if (!state) return const server = state.server - const client = { - uid: clientuid, - api: state._api, - events: server.events, - legacyEvents: server.legacyEvents - } - server.clients.push(client) - return client + return server } } - -function makeEvents (events) { - if (!events) return [] - function update (name) { update[name] = new EventManager() } - return events.reduce((fn, x) => { - fn[x] = new EventManager() - var oldTrigger = fn[x].trigger - fn[x].trigger = (name, args) => { - console.log(name) - oldTrigger.call(fn[x], name, args) - } - var oldRegister = fn[x].register - fn[x].register = (name, obj, fn) => { - console.log(name) - oldRegister.call(fn[x], obj, fn) - } - return fn - }, update) -} From 0685bea8b3baaff9865c8f103b39994c99b06cca Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 2 Jul 2018 17:14:08 +0200 Subject: [PATCH 4/4] remove uneeded require --- src/app/editor/editor.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/app/editor/editor.js b/src/app/editor/editor.js index 98c1630e8d..008a1aa6b1 100644 --- a/src/app/editor/editor.js +++ b/src/app/editor/editor.js @@ -1,10 +1,9 @@ 'use strict' -var remixLib = require('remix-lib') +var remixLib = require('remix-lib') var EventManager = remixLib.EventManager var yo = require('yo-yo') var csjs = require('csjs-inject') var ace = require('brace') -var registry = require('../../global/registry') require('brace/theme/tomorrow_night_blue') @@ -83,13 +82,12 @@ function Editor (opts = {}) { // @TODO add here other propositions } } - var event = new EventManager() - self.event = event langTools.addCompleter(flowCompleter) el.className += ' ' + css['ace-editor'] el.editor = editor // required to access the editor during tests self.render = function () { return el } - + var event = new EventManager() + self.event = event var sessions = {} var sourceAnnotations = [] var readOnlySessions = {}