node-opcua-alias-name-server 2.182.2 → 2.183.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.
@@ -17,6 +17,7 @@ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
17
17
  const node_opcua_status_code_1 = require("node-opcua-status-code");
18
18
  const node_opcua_types_1 = require("node-opcua-types");
19
19
  const node_opcua_variant_1 = require("node-opcua-variant");
20
+ const well_known_js_1 = require("./well_known.js");
20
21
  /** The default: keep discovery order (a stable no-op comparator). */
21
22
  const insertionOrderComparator = () => 0;
22
23
  exports.insertionOrderComparator = insertionOrderComparator;
@@ -35,6 +36,30 @@ function readReferenceTypeFilter(inputArguments) {
35
36
  const value = inputArguments?.[1]?.value;
36
37
  return value instanceof node_opcua_nodeid_1.NodeId ? value : undefined;
37
38
  }
39
+ /**
40
+ * `ReferenceTypeFilter` (clause 6.3.2 Table 3) must be `AliasFor` or a subtype
41
+ * of it; `null`/absent means "no filtering" and is always accepted.
42
+ *
43
+ * Mirrors the check `coerceReferenceType` in `add_alias.ts` applies when an
44
+ * AliasName is created, since both enforce the same clause 8.2 rule.
45
+ */
46
+ function isValidReferenceTypeFilter(category, filter) {
47
+ if (!filter || filter.isEmpty()) {
48
+ return true;
49
+ }
50
+ const addressSpace = category.addressSpace;
51
+ const aliasFor = addressSpace.findReferenceType(well_known_js_1.ALIAS_FOR);
52
+ const candidate = addressSpace.findReferenceType(filter);
53
+ if (!candidate) {
54
+ // an unknown ReferenceType can never be AliasFor or a subtype of it
55
+ return false;
56
+ }
57
+ if (!aliasFor) {
58
+ // c8 ignore next: AliasFor is a standard ReferenceType, always present
59
+ return true;
60
+ }
61
+ return (0, node_opcua_nodeid_1.sameNodeId)(candidate.nodeId, aliasFor.nodeId) || candidate.isSubtypeOf(aliasFor);
62
+ }
38
63
  /**
39
64
  * Merge entries that share an AliasName.
40
65
  *
@@ -145,9 +170,21 @@ function makeFindAliasHandler(options, verbose) {
145
170
  if (pattern === null) {
146
171
  return { statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument };
147
172
  }
173
+ const referenceTypeFilter = readReferenceTypeFilter(inputArguments);
174
+ // clause 6.3.2 Table 3 / clause 8.2: ReferenceTypeFilter must be
175
+ // AliasFor or a subtype of it (null means "all"). A per-argument
176
+ // BadInvalidArgument is reported alongside the operation-level one,
177
+ // mirroring verifyArguments_ArgumentList in node-opcua-address-space
178
+ // (CTT AliasName Base Err-004).
179
+ if (!isValidReferenceTypeFilter(category, referenceTypeFilter)) {
180
+ return {
181
+ statusCode: node_opcua_status_code_1.StatusCodes.BadInvalidArgument,
182
+ inputArgumentResults: [node_opcua_status_code_1.StatusCodes.Good, node_opcua_status_code_1.StatusCodes.BadInvalidArgument]
183
+ };
184
+ }
148
185
  const query = {
149
186
  pattern,
150
- referenceTypeFilter: readReferenceTypeFilter(inputArguments),
187
+ referenceTypeFilter,
151
188
  categoryNodeId: category.nodeId,
152
189
  maxResults: options.maxResults,
153
190
  // Handed the same memoised closure the filter below uses, so the
@@ -1 +1 @@
1
- {"version":3,"file":"bind_find_alias.js","sourceRoot":"","sources":["../source/bind_find_alias.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bind_find_alias.js","sourceRoot":"","sources":["../source/bind_find_alias.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-opcua-alias-name-server",
3
- "version": "2.182.2",
3
+ "version": "2.183.1",
4
4
  "description": "pure nodejs OPCUA SDK - server-side alias names (OPC 10000-17)",
5
5
  "scripts": {
6
6
  "build": "tsc -b",
@@ -16,21 +16,24 @@
16
16
  "node": ">=18.x",
17
17
  "npm": ">=10.x"
18
18
  },
19
+ "engines": {
20
+ "node": ">=22.13.0"
21
+ },
19
22
  "dependencies": {
20
- "node-opcua-address-space-base": "2.182.0",
21
- "node-opcua-alias-name-common": "2.182.0",
22
- "node-opcua-constants": "2.181.0",
23
- "node-opcua-data-model": "2.182.0",
24
- "node-opcua-nodeid": "2.182.0",
25
- "node-opcua-service-call": "2.182.0",
26
- "node-opcua-status-code": "2.181.0",
27
- "node-opcua-types": "2.182.0",
28
- "node-opcua-variant": "2.182.0"
23
+ "node-opcua-address-space-base": "2.183.1",
24
+ "node-opcua-alias-name-common": "2.183.0",
25
+ "node-opcua-constants": "2.183.0",
26
+ "node-opcua-data-model": "2.183.0",
27
+ "node-opcua-nodeid": "2.183.0",
28
+ "node-opcua-service-call": "2.183.0",
29
+ "node-opcua-status-code": "2.183.0",
30
+ "node-opcua-types": "2.183.0",
31
+ "node-opcua-variant": "2.183.0"
29
32
  },
30
33
  "devDependencies": {
31
- "node-opcua-address-space": "2.182.2",
32
- "node-opcua-leak-detector": "2.181.0",
33
- "node-opcua-nodesets": "2.182.0"
34
+ "node-opcua-address-space": "2.183.1",
35
+ "node-opcua-leak-detector": "2.183.0",
36
+ "node-opcua-nodesets": "2.183.0"
34
37
  },
35
38
  "author": "Etienne Rossignon",
36
39
  "license": "MIT",
@@ -51,5 +54,5 @@
51
54
  "dist",
52
55
  "source"
53
56
  ],
54
- "gitHead": "cb72d06e8bcb611479f44f9f45f67bbee93bc32e"
57
+ "gitHead": "2326127b73f78cae1f0957788f16850a3be70701"
55
58
  }
@@ -11,11 +11,12 @@
11
11
 
12
12
  import type { ISessionContext, UAMethod, UAObject } from "node-opcua-address-space-base";
13
13
  import { type AliasEntry, type AliasQuery, type IAliasStore, InvalidLikePatternError } from "node-opcua-alias-name-common";
14
- import { type NodeId, NodeId as NodeIdClass } from "node-opcua-nodeid";
14
+ import { type NodeId, NodeId as NodeIdClass, sameNodeId } from "node-opcua-nodeid";
15
15
  import type { CallMethodResultOptions } from "node-opcua-service-call";
16
16
  import { StatusCodes } from "node-opcua-status-code";
17
17
  import { AliasNameDataType, AliasNameVerboseDataType } from "node-opcua-types";
18
18
  import { DataType, type Variant, VariantArrayType } from "node-opcua-variant";
19
+ import { ALIAS_FOR } from "./well_known.js";
19
20
 
20
21
  /**
21
22
  * Orders results before they are returned.
@@ -74,6 +75,31 @@ function readReferenceTypeFilter(inputArguments: Variant[]): NodeId | undefined
74
75
  return value instanceof NodeIdClass ? value : undefined;
75
76
  }
76
77
 
78
+ /**
79
+ * `ReferenceTypeFilter` (clause 6.3.2 Table 3) must be `AliasFor` or a subtype
80
+ * of it; `null`/absent means "no filtering" and is always accepted.
81
+ *
82
+ * Mirrors the check `coerceReferenceType` in `add_alias.ts` applies when an
83
+ * AliasName is created, since both enforce the same clause 8.2 rule.
84
+ */
85
+ function isValidReferenceTypeFilter(category: UAObject, filter: NodeId | undefined): boolean {
86
+ if (!filter || filter.isEmpty()) {
87
+ return true;
88
+ }
89
+ const addressSpace = category.addressSpace;
90
+ const aliasFor = addressSpace.findReferenceType(ALIAS_FOR);
91
+ const candidate = addressSpace.findReferenceType(filter);
92
+ if (!candidate) {
93
+ // an unknown ReferenceType can never be AliasFor or a subtype of it
94
+ return false;
95
+ }
96
+ if (!aliasFor) {
97
+ // c8 ignore next: AliasFor is a standard ReferenceType, always present
98
+ return true;
99
+ }
100
+ return sameNodeId(candidate.nodeId, aliasFor.nodeId) || candidate.isSubtypeOf(aliasFor);
101
+ }
102
+
77
103
  /**
78
104
  * Merge entries that share an AliasName.
79
105
  *
@@ -197,9 +223,22 @@ export function makeFindAliasHandler(options: FindAliasBindingOptions, verbose:
197
223
  return { statusCode: StatusCodes.BadInvalidArgument };
198
224
  }
199
225
 
226
+ const referenceTypeFilter = readReferenceTypeFilter(inputArguments);
227
+ // clause 6.3.2 Table 3 / clause 8.2: ReferenceTypeFilter must be
228
+ // AliasFor or a subtype of it (null means "all"). A per-argument
229
+ // BadInvalidArgument is reported alongside the operation-level one,
230
+ // mirroring verifyArguments_ArgumentList in node-opcua-address-space
231
+ // (CTT AliasName Base Err-004).
232
+ if (!isValidReferenceTypeFilter(category, referenceTypeFilter)) {
233
+ return {
234
+ statusCode: StatusCodes.BadInvalidArgument,
235
+ inputArgumentResults: [StatusCodes.Good, StatusCodes.BadInvalidArgument]
236
+ };
237
+ }
238
+
200
239
  const query: AliasQuery = {
201
240
  pattern,
202
- referenceTypeFilter: readReferenceTypeFilter(inputArguments),
241
+ referenceTypeFilter,
203
242
  categoryNodeId: category.nodeId,
204
243
  maxResults: options.maxResults,
205
244
  // Handed the same memoised closure the filter below uses, so the