@makano/rew 1.4.2 → 1.4.3

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.
@@ -16,6 +16,7 @@ const STDNS = require("../const/stdns");
16
16
 
17
17
  let mainFile = "";
18
18
  const isMainFile = (filepath) => filepath == mainFile;
19
+ const globalContext = {};
19
20
  module.exports.prepareContext = function (
20
21
  custom_context,
21
22
  options,
@@ -42,7 +43,8 @@ module.exports.prepareContext = function (
42
43
  __using__: {},
43
44
  get _(){
44
45
  return void 0;
45
- }
46
+ },
47
+ ...globalContext
46
48
  };
47
49
  if (options.useContext) {
48
50
  context = {
@@ -69,6 +71,8 @@ module.exports.prepareContext = function (
69
71
  this.define = std.prototype.define;
70
72
  this.Main = std.prototype.Main;
71
73
  this.attach = std.prototype.attach;
74
+ this.named = std.prototype.named;
75
+ this.detach = std.prototype.detach;
72
76
  this.out = std.prototype.out;
73
77
  this.inp = std.prototype.in;
74
78
  this['@cb'] = cb;
@@ -94,10 +98,38 @@ module.exports.prepareContext = function (
94
98
  }
95
99
  }
96
100
  return (['main', cb?.main ?? cb]);
97
- }, attach: (object) => {
98
- for(let i in object){
99
- if(!context[i]) context[i] = object[i];
101
+ }, named: (name) => {
102
+ return (item) => [name, item];
103
+ }, attach: (name, object) => {
104
+ if(Array.isArray(name) && name.length == 2 && typeof name[0] == 'string'){
105
+ object = name[1];
106
+ name = name[0];
107
+ }
108
+ if(typeof name == "object" && typeof object == "string"){
109
+ const tname = object;
110
+ object = name;
111
+ name = tname;
112
+ }
113
+ if(typeof name == "object" && !object){
114
+ object = name;
115
+ name = object.name;
116
+ }
117
+ if(typeof name == "function"){
118
+ object = name;
119
+ name = object.name;
120
+ }
121
+ if(!name) return false;
122
+ globalContext[name] = object;
123
+ context[name] = object;
124
+ return true;
125
+ }, detach: (nameOrObject) => {
126
+ const name = Object.keys(globalContext).find((key) => key == nameOrObject || globalContext[key] == nameOrObject);
127
+ if(name) {
128
+ delete globalContext[name];
129
+ delete context[name];
130
+ return true;
100
131
  }
132
+ return false;
101
133
  } }
102
134
  Object.defineProperty(std.prototype, 'void', {
103
135
  get: () => void 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makano/rew",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "A simple coffescript runtime and app manager",
5
5
  "main": "main.js",
6
6
  "directories": {
package/runtime.d.ts CHANGED
@@ -1029,8 +1029,10 @@ declare namespace Rew {
1029
1029
  prototype: {
1030
1030
  void: void,
1031
1031
  Main: () => [string, () => any],
1032
+ named: (name: string) => (item: any) => [string, any],
1032
1033
  define: (name: string, object: any) => any,
1033
- attach: (object: any) => any,
1034
+ attach: (name: string | any, object: any) => any,
1035
+ detach: (nameOrObject: any) => any,
1034
1036
 
1035
1037
  out: stdout;
1036
1038
  in: stdin;