@makano/rew 1.4.3 → 1.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/rew/modules/context.js +10 -3
- package/package.json +1 -1
@@ -13,10 +13,12 @@ const runtime = require("./runtime");
|
|
13
13
|
const { straceLog } = require("../misc/strace");
|
14
14
|
const reval = require("../functions/reval");
|
15
15
|
const STDNS = require("../const/stdns");
|
16
|
+
const emitter = require("../functions/emitter");
|
16
17
|
|
17
18
|
let mainFile = "";
|
18
19
|
const isMainFile = (filepath) => filepath == mainFile;
|
19
20
|
const globalContext = {};
|
21
|
+
const globalEmitter = emitter();
|
20
22
|
module.exports.prepareContext = function (
|
21
23
|
custom_context,
|
22
24
|
options,
|
@@ -61,6 +63,10 @@ module.exports.prepareContext = function (
|
|
61
63
|
...custom_context,
|
62
64
|
Usage
|
63
65
|
};
|
66
|
+
globalEmitter.on('attach_name', (name, object) => {
|
67
|
+
context[name] = object;
|
68
|
+
});
|
69
|
+
globalEmitter.on('detach_name', (name) => delete context[name]);
|
64
70
|
std.prototype = { ns: (cb) => {
|
65
71
|
return new (class extends STDNS {
|
66
72
|
constructor(){
|
@@ -75,6 +81,7 @@ module.exports.prepareContext = function (
|
|
75
81
|
this.detach = std.prototype.detach;
|
76
82
|
this.out = std.prototype.out;
|
77
83
|
this.inp = std.prototype.in;
|
84
|
+
this.signal = std.prototype.signal;
|
78
85
|
this['@cb'] = cb;
|
79
86
|
}
|
80
87
|
});
|
@@ -120,17 +127,17 @@ module.exports.prepareContext = function (
|
|
120
127
|
}
|
121
128
|
if(!name) return false;
|
122
129
|
globalContext[name] = object;
|
123
|
-
|
130
|
+
globalEmitter.emit('attach_name', name, object);
|
124
131
|
return true;
|
125
132
|
}, detach: (nameOrObject) => {
|
126
133
|
const name = Object.keys(globalContext).find((key) => key == nameOrObject || globalContext[key] == nameOrObject);
|
127
134
|
if(name) {
|
128
135
|
delete globalContext[name];
|
129
|
-
|
136
|
+
globalEmitter.emit('detach_name', name);
|
130
137
|
return true;
|
131
138
|
}
|
132
139
|
return false;
|
133
|
-
} }
|
140
|
+
}, signal: globalEmitter }
|
134
141
|
Object.defineProperty(std.prototype, 'void', {
|
135
142
|
get: () => void 0
|
136
143
|
})
|