@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.
@@ -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
- exportContextStore(scope,ctx,store,result,function(err) {
126
- if (err) {
127
- // TODO: proper error reporting
128
- if (!errorReported) {
129
- errorReported = true;
130
- runtime.log.audit({event: "context.get",scope:scope,id:id,store:store,key:key,error:"unexpected_error"}, opts.req);
131
- var err = new Error();
132
- err.code = "unexpected_error";
133
- err.status = 400;
134
- return reject(err);
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
- return;
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: ">=8.9.0"})+" *");
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.1.6",
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": "3.1.6",
20
- "@node-red/util": "3.1.6",
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",