node-opcua-client-proxy 2.59.0 → 2.62.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.
@@ -11,12 +11,13 @@ const node_opcua_service_call_1 = require("node-opcua-service-call");
11
11
  const node_opcua_status_code_1 = require("node-opcua-status-code");
12
12
  const node_opcua_utils_1 = require("node-opcua-utils");
13
13
  const node_opcua_variant_1 = require("node-opcua-variant");
14
+ const node_opcua_debug_1 = require("node-opcua-debug");
14
15
  const proxy_1 = require("./proxy");
15
16
  const proxy_variable_1 = require("./proxy_variable");
17
+ const doDebug = false;
18
+ const errorLog = (0, node_opcua_debug_1.make_errorLog)("Proxy");
19
+ const debugLog = (0, node_opcua_debug_1.make_debugLog)("Proxy");
16
20
  const resultMask = (0, node_opcua_data_model_1.makeResultMask)("ReferenceType | IsForward | BrowseName | NodeClass | TypeDefinition");
17
- function convertNodeIdToDataType(dataTypeId) {
18
- return dataTypeId._dataType;
19
- }
20
21
  /**
21
22
  * @method convertNodeIdToDataTypeAsync
22
23
  *
@@ -97,36 +98,38 @@ function convertNodeIdToDataTypeAsync(session, dataTypeId, callback) {
97
98
  });
98
99
  });
99
100
  }
100
- /**
101
- * @method add_method
102
- * @private
103
- */
104
- function add_method(proxyManager, obj, reference, outerCallback) {
105
- const session = proxyManager.session;
106
- const name = (0, node_opcua_utils_1.lowerFirstLetter)(reference.browseName.name);
107
- obj[name] = function functionCaller(inputArgs, callback) {
101
+ function convertToVariant(value, arg, propName) {
102
+ const dataType = arg._basicDataType || node_opcua_variant_1.DataType.Null;
103
+ const arrayType = arg.valueRank === 1 ? node_opcua_variant_1.VariantArrayType.Array : arg.valueRank === -1 ? node_opcua_variant_1.VariantArrayType.Scalar : node_opcua_variant_1.VariantArrayType.Matrix;
104
+ if (value === undefined) {
105
+ throw new Error("expecting input argument ");
106
+ }
107
+ if (arrayType === node_opcua_variant_1.VariantArrayType.Array) {
108
+ if (!Array.isArray(value)) {
109
+ throw new Error("expecting value to be an Array or a TypedArray");
110
+ }
111
+ }
112
+ return new node_opcua_variant_1.Variant({ arrayType, dataType, value });
113
+ }
114
+ function convertToVariantArray(inputArgsDef, inputArgs) {
115
+ const inputArguments = inputArgsDef.map((arg) => {
116
+ const propName = (0, node_opcua_utils_1.lowerFirstLetter)(arg.name || "");
117
+ const value = inputArgs[propName];
118
+ return convertToVariant(value, arg, propName);
119
+ });
120
+ return inputArguments;
121
+ }
122
+ function makeFunction(obj, methodName) {
123
+ return function functionCaller(inputArgs, callback) {
124
+ const session = this.proxyManager.session;
108
125
  (0, node_opcua_assert_1.assert)(typeof callback === "function");
126
+ const methodDef = this.$methods[methodName];
109
127
  // convert input arguments into Variants
110
- const inputArgsDef = obj[name].inputArguments || [];
111
- const inputArguments = inputArgsDef.map((arg) => {
112
- const dataType = convertNodeIdToDataType(arg.dataType);
113
- const arrayType = arg.valueRank === 1 ? node_opcua_variant_1.VariantArrayType.Array : node_opcua_variant_1.VariantArrayType.Scalar;
114
- // xx console.log("xxx ",arg.toString());
115
- const propName = (0, node_opcua_utils_1.lowerFirstLetter)(arg.name);
116
- const value = inputArgs[propName];
117
- if (value === undefined) {
118
- throw new Error("expecting input argument " + propName);
119
- }
120
- if (arrayType === node_opcua_variant_1.VariantArrayType.Array) {
121
- if (!Array.isArray(value)) {
122
- throw new Error("expecting value to be an Array or a TypedArray");
123
- }
124
- }
125
- return new node_opcua_variant_1.Variant({ arrayType, dataType, value });
126
- });
128
+ const inputArgsDef = methodDef.inputArguments || [];
129
+ const inputArguments = convertToVariantArray(inputArgsDef, inputArgs);
127
130
  const methodToCall = new node_opcua_service_call_1.CallMethodRequest({
128
131
  inputArguments,
129
- methodId: reference.nodeId,
132
+ methodId: methodDef.nodeId,
130
133
  objectId: obj.nodeId
131
134
  });
132
135
  session.call(methodToCall, (err, callResult) => {
@@ -139,73 +142,89 @@ function add_method(proxyManager, obj, reference, outerCallback) {
139
142
  return callback(new Error("Error " + callResult.statusCode.toString()));
140
143
  }
141
144
  callResult.outputArguments = callResult.outputArguments || [];
142
- obj[name].outputArguments = obj[name].outputArguments || [];
143
- if (callResult.outputArguments.length !== obj[name].outputArguments.length) {
145
+ if (callResult.outputArguments.length !== methodDef.outputArguments.length) {
144
146
  return callback(new Error("Internal error callResult.outputArguments.length " +
145
147
  callResult.outputArguments.length +
146
148
  " " +
147
- obj[name].outputArguments.length));
149
+ obj[methodName].outputArguments.length));
148
150
  }
149
- const outputArgs = {};
150
- const outputArgsDef = obj[name].outputArguments;
151
- outputArgsDef.map((arg, index) => {
151
+ const output = {};
152
+ methodDef.outputArguments.map((arg, index) => {
152
153
  const variant = callResult.outputArguments[index];
153
154
  const propName = (0, node_opcua_utils_1.lowerFirstLetter)(arg.name);
154
- outputArgs[propName] = variant.value;
155
+ output[propName] = variant.value;
155
156
  });
156
- callback(err, outputArgs);
157
+ callback(err, output);
157
158
  });
158
159
  };
159
- function extractDataType(arg, callback) {
160
- if (arg.dataType && arg.dataType._dataType) {
161
- setImmediate(callback); // already converted
162
- return;
163
- }
164
- convertNodeIdToDataTypeAsync(session, arg.dataType, (err, dataType) => {
165
- if (!err) {
166
- arg.dataType._dataType = dataType;
167
- }
168
- callback(err);
169
- });
160
+ }
161
+ function extractDataType(session, arg, callback) {
162
+ if (arg.dataType && arg._basicDataType) {
163
+ setImmediate(callback); // already converted
164
+ return;
170
165
  }
171
- const methodObj = {
172
- browseName: name,
173
- executableFlag: false,
174
- func: obj[name],
175
- nodeId: reference.nodeId
176
- };
177
- obj.$methods[name] = methodObj;
166
+ convertNodeIdToDataTypeAsync(session, arg.dataType, (err, dataType) => {
167
+ if (!err) {
168
+ arg._basicDataType = dataType;
169
+ }
170
+ callback(err || undefined);
171
+ });
172
+ }
173
+ /**
174
+ * @method add_method
175
+ * @private
176
+ */
177
+ function add_method(proxyManager, obj, reference, outerCallback) {
178
+ const session = proxyManager.session;
179
+ const methodName = (0, node_opcua_utils_1.lowerFirstLetter)(reference.browseName.name);
180
+ let inputArguments = [];
181
+ let outputArguments = [];
178
182
  // tslint:disable:no-shadowed-variable
179
183
  async.series([
180
184
  (callback) => {
181
- session.getArgumentDefinition(reference.nodeId, (err, args) => {
185
+ session.getArgumentDefinition(reference.nodeId, (err, argumentDefinition) => {
182
186
  // istanbul ignore next
183
187
  if (err) {
184
- setImmediate(() => {
185
- callback(err);
186
- });
187
- return;
188
+ errorLog("getArgumentDefinition failed ", err);
189
+ return callback(err);
190
+ }
191
+ // istanbul ignore next
192
+ if (!argumentDefinition) {
193
+ return callback(new Error("Internal Error"));
188
194
  }
189
- const inputArguments = args.inputArguments;
190
- const outputArguments = args.outputArguments;
191
- obj[name].inputArguments = inputArguments;
192
- obj[name].outputArguments = outputArguments;
195
+ inputArguments = argumentDefinition.inputArguments || [];
196
+ outputArguments = argumentDefinition.outputArguments || [];
197
+ const _extractDataType = extractDataType.bind(null, session);
193
198
  async.series([
194
- (callback) => {
195
- async.eachSeries(obj[name].inputArguments, extractDataType, (err) => callback(err));
196
- },
197
- (callback) => {
198
- async.eachSeries(obj[name].outputArguments, extractDataType, (err) => callback(err));
199
- }
199
+ (innerCallback) => async.eachSeries(inputArguments, _extractDataType, innerCallback),
200
+ (innerCallback) => async.eachSeries(outputArguments, _extractDataType, innerCallback)
200
201
  ], (err) => callback(err));
201
202
  });
202
203
  },
203
204
  (callback) => {
205
+ const methodObj = {
206
+ browseName: methodName,
207
+ executableFlag: false,
208
+ func: makeFunction(obj, methodName),
209
+ nodeId: reference.nodeId,
210
+ inputArguments,
211
+ outputArguments
212
+ };
213
+ obj.$methods[methodName] = methodObj;
214
+ obj[methodName] = methodObj.func;
215
+ obj[methodName].inputArguments = inputArguments;
216
+ obj[methodName].outputArguments = outputArguments;
217
+ doDebug && debugLog("installing method name", methodName);
204
218
  proxyManager._monitor_execution_flag(methodObj, () => {
205
219
  callback();
206
220
  });
207
221
  }
208
- ], (err) => outerCallback(err));
222
+ ], (err) => {
223
+ if (err) {
224
+ errorLog("Error =>", err);
225
+ }
226
+ outerCallback(err);
227
+ });
209
228
  }
210
229
  function add_component(proxyManager, obj, reference, callback) {
211
230
  const session = proxyManager.session;
@@ -252,7 +271,6 @@ function add_typeDefinition(proxyManager, obj, references, callback) {
252
271
  const session = proxyManager.session;
253
272
  references = references || [];
254
273
  if (references.length !== 1) {
255
- // xx console.log(" cannot find type definition", references.length);
256
274
  setImmediate(callback);
257
275
  return;
258
276
  }
@@ -299,6 +317,11 @@ class ObjectExplorer {
299
317
  }
300
318
  }
301
319
  exports.ObjectExplorer = ObjectExplorer;
320
+ function t(references) {
321
+ if (!references)
322
+ return "";
323
+ return references.map((r) => r.browseName.name + " " + r.nodeId.toString());
324
+ }
302
325
  function readUAStructure(proxyManager, obj, callback) {
303
326
  const session = proxyManager.session;
304
327
  // 0 Object
@@ -374,27 +397,26 @@ function readUAStructure(proxyManager, obj, callback) {
374
397
  }
375
398
  ];
376
399
  session.browse(nodesToBrowse, (err, browseResults) => {
377
- function t(references) {
378
- return references.map((r) => r.browseName.name + " " + r.nodeId.toString());
379
- }
380
400
  browseResults = browseResults || [];
381
401
  // istanbul ignore next
382
402
  if (err) {
383
403
  return callback(err);
384
404
  }
385
- // xx console.log("Components", t(results[0].references));
386
- // xx console.log("Properties", t(results[1].references));
387
- // xx console.log("Methods", t(results[2].references));
405
+ if (doDebug) {
406
+ debugLog("Components", t(browseResults[0].references));
407
+ debugLog("Properties", t(browseResults[1].references));
408
+ debugLog("Methods", t(browseResults[2].references));
409
+ }
388
410
  async.series([
389
411
  (callback) => {
390
- async.mapSeries(browseResults[0].references, (reference, callback) => add_component(proxyManager, obj, reference, callback), (err) => callback(err));
412
+ async.mapSeries(browseResults[0].references, (reference, innerCallback) => add_component(proxyManager, obj, reference, innerCallback), (err) => callback(err));
391
413
  },
392
414
  (callback) => {
393
- async.mapSeries(browseResults[1].references, (reference, callback) => add_property(proxyManager, obj, reference, callback), (err) => callback(err));
415
+ async.mapSeries(browseResults[1].references, (reference, innerCallback) => add_property(proxyManager, obj, reference, innerCallback), (err) => callback(err));
394
416
  },
395
417
  // now enrich our object with nice callable async methods
396
418
  (callback) => {
397
- async.mapSeries(browseResults[2].references, (reference, callback) => add_method(proxyManager, obj, reference, callback), (err) => callback(err));
419
+ async.mapSeries(browseResults[2].references, (reference, innerCallback) => add_method(proxyManager, obj, reference, innerCallback), (err) => callback(err));
398
420
  },
399
421
  // now set typeDefinition
400
422
  (callback) => {
@@ -1 +1 @@
1
- {"version":3,"file":"object_explorer.js","sourceRoot":"","sources":["../source/object_explorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object_explorer.js","sourceRoot":"","sources":["../source/object_explorer.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,20 @@ import { EventEmitter } from "events";
6
6
  import { NodeClass } from "node-opcua-data-model";
7
7
  import { DataValue } from "node-opcua-data-value";
8
8
  import { NodeId } from "node-opcua-nodeid";
9
- import { Variant } from "node-opcua-variant";
9
+ import { Argument } from "node-opcua-service-call";
10
+ import { DataType, Variant } from "node-opcua-variant";
10
11
  import { UAProxyManager } from "./proxy_manager";
12
+ export interface ArgumentEx extends Argument {
13
+ _basicDataType: DataType;
14
+ }
15
+ export interface MethodDescription {
16
+ browseName: string;
17
+ executableFlag: boolean;
18
+ func: (input: Record<string, unknown>, callback: (err: Error | null, output?: Record<string, unknown>) => void) => void;
19
+ nodeId: NodeId;
20
+ inputArguments: ArgumentEx[];
21
+ outputArguments: ArgumentEx[];
22
+ }
11
23
  export declare class ProxyBaseNode extends EventEmitter {
12
24
  /**
13
25
  * the object nodeId
@@ -32,7 +44,7 @@ export declare class ProxyBaseNode extends EventEmitter {
32
44
  * @property $methods
33
45
  * @type {Array<ProxyBaseNode>}
34
46
  */
35
- $methods: any[];
47
+ $methods: MethodDescription[];
36
48
  /**
37
49
  * the Folder's elements
38
50
  * @property $organizes
@@ -1 +1 @@
1
- {"version":3,"file":"proxy_base_node.js","sourceRoot":"","sources":["../source/proxy_base_node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy_base_node.js","sourceRoot":"","sources":["../source/proxy_base_node.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-client-proxy",
3
- "version": "2.59.0",
3
+ "version": "2.62.1",
4
4
  "description": "pure nodejs OPCUA SDK - module -client-proxy",
5
5
  "scripts": {
6
6
  "clean": "node -e \"require('rimraf').sync('dist');\"",
@@ -12,22 +12,23 @@
12
12
  "main": "./dist/index.js",
13
13
  "types": "./dist/index.d.ts",
14
14
  "dependencies": {
15
- "async": "^3.2.1",
16
- "node-opcua-address-space": "2.59.0",
15
+ "async": "^3.2.2",
16
+ "node-opcua-address-space": "2.62.1",
17
17
  "node-opcua-assert": "2.55.0",
18
18
  "node-opcua-constants": "2.52.0",
19
- "node-opcua-data-model": "2.57.0",
20
- "node-opcua-data-value": "2.59.0",
21
- "node-opcua-nodeid": "2.55.0",
22
- "node-opcua-pseudo-session": "2.59.0",
23
- "node-opcua-service-browse": "2.59.0",
24
- "node-opcua-service-call": "2.59.0",
25
- "node-opcua-service-read": "2.59.0",
26
- "node-opcua-service-subscription": "2.59.0",
27
- "node-opcua-service-write": "2.59.0",
19
+ "node-opcua-data-model": "2.61.0",
20
+ "node-opcua-data-value": "2.62.0",
21
+ "node-opcua-debug": "2.61.0",
22
+ "node-opcua-nodeid": "2.61.0",
23
+ "node-opcua-pseudo-session": "2.62.0",
24
+ "node-opcua-service-browse": "2.62.0",
25
+ "node-opcua-service-call": "2.62.0",
26
+ "node-opcua-service-read": "2.62.0",
27
+ "node-opcua-service-subscription": "2.62.0",
28
+ "node-opcua-service-write": "2.62.0",
28
29
  "node-opcua-status-code": "2.56.0",
29
- "node-opcua-utils": "2.57.0",
30
- "node-opcua-variant": "2.59.0"
30
+ "node-opcua-utils": "2.60.0",
31
+ "node-opcua-variant": "2.62.0"
31
32
  },
32
33
  "author": "Etienne Rossignon",
33
34
  "license": "MIT",
@@ -44,5 +45,5 @@
44
45
  "internet of things"
45
46
  ],
46
47
  "homepage": "http://node-opcua.github.io/",
47
- "gitHead": "ea10265745d3d4b8af249a4e13288ad71232706f"
48
+ "gitHead": "2c2e9bd471f14c303fc617415f39a8b7c82ad55a"
48
49
  }
@@ -8,16 +8,22 @@ import { Callback, ErrorCallback } from "node-opcua-status-code";
8
8
  import { AttributeIds, BrowseDirection, makeNodeClassMask, makeResultMask } from "node-opcua-data-model";
9
9
  import { DataValue } from "node-opcua-data-value";
10
10
  import { NodeId } from "node-opcua-nodeid";
11
- import { IBasicSession } from "node-opcua-pseudo-session";
11
+ import { IBasicSession, ArgumentDefinition } from "node-opcua-pseudo-session";
12
12
  import { BrowseResult, ReferenceDescription } from "node-opcua-service-browse";
13
- import { CallMethodRequest, CallMethodResult } from "node-opcua-service-call";
13
+ import { CallMethodRequest, CallMethodResult, Argument } from "node-opcua-service-call";
14
14
  import { StatusCodes } from "node-opcua-status-code";
15
15
  import { lowerFirstLetter } from "node-opcua-utils";
16
- import { DataType, Variant, VariantArrayType } from "node-opcua-variant";
16
+ import { DataType, Variant, VariantArrayType, VariantLike } from "node-opcua-variant";
17
+ import { make_errorLog, make_debugLog } from "node-opcua-debug";
17
18
 
18
19
  import { makeRefId } from "./proxy";
19
20
  import { UAProxyManager } from "./proxy_manager";
20
21
  import { ProxyVariable } from "./proxy_variable";
22
+ import { MethodDescription, ArgumentEx } from "./proxy_base_node";
23
+
24
+ const doDebug = false;
25
+ const errorLog = make_errorLog("Proxy");
26
+ const debugLog = make_debugLog("Proxy");
21
27
 
22
28
  export interface ObjectExplorerOptions {
23
29
  proxyManager: UAProxyManager;
@@ -28,10 +34,6 @@ export interface ObjectExplorerOptions {
28
34
 
29
35
  const resultMask = makeResultMask("ReferenceType | IsForward | BrowseName | NodeClass | TypeDefinition");
30
36
 
31
- function convertNodeIdToDataType(dataTypeId: NodeId): DataType {
32
- return (dataTypeId as any)._dataType as DataType;
33
- }
34
-
35
37
  /**
36
38
  * @method convertNodeIdToDataTypeAsync
37
39
  *
@@ -121,43 +123,50 @@ function convertNodeIdToDataTypeAsync(session: IBasicSession, dataTypeId: NodeId
121
123
  });
122
124
  }
123
125
 
124
- /**
125
- * @method add_method
126
- * @private
127
- */
128
- function add_method(proxyManager: UAProxyManager, obj: any, reference: ReferenceDescription, outerCallback: (err?: Error) => void) {
129
- const session = proxyManager.session;
126
+ function convertToVariant(value: unknown, arg: ArgumentEx, propName: string): Variant {
127
+ const dataType = arg._basicDataType || DataType.Null;
128
+ const arrayType =
129
+ arg.valueRank === 1 ? VariantArrayType.Array : arg.valueRank === -1 ? VariantArrayType.Scalar : VariantArrayType.Matrix;
130
130
 
131
- const name = lowerFirstLetter(reference.browseName.name!);
131
+ if (value === undefined) {
132
+ throw new Error("expecting input argument ");
133
+ }
134
+ if (arrayType === VariantArrayType.Array) {
135
+ if (!Array.isArray(value)) {
136
+ throw new Error("expecting value to be an Array or a TypedArray");
137
+ }
138
+ }
139
+ return new Variant({ arrayType, dataType, value });
140
+ }
132
141
 
133
- obj[name] = function functionCaller(inputArgs: any, callback: (err: Error | null, args?: any[]) => void) {
134
- assert(typeof callback === "function");
135
- // convert input arguments into Variants
136
- const inputArgsDef = obj[name].inputArguments || [];
142
+ function convertToVariantArray(inputArgsDef: ArgumentEx[], inputArgs: Record<string, unknown>): Variant[] {
143
+ const inputArguments: Variant[] = inputArgsDef.map((arg: ArgumentEx) => {
144
+ const propName = lowerFirstLetter(arg.name || "");
145
+ const value = inputArgs[propName];
146
+ return convertToVariant(value, arg, propName);
147
+ });
148
+ return inputArguments;
149
+ }
137
150
 
138
- const inputArguments: Variant[] = inputArgsDef.map((arg: any) => {
139
- const dataType = convertNodeIdToDataType(arg.dataType);
151
+ function makeFunction(obj: any, methodName: string) {
152
+ return function functionCaller(
153
+ this: any,
154
+ inputArgs: Record<string, unknown>,
155
+ callback: (err: Error | null, output?: Record<string, unknown>) => void
156
+ ) {
157
+ const session = this.proxyManager.session;
140
158
 
141
- const arrayType = arg.valueRank === 1 ? VariantArrayType.Array : VariantArrayType.Scalar;
159
+ assert(typeof callback === "function");
142
160
 
143
- // xx console.log("xxx ",arg.toString());
144
- const propName = lowerFirstLetter(arg.name);
161
+ const methodDef = this.$methods[methodName];
162
+ // convert input arguments into Variants
163
+ const inputArgsDef = methodDef.inputArguments || [];
145
164
 
146
- const value = inputArgs[propName];
147
- if (value === undefined) {
148
- throw new Error("expecting input argument " + propName);
149
- }
150
- if (arrayType === VariantArrayType.Array) {
151
- if (!Array.isArray(value)) {
152
- throw new Error("expecting value to be an Array or a TypedArray");
153
- }
154
- }
155
- return new Variant({ arrayType, dataType, value });
156
- });
165
+ const inputArguments: Variant[] = convertToVariantArray(inputArgsDef, inputArgs);
157
166
 
158
167
  const methodToCall = new CallMethodRequest({
159
168
  inputArguments,
160
- methodId: reference.nodeId,
169
+ methodId: methodDef.nodeId,
161
170
  objectId: obj.nodeId
162
171
  });
163
172
 
@@ -175,80 +184,75 @@ function add_method(proxyManager: UAProxyManager, obj: any, reference: Reference
175
184
 
176
185
  callResult.outputArguments = callResult.outputArguments || [];
177
186
 
178
- obj[name].outputArguments = obj[name].outputArguments || [];
179
-
180
- if (callResult.outputArguments.length !== obj[name].outputArguments.length) {
187
+ if (callResult.outputArguments.length !== methodDef.outputArguments.length) {
181
188
  return callback(
182
189
  new Error(
183
190
  "Internal error callResult.outputArguments.length " +
184
191
  callResult.outputArguments.length +
185
192
  " " +
186
- obj[name].outputArguments.length
193
+ obj[methodName].outputArguments.length
187
194
  )
188
195
  );
189
196
  }
190
-
191
- const outputArgs: any = {};
192
-
193
- const outputArgsDef = obj[name].outputArguments;
194
- outputArgsDef.map((arg: any, index: number) => {
197
+ const output: Record<string, unknown> = {};
198
+ methodDef.outputArguments.map((arg: Argument, index: number) => {
195
199
  const variant = callResult!.outputArguments![index];
196
- const propName = lowerFirstLetter(arg.name);
197
- outputArgs[propName] = variant.value;
200
+ const propName = lowerFirstLetter(arg.name!);
201
+ output[propName] = variant.value;
198
202
  });
199
203
 
200
- callback(err, outputArgs);
204
+ callback(err, output);
201
205
  });
202
206
  };
207
+ }
203
208
 
204
- function extractDataType(arg: any, callback: any): void {
205
- if (arg.dataType && arg.dataType._dataType) {
206
- setImmediate(callback); // already converted
207
- return;
209
+ function extractDataType(session: IBasicSession, arg: ArgumentEx, callback: ErrorCallback): void {
210
+ if (arg.dataType && arg._basicDataType) {
211
+ setImmediate(callback); // already converted
212
+ return;
213
+ }
214
+
215
+ convertNodeIdToDataTypeAsync(session, arg.dataType, (err?: Error | null, dataType?: DataType) => {
216
+ if (!err) {
217
+ arg._basicDataType = dataType!;
208
218
  }
219
+ callback(err || undefined);
220
+ });
221
+ }
222
+ /**
223
+ * @method add_method
224
+ * @private
225
+ */
226
+ function add_method(proxyManager: UAProxyManager, obj: any, reference: ReferenceDescription, outerCallback: (err?: Error) => void) {
227
+ const session = proxyManager.session;
209
228
 
210
- convertNodeIdToDataTypeAsync(session, arg.dataType, (err: Error | null, dataType?: DataType) => {
211
- if (!err) {
212
- arg.dataType._dataType = dataType;
213
- }
214
- callback(err);
215
- });
216
- }
229
+ const methodName = lowerFirstLetter(reference.browseName.name!);
217
230
 
218
- const methodObj = {
219
- browseName: name,
220
- executableFlag: false,
221
- func: obj[name],
222
- nodeId: reference.nodeId
223
- };
224
- obj.$methods[name] = methodObj;
231
+ let inputArguments: ArgumentEx[] = [];
232
+ let outputArguments: ArgumentEx[] = [];
225
233
 
226
234
  // tslint:disable:no-shadowed-variable
227
235
  async.series(
228
236
  [
229
237
  (callback: ErrorCallback) => {
230
- session.getArgumentDefinition(reference.nodeId, (err: Error | null, args?: any) => {
238
+ session.getArgumentDefinition(reference.nodeId, (err, argumentDefinition) => {
231
239
  // istanbul ignore next
232
240
  if (err) {
233
- setImmediate(() => {
234
- callback(err);
235
- });
236
- return;
241
+ errorLog("getArgumentDefinition failed ", err);
242
+ return callback(err);
237
243
  }
238
- const inputArguments = args.inputArguments;
239
- const outputArguments = args.outputArguments;
240
-
241
- obj[name].inputArguments = inputArguments;
242
- obj[name].outputArguments = outputArguments;
244
+ // istanbul ignore next
245
+ if (!argumentDefinition) {
246
+ return callback(new Error("Internal Error"));
247
+ }
248
+ inputArguments = (argumentDefinition.inputArguments as ArgumentEx[]) || [];
249
+ outputArguments = (argumentDefinition.outputArguments as ArgumentEx[]) || [];
243
250
 
251
+ const _extractDataType = extractDataType.bind(null, session);
244
252
  async.series(
245
253
  [
246
- (callback: ErrorCallback) => {
247
- async.eachSeries(obj[name].inputArguments, extractDataType, (err) => callback(err!));
248
- },
249
- (callback: ErrorCallback) => {
250
- async.eachSeries(obj[name].outputArguments, extractDataType, (err) => callback(err!));
251
- }
254
+ (innerCallback) => async.eachSeries(inputArguments, _extractDataType, innerCallback),
255
+ (innerCallback) => async.eachSeries(outputArguments, _extractDataType, innerCallback)
252
256
  ],
253
257
  (err) => callback(err!)
254
258
  );
@@ -256,12 +260,33 @@ function add_method(proxyManager: UAProxyManager, obj: any, reference: Reference
256
260
  },
257
261
 
258
262
  (callback: ErrorCallback) => {
263
+
264
+ const methodObj: MethodDescription = {
265
+ browseName: methodName,
266
+ executableFlag: false,
267
+ func: makeFunction(obj, methodName),
268
+ nodeId: reference.nodeId,
269
+ inputArguments,
270
+ outputArguments
271
+ };
272
+ obj.$methods[methodName] = methodObj;
273
+ obj[methodName] = methodObj.func;
274
+
275
+ obj[methodName].inputArguments = inputArguments;
276
+ obj[methodName].outputArguments = outputArguments;
277
+
278
+ doDebug && debugLog("installing method name", methodName);
259
279
  proxyManager._monitor_execution_flag(methodObj, () => {
260
280
  callback();
261
281
  });
262
282
  }
263
283
  ],
264
- (err) => outerCallback(err!)
284
+ (err) => {
285
+ if (err) {
286
+ errorLog("Error =>",err);
287
+ }
288
+ outerCallback(err!)
289
+ }
265
290
  );
266
291
  }
267
292
 
@@ -331,7 +356,6 @@ function add_typeDefinition(
331
356
  const session = proxyManager.session;
332
357
  references = references || [];
333
358
  if (references.length !== 1) {
334
- // xx console.log(" cannot find type definition", references.length);
335
359
  setImmediate(callback);
336
360
  return;
337
361
  }
@@ -388,6 +412,10 @@ export class ObjectExplorer {
388
412
  });
389
413
  }
390
414
  }
415
+ function t(references: ReferenceDescription[] | null) {
416
+ if (!references) return "";
417
+ return references.map((r: ReferenceDescription) => r.browseName.name + " " + r.nodeId.toString());
418
+ }
391
419
 
392
420
  export function readUAStructure(proxyManager: UAProxyManager, obj: { nodeId: NodeId }, callback: ErrorCallback): void {
393
421
  const session = proxyManager.session;
@@ -466,10 +494,6 @@ export function readUAStructure(proxyManager: UAProxyManager, obj: { nodeId: Nod
466
494
  }
467
495
  ];
468
496
  session.browse(nodesToBrowse, (err: Error | null, browseResults?: BrowseResult[]) => {
469
- function t(references: ReferenceDescription[]) {
470
- return references.map((r: ReferenceDescription) => r.browseName.name + " " + r.nodeId.toString());
471
- }
472
-
473
497
  browseResults = browseResults || [];
474
498
 
475
499
  // istanbul ignore next
@@ -477,16 +501,17 @@ export function readUAStructure(proxyManager: UAProxyManager, obj: { nodeId: Nod
477
501
  return callback(err);
478
502
  }
479
503
 
480
- // xx console.log("Components", t(results[0].references));
481
- // xx console.log("Properties", t(results[1].references));
482
- // xx console.log("Methods", t(results[2].references));
504
+ if (doDebug) {
505
+ debugLog("Components", t(browseResults[0].references));
506
+ debugLog("Properties", t(browseResults[1].references));
507
+ debugLog("Methods", t(browseResults[2].references));
508
+ }
483
509
  async.series(
484
510
  [
485
511
  (callback: ErrorCallback) => {
486
512
  async.mapSeries(
487
513
  browseResults![0].references!,
488
- (reference: ReferenceDescription, callback: ErrorCallback) =>
489
- add_component(proxyManager, obj, reference, callback),
514
+ (reference, innerCallback) => add_component(proxyManager, obj, reference, innerCallback),
490
515
  (err) => callback(err!)
491
516
  );
492
517
  },
@@ -494,8 +519,7 @@ export function readUAStructure(proxyManager: UAProxyManager, obj: { nodeId: Nod
494
519
  (callback: ErrorCallback) => {
495
520
  async.mapSeries(
496
521
  browseResults![1].references!,
497
- (reference: ReferenceDescription, callback: ErrorCallback) =>
498
- add_property(proxyManager, obj, reference, callback),
522
+ (reference, innerCallback) => add_property(proxyManager, obj, reference, innerCallback),
499
523
  (err) => callback(err!)
500
524
  );
501
525
  },
@@ -504,8 +528,7 @@ export function readUAStructure(proxyManager: UAProxyManager, obj: { nodeId: Nod
504
528
  (callback: ErrorCallback) => {
505
529
  async.mapSeries(
506
530
  browseResults![2].references!,
507
- (reference: ReferenceDescription, callback: ErrorCallback) =>
508
- add_method(proxyManager, obj, reference, callback),
531
+ (reference, innerCallback) => add_method(proxyManager, obj, reference, innerCallback),
509
532
  (err) => callback(err!)
510
533
  );
511
534
  },
@@ -6,11 +6,24 @@ import { assert } from "node-opcua-assert";
6
6
  import { AttributeIds, NodeClass } from "node-opcua-data-model";
7
7
  import { DataValue } from "node-opcua-data-value";
8
8
  import { NodeId } from "node-opcua-nodeid";
9
+ import { Argument } from "node-opcua-service-call";
9
10
  import { WriteValueOptions } from "node-opcua-service-write";
10
11
  import { StatusCode, StatusCodes } from "node-opcua-status-code";
11
- import { Variant } from "node-opcua-variant";
12
+ import { DataType, Variant } from "node-opcua-variant";
12
13
  import { UAProxyManager } from "./proxy_manager";
13
14
 
15
+ export interface ArgumentEx extends Argument {
16
+ _basicDataType: DataType;
17
+ }
18
+ export interface MethodDescription {
19
+ browseName: string;
20
+ executableFlag: boolean;
21
+ func: (input: Record<string, unknown>, callback: (err: Error | null, output?: Record<string, unknown>) => void) => void;
22
+ nodeId: NodeId; // the method NodeId
23
+ inputArguments: ArgumentEx[];
24
+ outputArguments: ArgumentEx[];
25
+ }
26
+
14
27
  export class ProxyBaseNode extends EventEmitter {
15
28
  /**
16
29
  * the object nodeId
@@ -35,7 +48,7 @@ export class ProxyBaseNode extends EventEmitter {
35
48
  * @property $methods
36
49
  * @type {Array<ProxyBaseNode>}
37
50
  */
38
- public $methods: any[];
51
+ public $methods: MethodDescription[];
39
52
  /**
40
53
  * the Folder's elements
41
54
  * @property $organizes