Still whacking away at the singleton issue

This commit is contained in:
Tony Garnock-Jones 2019-06-14 13:06:40 +01:00
parent fd85494672
commit 782d97a3ba
2 changed files with 6 additions and 34 deletions

View File

@ -23,6 +23,6 @@
"dependencies": {
"debug": "^4.1.1",
"immutable": "^3.8.2",
"preserves": "0.0.11"
"preserves": "0.0.12"
}
}

View File

@ -17,6 +17,11 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//---------------------------------------------------------------------------
if (require('preserves/src/singletonmodule.js')('syndicate-lang.org/syndicate-js',
require('../package.json').version,
'dataspace.js',
module)) return;
const Immutable = require("immutable");
const Preserves = require("preserves");
// const debug = require("debug")("syndicate/core:dataspace");
@ -37,39 +42,6 @@ const PRIORITY = Object.freeze({
_count: 6
});
// Singleton hackery.
const Dataspace = (function () {
const SYNDICATE = Symbol.for('@syndicate-lang/core');
const version = require('../package.json').version;
if (!(SYNDICATE in global)) {
function Dataspace(bootProc) {
this.nextId = 0;
this.index = new Skeleton.Index();
this.dataflow = new Dataflow.Graph();
this.runnable = Immutable.List();
this.pendingActions = Immutable.List([
new ActionGroup(null, Immutable.List([new Spawn(null, bootProc, Immutable.Set())]))]);
this.activatedModules = Immutable.Set();
this.actors = Immutable.Map();
}
// Parameters
Dataspace._currentFacet = null;
Dataspace._inScript = true;
global[SYNDICATE] = {
version: version,
Dataspace: Dataspace,
};
}
const g = global[SYNDICATE];
if (g.version !== version) {
console.warn('Potentially incompatible versions of @syndicate-lang/core loaded:',
version, g.version);
}
return g.Dataspace;
})();
Dataspace.BootSteps = Symbol.for('SyndicateBootSteps');
Dataspace.currentFacet = function () {