@node-red/runtime 3.1.6 → 4.0.0-beta.1
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/api/context.js +55 -19
- package/lib/index.js +1 -1
- package/package.json +3 -3
package/lib/api/context.js
CHANGED
|
@@ -68,6 +68,7 @@ var api = module.exports = {
|
|
|
68
68
|
* @param {String} opts.store - the context store
|
|
69
69
|
* @param {String} opts.key - the context key
|
|
70
70
|
* @param {Object} opts.req - the request to log (optional)
|
|
71
|
+
* @param {Boolean} opts.keysOnly - whether to return keys only
|
|
71
72
|
* @return {Promise} - the node information
|
|
72
73
|
* @memberof @node-red/runtime_context
|
|
73
74
|
*/
|
|
@@ -102,6 +103,15 @@ var api = module.exports = {
|
|
|
102
103
|
if (key) {
|
|
103
104
|
store = store || availableStores.default;
|
|
104
105
|
ctx.get(key,store,function(err, v) {
|
|
106
|
+
if (opts.keysOnly) {
|
|
107
|
+
if (Array.isArray(v)) {
|
|
108
|
+
resolve({ [store]: { format: `array[${v.length}]`}})
|
|
109
|
+
} else if (typeof v === 'object') {
|
|
110
|
+
resolve({ [store]: { keys: Object.keys(v), format: 'Object' } })
|
|
111
|
+
} else {
|
|
112
|
+
resolve({ [store]: { keys: [] }})
|
|
113
|
+
}
|
|
114
|
+
}
|
|
105
115
|
var encoded = util.encodeObject({msg:v});
|
|
106
116
|
if (store !== availableStores.default) {
|
|
107
117
|
encoded.store = store;
|
|
@@ -118,32 +128,58 @@ var api = module.exports = {
|
|
|
118
128
|
stores = [store];
|
|
119
129
|
}
|
|
120
130
|
|
|
131
|
+
|
|
121
132
|
var result = {};
|
|
122
133
|
var c = stores.length;
|
|
123
134
|
var errorReported = false;
|
|
124
135
|
stores.forEach(function(store) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
errorReported
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
136
|
+
if (opts.keysOnly) {
|
|
137
|
+
ctx.keys(store,function(err, keys) {
|
|
138
|
+
if (err) {
|
|
139
|
+
// TODO: proper error reporting
|
|
140
|
+
if (!errorReported) {
|
|
141
|
+
errorReported = true;
|
|
142
|
+
runtime.log.audit({event: "context.get",scope:scope,id:id,store:store,key:key,error:"unexpected_error"}, opts.req);
|
|
143
|
+
var err = new Error();
|
|
144
|
+
err.code = "unexpected_error";
|
|
145
|
+
err.status = 400;
|
|
146
|
+
return reject(err);
|
|
147
|
+
}
|
|
148
|
+
return
|
|
149
|
+
}
|
|
150
|
+
result[store] = { keys }
|
|
151
|
+
c--;
|
|
152
|
+
if (c === 0) {
|
|
153
|
+
if (!errorReported) {
|
|
154
|
+
runtime.log.audit({event: "context.get",scope:scope,id:id,store:store,key:key},opts.req);
|
|
155
|
+
resolve(result);
|
|
156
|
+
}
|
|
135
157
|
}
|
|
158
|
+
})
|
|
159
|
+
} else {
|
|
160
|
+
exportContextStore(scope,ctx,store,result,function(err) {
|
|
161
|
+
if (err) {
|
|
162
|
+
// TODO: proper error reporting
|
|
163
|
+
if (!errorReported) {
|
|
164
|
+
errorReported = true;
|
|
165
|
+
runtime.log.audit({event: "context.get",scope:scope,id:id,store:store,key:key,error:"unexpected_error"}, opts.req);
|
|
166
|
+
var err = new Error();
|
|
167
|
+
err.code = "unexpected_error";
|
|
168
|
+
err.status = 400;
|
|
169
|
+
return reject(err);
|
|
170
|
+
}
|
|
136
171
|
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
c--;
|
|
140
|
-
if (c === 0) {
|
|
141
|
-
if (!errorReported) {
|
|
142
|
-
runtime.log.audit({event: "context.get",scope:scope,id:id,store:store,key:key},opts.req);
|
|
143
|
-
resolve(result);
|
|
172
|
+
return;
|
|
144
173
|
}
|
|
145
|
-
|
|
146
|
-
|
|
174
|
+
c--;
|
|
175
|
+
if (c === 0) {
|
|
176
|
+
if (!errorReported) {
|
|
177
|
+
runtime.log.audit({event: "context.get",scope:scope,id:id,store:store,key:key},opts.req);
|
|
178
|
+
resolve(result);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
147
183
|
})
|
|
148
184
|
}
|
|
149
185
|
} else {
|
package/lib/index.js
CHANGED
|
@@ -154,7 +154,7 @@ function start() {
|
|
|
154
154
|
log.info(log._("runtime.version",{component:"Node.js ",version:process.version}));
|
|
155
155
|
if (settings.UNSUPPORTED_VERSION) {
|
|
156
156
|
log.error("*****************************************************************");
|
|
157
|
-
log.error("* "+log._("runtime.unsupported_version",{component:"Node.js",version:process.version,requires: ">=
|
|
157
|
+
log.error("* "+log._("runtime.unsupported_version",{component:"Node.js",version:process.version,requires: ">=18"})+" *");
|
|
158
158
|
log.error("*****************************************************************");
|
|
159
159
|
events.emit("runtime-event",{id:"runtime-unsupported-version",payload:{type:"error",text:"notification.errors.unsupportedVersion"},retain:true});
|
|
160
160
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-red/runtime",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-beta.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@node-red/registry": "
|
|
20
|
-
"@node-red/util": "
|
|
19
|
+
"@node-red/registry": "4.0.0-beta.1",
|
|
20
|
+
"@node-red/util": "4.0.0-beta.1",
|
|
21
21
|
"async-mutex": "0.4.0",
|
|
22
22
|
"clone": "2.1.2",
|
|
23
23
|
"express": "4.18.2",
|