mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Deprecate synchronous access to jsonata
This commit is contained in:
		@@ -294,31 +294,36 @@
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        try {
 | 
					                        try {
 | 
				
			||||||
                            var result = expr.evaluate(legacyMode?{msg:parsedData}:parsedData);
 | 
					                            expr.evaluate(legacyMode?{msg:parsedData}:parsedData, (err, result) => {
 | 
				
			||||||
                            if (usesContext) {
 | 
					                                if (err) {
 | 
				
			||||||
                                testResultEditor.setValue(RED._("expressionEditor.errors.context-unsupported"),-1);
 | 
					                                    testResultEditor.setValue(RED._("expressionEditor.errors.eval",{message:err.message}),-1);
 | 
				
			||||||
                                return;
 | 
					                                } else {
 | 
				
			||||||
                            }
 | 
					                                    if (usesContext) {
 | 
				
			||||||
                            if (usesEnv) {
 | 
					                                        testResultEditor.setValue(RED._("expressionEditor.errors.context-unsupported"),-1);
 | 
				
			||||||
                                testResultEditor.setValue(RED._("expressionEditor.errors.env-unsupported"),-1);
 | 
					                                        return;
 | 
				
			||||||
                                return;
 | 
					                                    }
 | 
				
			||||||
                            }
 | 
					                                    if (usesEnv) {
 | 
				
			||||||
                            if (usesMoment) {
 | 
					                                        testResultEditor.setValue(RED._("expressionEditor.errors.env-unsupported"),-1);
 | 
				
			||||||
                                testResultEditor.setValue(RED._("expressionEditor.errors.moment-unsupported"),-1);
 | 
					                                        return;
 | 
				
			||||||
                                return;
 | 
					                                    }
 | 
				
			||||||
                            }
 | 
					                                    if (usesMoment) {
 | 
				
			||||||
                            if (usesClone) {
 | 
					                                        testResultEditor.setValue(RED._("expressionEditor.errors.moment-unsupported"),-1);
 | 
				
			||||||
                                testResultEditor.setValue(RED._("expressionEditor.errors.clone-unsupported"),-1);
 | 
					                                        return;
 | 
				
			||||||
                                return;
 | 
					                                    }
 | 
				
			||||||
                            }
 | 
					                                    if (usesClone) {
 | 
				
			||||||
 | 
					                                        testResultEditor.setValue(RED._("expressionEditor.errors.clone-unsupported"),-1);
 | 
				
			||||||
 | 
					                                        return;
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
                            var formattedResult;
 | 
					                                    var formattedResult;
 | 
				
			||||||
                            if (result !== undefined) {
 | 
					                                    if (result !== undefined) {
 | 
				
			||||||
                                formattedResult = JSON.stringify(result,null,4);
 | 
					                                        formattedResult = JSON.stringify(result,null,4);
 | 
				
			||||||
                            } else {
 | 
					                                    } else {
 | 
				
			||||||
                                formattedResult = RED._("expressionEditor.noMatch");
 | 
					                                        formattedResult = RED._("expressionEditor.noMatch");
 | 
				
			||||||
                            }
 | 
					                                    }
 | 
				
			||||||
                            testResultEditor.setValue(formattedResult,-1);
 | 
					                                    testResultEditor.setValue(formattedResult,-1);
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            });
 | 
				
			||||||
                        } catch(err) {                            
 | 
					                        } catch(err) {                            
 | 
				
			||||||
                            testResultEditor.setValue(RED._("expressionEditor.errors.eval",{message:err.message}),-1);
 | 
					                            testResultEditor.setValue(RED._("expressionEditor.errors.eval",{message:err.message}),-1);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -117,14 +117,21 @@ module.exports = function(RED) {
 | 
				
			|||||||
                        if (p.v) {
 | 
					                        if (p.v) {
 | 
				
			||||||
                            try {
 | 
					                            try {
 | 
				
			||||||
                                var exp = RED.util.prepareJSONataExpression(p.v, node);
 | 
					                                var exp = RED.util.prepareJSONataExpression(p.v, node);
 | 
				
			||||||
                                var val = RED.util.evaluateJSONataExpression(exp, msg);
 | 
					                                RED.util.evaluateJSONataExpression(exp, msg, (err, newValue) => {
 | 
				
			||||||
                                RED.util.setMessageProperty(msg, property, val, true);
 | 
					                                    if (err) {
 | 
				
			||||||
                            }
 | 
					                                        errors.push(err.toString())
 | 
				
			||||||
                            catch  (err) {
 | 
					                                    } else {
 | 
				
			||||||
 | 
					                                        RED.util.setMessageProperty(msg,property,newValue,true);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    evaluateProperty(doneEvaluating)
 | 
				
			||||||
 | 
					                                });
 | 
				
			||||||
 | 
					                            } catch (err) {
 | 
				
			||||||
                                errors.push(err.message);
 | 
					                                errors.push(err.message);
 | 
				
			||||||
 | 
					                                evaluateProperty(doneEvaluating)
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					                            evaluateProperty(doneEvaluating)
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        evaluateProperty(doneEvaluating)
 | 
					 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        try {
 | 
					                        try {
 | 
				
			||||||
                            RED.util.evaluateNodeProperty(value, valueType, node, msg, (err, newValue) => {
 | 
					                            RED.util.evaluateNodeProperty(value, valueType, node, msg, (err, newValue) => {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										14
									
								
								packages/node_modules/@node-red/util/lib/util.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								packages/node_modules/@node-red/util/lib/util.js
									
									
									
									
										vendored
									
									
								
							@@ -25,7 +25,7 @@ const moment = require("moment-timezone");
 | 
				
			|||||||
const safeJSONStringify = require("json-stringify-safe");
 | 
					const safeJSONStringify = require("json-stringify-safe");
 | 
				
			||||||
const util = require("util");
 | 
					const util = require("util");
 | 
				
			||||||
const { hasOwnProperty } = Object.prototype;
 | 
					const { hasOwnProperty } = Object.prototype;
 | 
				
			||||||
 | 
					const log = require("./log")
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Safely returns the object construtor name.
 | 
					 * Safely returns the object construtor name.
 | 
				
			||||||
 * @return {String} the name of the object constructor if it exists, empty string otherwise.
 | 
					 * @return {String} the name of the object constructor if it exists, empty string otherwise.
 | 
				
			||||||
@@ -671,8 +671,11 @@ function evaluateNodeProperty(value, type, node, msg, callback) {
 | 
				
			|||||||
    } else if (type === 'bool') {
 | 
					    } else if (type === 'bool') {
 | 
				
			||||||
        result = /^true$/i.test(value);
 | 
					        result = /^true$/i.test(value);
 | 
				
			||||||
    } else if (type === 'jsonata') {
 | 
					    } else if (type === 'jsonata') {
 | 
				
			||||||
        var expr = prepareJSONataExpression(value,node);
 | 
					        var expr = prepareJSONataExpression(value, node);
 | 
				
			||||||
        result = evaluateJSONataExpression(expr,msg);
 | 
					        result = evaluateJSONataExpression(expr, msg, callback);
 | 
				
			||||||
 | 
					        if (callback) {
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    } else if (type === 'env') {
 | 
					    } else if (type === 'env') {
 | 
				
			||||||
        result = evaluateEnvProperty(value, node);
 | 
					        result = evaluateEnvProperty(value, node);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -767,6 +770,11 @@ function evaluateJSONataExpression(expr,msg,callback) {
 | 
				
			|||||||
                })
 | 
					                })
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        log.warn('Deprecated API warning: Calls to RED.util.evaluateJSONataExpression must include a callback. '+
 | 
				
			||||||
 | 
					                 'This will not be optional in Node-RED 4.0. Please identify the node from the following stack '+
 | 
				
			||||||
 | 
					                 'and check for an update on npm. If none is available, please notify the node author.')
 | 
				
			||||||
 | 
					        log.warn(new Error().stack)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return expr.evaluate(context, bindings, callback);
 | 
					    return expr.evaluate(context, bindings, callback);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user