node-opcua-address-space-for-conformance-testing 2.167.0 → 2.169.0

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.
Files changed (61) hide show
  1. package/dist/address_space_for_conformance_testing.d.ts +6 -2
  2. package/dist/address_space_for_conformance_testing.js +27 -1306
  3. package/dist/address_space_for_conformance_testing.js.map +1 -1
  4. package/dist/conformance_testing/access_right_variables.d.ts +5 -0
  5. package/dist/conformance_testing/access_right_variables.js +45 -0
  6. package/dist/conformance_testing/access_right_variables.js.map +1 -0
  7. package/dist/conformance_testing/analog_data_items.d.ts +5 -0
  8. package/dist/conformance_testing/analog_data_items.js +117 -0
  9. package/dist/conformance_testing/analog_data_items.js.map +1 -0
  10. package/dist/conformance_testing/discrete_variables.d.ts +4 -0
  11. package/dist/conformance_testing/discrete_variables.js +111 -0
  12. package/dist/conformance_testing/discrete_variables.js.map +1 -0
  13. package/dist/conformance_testing/enumeration_variable.d.ts +5 -0
  14. package/dist/conformance_testing/enumeration_variable.js +24 -0
  15. package/dist/conformance_testing/enumeration_variable.js.map +1 -0
  16. package/dist/conformance_testing/helpers.d.ts +13 -0
  17. package/dist/conformance_testing/helpers.js +204 -0
  18. package/dist/conformance_testing/helpers.js.map +1 -0
  19. package/dist/conformance_testing/mass_variables.d.ts +5 -0
  20. package/dist/conformance_testing/mass_variables.js +31 -0
  21. package/dist/conformance_testing/mass_variables.js.map +1 -0
  22. package/dist/conformance_testing/node_with_references.d.ts +5 -0
  23. package/dist/conformance_testing/node_with_references.js +119 -0
  24. package/dist/conformance_testing/node_with_references.js.map +1 -0
  25. package/dist/conformance_testing/object_with_methods.d.ts +5 -0
  26. package/dist/conformance_testing/object_with_methods.js +85 -0
  27. package/dist/conformance_testing/object_with_methods.js.map +1 -0
  28. package/dist/conformance_testing/path_and_large_arrays.d.ts +6 -0
  29. package/dist/conformance_testing/path_and_large_arrays.js +33 -0
  30. package/dist/conformance_testing/path_and_large_arrays.js.map +1 -0
  31. package/dist/conformance_testing/sample_view.d.ts +5 -0
  32. package/dist/conformance_testing/sample_view.js +25 -0
  33. package/dist/conformance_testing/sample_view.js.map +1 -0
  34. package/dist/conformance_testing/simulation_variables.d.ts +5 -0
  35. package/dist/conformance_testing/simulation_variables.js +113 -0
  36. package/dist/conformance_testing/simulation_variables.js.map +1 -0
  37. package/dist/conformance_testing/static_variables.d.ts +2 -0
  38. package/dist/conformance_testing/static_variables.js +70 -0
  39. package/dist/conformance_testing/static_variables.js.map +1 -0
  40. package/dist/conformance_testing/trigger_nodes.d.ts +5 -0
  41. package/dist/conformance_testing/trigger_nodes.js +41 -0
  42. package/dist/conformance_testing/trigger_nodes.js.map +1 -0
  43. package/dist/conformance_testing/type_defaults.d.ts +54 -0
  44. package/dist/conformance_testing/type_defaults.js +96 -0
  45. package/dist/conformance_testing/type_defaults.js.map +1 -0
  46. package/package.json +12 -12
  47. package/src/address_space_for_conformance_testing.ts +34 -1494
  48. package/src/conformance_testing/access_right_variables.ts +55 -0
  49. package/src/conformance_testing/analog_data_items.ts +136 -0
  50. package/src/conformance_testing/discrete_variables.ts +131 -0
  51. package/src/conformance_testing/enumeration_variable.ts +27 -0
  52. package/src/conformance_testing/helpers.ts +226 -0
  53. package/src/conformance_testing/mass_variables.ts +42 -0
  54. package/src/conformance_testing/node_with_references.ts +130 -0
  55. package/src/conformance_testing/object_with_methods.ts +93 -0
  56. package/src/conformance_testing/path_and_large_arrays.ts +35 -0
  57. package/src/conformance_testing/sample_view.ts +28 -0
  58. package/src/conformance_testing/simulation_variables.ts +129 -0
  59. package/src/conformance_testing/static_variables.ts +71 -0
  60. package/src/conformance_testing/trigger_nodes.ts +49 -0
  61. package/src/conformance_testing/type_defaults.ts +60 -0
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getValidatorFuncForType = getValidatorFuncForType;
37
+ exports.getRandomFuncForType = getRandomFuncForType;
38
+ exports.findDataType = findDataType;
39
+ exports.makeVariant = makeVariant;
40
+ exports.addVariable = addVariable;
41
+ exports.addScalarVariable = addScalarVariable;
42
+ exports.addArrayVariable = addArrayVariable;
43
+ exports.addMultiDimensionalArrayVariable = addMultiDimensionalArrayVariable;
44
+ const node_opcua_assert_1 = require("node-opcua-assert");
45
+ const ec = __importStar(require("node-opcua-basic-types"));
46
+ const node_opcua_basic_types_1 = require("node-opcua-basic-types");
47
+ const node_opcua_data_model_1 = require("node-opcua-data-model");
48
+ const node_opcua_debug_1 = require("node-opcua-debug");
49
+ const node_opcua_factory_1 = require("node-opcua-factory");
50
+ const node_opcua_variant_1 = require("node-opcua-variant");
51
+ const debugLog = (0, node_opcua_debug_1.make_debugLog)(__filename);
52
+ const warningLog = (0, node_opcua_debug_1.make_warningLog)(__filename);
53
+ // ─── Validators & Random Generators ─────────────────────────────────────
54
+ function defaultValidator( /*value*/) {
55
+ return true;
56
+ }
57
+ function getValidatorFuncForType(dataType) {
58
+ const f = ec[`isValid${dataType}`];
59
+ return f || defaultValidator;
60
+ }
61
+ function getRandomFuncForType(dataType) {
62
+ const dataTypeName = node_opcua_variant_1.DataType[dataType];
63
+ const f = ec[`random${dataTypeName}`];
64
+ if (f) {
65
+ return f;
66
+ }
67
+ switch (dataTypeName) {
68
+ case "Variant":
69
+ return () => {
70
+ return new node_opcua_variant_1.Variant();
71
+ };
72
+ case "QualifiedName":
73
+ return () => {
74
+ return new node_opcua_data_model_1.QualifiedName({ name: (0, node_opcua_basic_types_1.randomString)() });
75
+ };
76
+ case "LocalizedText":
77
+ return () => {
78
+ return new node_opcua_data_model_1.LocalizedText({ text: (0, node_opcua_basic_types_1.randomString)() });
79
+ };
80
+ case "XmlElement":
81
+ return () => {
82
+ const element = (0, node_opcua_basic_types_1.randomString)();
83
+ const content = (0, node_opcua_basic_types_1.randomString)();
84
+ return `<${element}>${content}</${element}>`;
85
+ };
86
+ default:
87
+ // c8 ignore next
88
+ throw new Error(`Cannot find random${dataTypeName}() func anywhere`);
89
+ }
90
+ }
91
+ // ─── DataType Lookup ────────────────────────────────────────────────────
92
+ function findDataType(dataTypeName) {
93
+ const builtInDataTypeName = (0, node_opcua_factory_1.findBuiltInType)(dataTypeName);
94
+ const dataType = node_opcua_variant_1.DataType[builtInDataTypeName.name];
95
+ // c8 ignore next
96
+ if (!dataType) {
97
+ throw new Error(` dataType ${dataTypeName} must exists`);
98
+ }
99
+ return dataType;
100
+ }
101
+ // ─── Validation ─────────────────────────────────────────────────────────
102
+ function validate_value_or_array(isArray, variantValue, validatorFunc) {
103
+ (0, node_opcua_assert_1.assert)(typeof validatorFunc === "function");
104
+ if (isArray) {
105
+ const arr = variantValue;
106
+ const n = Math.min(10, arr.length);
107
+ for (let i = 0; i < n; i++) {
108
+ // c8 ignore next
109
+ if (!validatorFunc(arr[i])) {
110
+ throw new Error(`default value must be valid for dataType ${variantValue} at index ${i} got ${arr[i]}`);
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ // c8 ignore next
116
+ if (!validatorFunc(variantValue)) {
117
+ throw new Error(`default value must be valid for dataType ${variantValue}`);
118
+ }
119
+ }
120
+ }
121
+ // ─── Variant Construction ───────────────────────────────────────────────
122
+ function makeVariant(dataTypeName, arrayType, dimensions, current_value) {
123
+ const dataType = findDataType(dataTypeName);
124
+ const validatorFunc = getValidatorFuncForType(dataType);
125
+ const isArray = arrayType === node_opcua_variant_1.VariantArrayType.Array || arrayType === node_opcua_variant_1.VariantArrayType.Matrix;
126
+ validate_value_or_array(isArray, current_value, validatorFunc);
127
+ return new node_opcua_variant_1.Variant({
128
+ dataType,
129
+ arrayType,
130
+ dimensions,
131
+ value: current_value
132
+ });
133
+ }
134
+ // ─── Generic Variable Helpers ───────────────────────────────────────────
135
+ function addVariable(namespace, parent, varName, dataTypeName, current_value, valueRank, arrayDimensions, extra_name) {
136
+ (0, node_opcua_assert_1.assert)(typeof extra_name === "string");
137
+ const arrayType = valueRank <= 0 ? node_opcua_variant_1.VariantArrayType.Scalar : valueRank === 1 ? node_opcua_variant_1.VariantArrayType.Array : node_opcua_variant_1.VariantArrayType.Matrix;
138
+ const variant = makeVariant(dataTypeName, arrayType, arrayDimensions, current_value);
139
+ const name = varName + extra_name;
140
+ const nodeId = `${parent.nodeId.toString()}_${varName}${extra_name}`;
141
+ const placeholder = { variant };
142
+ const variable = namespace.addVariable({
143
+ browseName: name,
144
+ componentOf: parent,
145
+ dataType: varName,
146
+ description: { locale: "en", text: name },
147
+ nodeId,
148
+ valueRank,
149
+ arrayDimensions,
150
+ accessLevel: (0, node_opcua_data_model_1.makeAccessLevelFlag)("CurrentRead | CurrentWrite"),
151
+ userAccessLevel: (0, node_opcua_data_model_1.makeAccessLevelFlag)("CurrentRead | CurrentWrite"),
152
+ value: variant
153
+ });
154
+ variable._backdoor_placeholder = placeholder;
155
+ return variable;
156
+ }
157
+ function addScalarVariable(namespace, parent, name, realType, default_value, extra_name) {
158
+ (0, node_opcua_assert_1.assert)(typeof extra_name === "string");
159
+ const initialValue = typeof default_value === "function" ? default_value() : default_value;
160
+ const variable = addVariable(namespace, parent, name, realType, initialValue, -1, null, extra_name);
161
+ (0, node_opcua_assert_1.assert)(variable.valueRank === -1);
162
+ (0, node_opcua_assert_1.assert)(variable.accessLevel === node_opcua_data_model_1.AccessLevelFlag.CurrentRead + node_opcua_data_model_1.AccessLevelFlag.CurrentWrite);
163
+ (0, node_opcua_assert_1.assert)(variable.userAccessLevel === node_opcua_data_model_1.AccessLevelFlag.CurrentRead + node_opcua_data_model_1.AccessLevelFlag.CurrentWrite);
164
+ (0, node_opcua_assert_1.assert)(variable.historizing === false);
165
+ return variable;
166
+ }
167
+ function addArrayVariable(namespace, parent, dataTypeName, default_value, realTypeName, arrayLength, extra_name) {
168
+ (0, node_opcua_assert_1.assert)(typeof dataTypeName === "string");
169
+ (0, node_opcua_assert_1.assert)(typeof realTypeName === "string");
170
+ // c8 ignore next
171
+ if (!node_opcua_variant_1.DataType[realTypeName]) {
172
+ warningLog("dataTypeName", dataTypeName);
173
+ warningLog("realTypeName", realTypeName);
174
+ }
175
+ (0, node_opcua_assert_1.assert)(node_opcua_variant_1.DataType[realTypeName], " expecting a valid real type");
176
+ arrayLength = arrayLength || 10;
177
+ const local_defaultValue = typeof default_value === "function" ? default_value() : default_value;
178
+ const current_value = (0, node_opcua_variant_1.buildVariantArray)(node_opcua_variant_1.DataType[realTypeName], arrayLength, local_defaultValue);
179
+ const variable = addVariable(namespace, parent, dataTypeName, realTypeName, current_value, 1, null, extra_name);
180
+ (0, node_opcua_assert_1.assert)(variable.valueRank === 1);
181
+ (0, node_opcua_assert_1.assert)(variable.accessLevel === node_opcua_data_model_1.AccessLevelFlag.CurrentRead + node_opcua_data_model_1.AccessLevelFlag.CurrentWrite);
182
+ (0, node_opcua_assert_1.assert)(variable.userAccessLevel === node_opcua_data_model_1.AccessLevelFlag.CurrentRead + node_opcua_data_model_1.AccessLevelFlag.CurrentWrite);
183
+ (0, node_opcua_assert_1.assert)(variable.historizing === false);
184
+ }
185
+ function addMultiDimensionalArrayVariable(namespace, parent, dataTypeName, default_value, realTypeName, nbRows, nbCols, extra_name) {
186
+ (0, node_opcua_assert_1.assert)(typeof dataTypeName === "string");
187
+ (0, node_opcua_assert_1.assert)(typeof realTypeName === "string");
188
+ // c8 ignore next
189
+ if (!node_opcua_variant_1.DataType[realTypeName]) {
190
+ debugLog("dataTypeName", dataTypeName);
191
+ debugLog("realTypeName", realTypeName);
192
+ }
193
+ (0, node_opcua_assert_1.assert)(node_opcua_variant_1.DataType[realTypeName], " expecting a valid real type");
194
+ nbRows = nbRows || 6;
195
+ nbCols = nbCols || 2;
196
+ const local_defaultValue = typeof default_value === "function" ? default_value() : default_value;
197
+ const current_value = (0, node_opcua_variant_1.buildVariantArray)(node_opcua_variant_1.DataType[realTypeName], nbRows * nbCols, local_defaultValue);
198
+ const variable = addVariable(namespace, parent, dataTypeName, realTypeName, current_value, 2, [nbRows, nbCols], extra_name);
199
+ (0, node_opcua_assert_1.assert)(variable.valueRank === 2);
200
+ (0, node_opcua_assert_1.assert)(variable.accessLevel === node_opcua_data_model_1.AccessLevelFlag.CurrentRead + node_opcua_data_model_1.AccessLevelFlag.CurrentWrite);
201
+ (0, node_opcua_assert_1.assert)(variable.userAccessLevel === node_opcua_data_model_1.AccessLevelFlag.CurrentRead + node_opcua_data_model_1.AccessLevelFlag.CurrentWrite);
202
+ (0, node_opcua_assert_1.assert)(variable.historizing === false);
203
+ }
204
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/conformance_testing/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Mass variables: 100 items per supported data-type.
3
+ */
4
+ import type { Namespace, UAObject } from "node-opcua-address-space";
5
+ export declare function addMassVariables(namespace: Namespace, scalarFolder: UAObject): void;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMassVariables = addMassVariables;
4
+ const helpers_1 = require("./helpers");
5
+ const type_defaults_1 = require("./type_defaults");
6
+ function addMassVariablesOfType(namespace, parent, dataTypeName, default_value, realType) {
7
+ const nodeName = `Scalar_Mass_${dataTypeName}`;
8
+ const scalarMass_Type = namespace.addObject({
9
+ browseName: nodeName,
10
+ description: "This folder will contain 100 items per supported data-type.",
11
+ nodeId: `s=${nodeName}`,
12
+ organizedBy: parent
13
+ });
14
+ for (let i = 0; i <= 99; i++) {
15
+ const extra_name = `_${i.toString().padStart(2, "0")}`;
16
+ const local_defaultValue = typeof default_value === "function" ? default_value() : default_value;
17
+ (0, helpers_1.addVariable)(namespace, scalarMass_Type, dataTypeName, realType, local_defaultValue, -1, null, extra_name);
18
+ }
19
+ }
20
+ function addMassVariables(namespace, scalarFolder) {
21
+ const scalarMass = namespace.addFolder(scalarFolder, {
22
+ browseName: "Scalar_Mass",
23
+ description: "This folder will contain 100 items per supported data-type.",
24
+ nodeId: "s=Scalar_Mass"
25
+ });
26
+ for (const e of type_defaults_1.typeAndDefaultValue) {
27
+ const realType = e.realType || e.type;
28
+ addMassVariablesOfType(namespace, scalarMass, e.type, e.defaultValue, realType);
29
+ }
30
+ }
31
+ //# sourceMappingURL=mass_variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mass_variables.js","sourceRoot":"","sources":["../../src/conformance_testing/mass_variables.ts"],"names":[],"mappings":";;AA8BA,4CAWC;AApCD,uCAAwC;AACxC,mDAAsD;AAEtD,SAAS,sBAAsB,CAC3B,SAAoB,EACpB,MAAgB,EAChB,YAAoB,EACpB,aAAsB,EACtB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,eAAe,YAAY,EAAE,CAAC;IAE/C,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC;QACxC,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,6DAA6D;QAC1E,MAAM,EAAE,KAAK,QAAQ,EAAE;QACvB,WAAW,EAAE,MAAM;KACtB,CAAC,CAAC;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,OAAO,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACjG,IAAA,qBAAW,EAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9G,CAAC;AACL,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAoB,EAAE,YAAsB;IACzE,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE;QACjD,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,6DAA6D;QAC1E,MAAM,EAAE,eAAe;KAC1B,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,mCAAmB,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,sBAAsB,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACpF,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Reference test nodes for CTT conformance testing.
3
+ */
4
+ import type { Namespace, UAObject } from "node-opcua-address-space";
5
+ export declare function addNodeWithReferences(namespace: Namespace, simulation_folder: UAObject): void;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addNodeWithReferences = addNodeWithReferences;
4
+ function addNodeWithReferences(namespace, simulation_folder) {
5
+ const parent = simulation_folder;
6
+ const referenceFolder = namespace.addObject({
7
+ browseName: "References",
8
+ nodeId: "s=Demo.CTT.References",
9
+ organizedBy: parent,
10
+ typeDefinition: "FolderType"
11
+ });
12
+ // --- Has3ForwardReferences1: 3 variable components ---
13
+ {
14
+ const has3ForwardReferences1 = namespace.addObject({
15
+ browseName: "Has3ForwardReferences1",
16
+ nodeId: "s=Demo.CTT.References.Has3ForwardReferences1",
17
+ componentOf: referenceFolder,
18
+ typeDefinition: "FolderType"
19
+ });
20
+ namespace.addVariable({ browseName: "ReferenceNode1", componentOf: has3ForwardReferences1, dataType: "UInt32" });
21
+ namespace.addVariable({ browseName: "ReferenceNode2", componentOf: has3ForwardReferences1, dataType: "UInt32" });
22
+ namespace.addVariable({ browseName: "ReferenceNode3", componentOf: has3ForwardReferences1, dataType: "UInt32" });
23
+ }
24
+ // --- Has3ForwardReferences2: variable + 3 methods + property ---
25
+ {
26
+ const has3ForwardReferences2 = namespace.addObject({
27
+ browseName: "Has3ForwardReferences2",
28
+ nodeId: "s=Demo.CTT.References.Has3ForwardReferences2",
29
+ componentOf: referenceFolder,
30
+ typeDefinition: "FolderType"
31
+ });
32
+ namespace.addVariable({ browseName: "BaseDataVariable", componentOf: has3ForwardReferences2, dataType: "UInt32" });
33
+ namespace.addMethod(has3ForwardReferences2, { browseName: "Method1" });
34
+ namespace.addMethod(has3ForwardReferences2, { browseName: "Method2" });
35
+ namespace.addMethod(has3ForwardReferences2, { browseName: "Method3" });
36
+ namespace.addVariable({ browseName: "Property", propertyOf: has3ForwardReferences2, dataType: "UInt32" });
37
+ }
38
+ // --- Has3ForwardReferences3 + Has3InverseReferences ---
39
+ {
40
+ const has3ForwardReferences3 = namespace.addObject({
41
+ browseName: "Has3ForwardReferences3",
42
+ nodeId: "s=Demo.CTT.References.Has3ForwardReferences3",
43
+ componentOf: referenceFolder,
44
+ typeDefinition: "FolderType"
45
+ });
46
+ const referencedNode1 = namespace.addFolder(has3ForwardReferences3, "ReferencedNode1");
47
+ const referencedNode2 = namespace.addFolder(has3ForwardReferences3, "ReferencedNode2");
48
+ const referencedNode3 = namespace.addFolder(has3ForwardReferences3, "ReferencedNode3");
49
+ const has3InverseReferences = namespace.addObject({
50
+ browseName: "Has3InverseReferences",
51
+ nodeId: "s=Demo.CTT.References.Has3InverseReferences",
52
+ componentOf: referenceFolder,
53
+ typeDefinition: "FolderType"
54
+ });
55
+ referencedNode1.addReference({ referenceType: "Organizes", nodeId: has3InverseReferences });
56
+ referencedNode2.addReference({ referenceType: "Organizes", nodeId: has3InverseReferences });
57
+ referencedNode3.addReference({ referenceType: "Organizes", nodeId: has3InverseReferences });
58
+ }
59
+ // --- Has3ForwardReferences4: 3 properties ---
60
+ {
61
+ const has3ForwardReferences4 = namespace.addObject({
62
+ browseName: "Has3ForwardReferences4",
63
+ nodeId: "s=Demo.CTT.References.Has3ForwardReferences4",
64
+ componentOf: referenceFolder,
65
+ typeDefinition: "FolderType"
66
+ });
67
+ namespace.addVariable({ browseName: "ReferenceNode1", propertyOf: has3ForwardReferences4, dataType: "UInt32" });
68
+ namespace.addVariable({ browseName: "ReferenceNode2", propertyOf: has3ForwardReferences4, dataType: "UInt32" });
69
+ namespace.addVariable({ browseName: "ReferenceNode3", propertyOf: has3ForwardReferences4, dataType: "UInt32" });
70
+ }
71
+ // --- Has3ForwardReferences5: folder + property + method ---
72
+ {
73
+ const has3ForwardReferences5 = namespace.addObject({
74
+ browseName: "Has3ForwardReferences5",
75
+ nodeId: "s=Demo.CTT.References.Has3ForwardReferences5",
76
+ componentOf: referenceFolder,
77
+ typeDefinition: "FolderType"
78
+ });
79
+ namespace.addFolder(has3ForwardReferences5, { browseName: "ReferenceNode1" });
80
+ namespace.addVariable({ browseName: "ReferenceNode2", propertyOf: has3ForwardReferences5, dataType: "UInt32" });
81
+ namespace.addMethod(has3ForwardReferences5, { browseName: "ReferenceNode3" });
82
+ }
83
+ // --- HasInverseAndForwardReferences ---
84
+ {
85
+ const hasInverseAndForwardReferences = namespace.addObject({
86
+ browseName: "HasInverseAndForwardReferences",
87
+ nodeId: "s=Demo.CTT.References.HasInverseAndForwardReferences",
88
+ componentOf: referenceFolder,
89
+ typeDefinition: "FolderType"
90
+ });
91
+ const nodeId = namespace.addFolder(hasInverseAndForwardReferences, { browseName: "ReferenceNode1" });
92
+ hasInverseAndForwardReferences.addReference({ nodeId, referenceType: "AlarmGroupMember" });
93
+ }
94
+ // --- HasReferencesWithDifferentParentTypes ---
95
+ namespace.addObject({
96
+ browseName: "HasReferencesWithDifferentParentTypes",
97
+ nodeId: "s=Demo.CTT.References.HasReferencesWithDifferentParentTypes",
98
+ componentOf: referenceFolder,
99
+ typeDefinition: "FolderType"
100
+ });
101
+ // --- HasReferencesOfAReferenceTypeAndSubType ---
102
+ {
103
+ const hasReferencesOfAReferenceTypeAndSubType = namespace.addObject({
104
+ browseName: "HasReferencesOfAReferenceTypeAndSubType",
105
+ nodeId: "s=Demo.CTT.References.HasReferencesOfAReferenceTypeAndSubType",
106
+ typeDefinition: "FolderType",
107
+ componentOf: referenceFolder
108
+ });
109
+ namespace.addVariable({ browseName: "ReferenceNode1", propertyOf: hasReferencesOfAReferenceTypeAndSubType, dataType: "UInt32" });
110
+ namespace.addVariable({ browseName: "ReferenceNode2", propertyOf: hasReferencesOfAReferenceTypeAndSubType, dataType: "UInt32" });
111
+ namespace.addVariable({ browseName: "ReferenceNode3", propertyOf: hasReferencesOfAReferenceTypeAndSubType, dataType: "UInt32" });
112
+ namespace.addVariable({ browseName: "ReferenceNode4", propertyOf: hasReferencesOfAReferenceTypeAndSubType, dataType: "UInt32" });
113
+ for (let i = 0; i < 4; i++) {
114
+ const a = namespace.addObject({ browseName: `AlarmSuppressionGroup${i}`, componentOf: referenceFolder });
115
+ hasReferencesOfAReferenceTypeAndSubType.addReference({ nodeId: a, referenceType: "HasAlarmSuppressionGroup" });
116
+ }
117
+ }
118
+ }
119
+ //# sourceMappingURL=node_with_references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node_with_references.js","sourceRoot":"","sources":["../../src/conformance_testing/node_with_references.ts"],"names":[],"mappings":";;AAKA,sDA4HC;AA5HD,SAAgB,qBAAqB,CAAC,SAAoB,EAAE,iBAA2B;IACnF,MAAM,MAAM,GAAG,iBAAiB,CAAC;IACjC,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC;QACxC,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,uBAAuB;QAC/B,WAAW,EAAE,MAAM;QACnB,cAAc,EAAE,YAAY;KAC/B,CAAC,CAAC;IAEH,wDAAwD;IACxD,CAAC;QACG,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/C,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,8CAA8C;YACtD,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrH,CAAC;IAED,kEAAkE;IAClE,CAAC;QACG,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/C,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,8CAA8C;YACtD,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnH,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,yDAAyD;IACzD,CAAC;QACG,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/C,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,8CAA8C;YACtD,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;QACvF,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;QACvF,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;QAEvF,MAAM,qBAAqB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC9C,UAAU,EAAE,uBAAuB;YACnC,MAAM,EAAE,6CAA6C;YACrD,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QAEH,eAAe,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC5F,eAAe,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC5F,eAAe,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,+CAA+C;IAC/C,CAAC;QACG,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/C,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,8CAA8C;YACtD,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpH,CAAC;IAED,6DAA6D;IAC7D,CAAC;QACG,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC;YAC/C,UAAU,EAAE,wBAAwB;YACpC,MAAM,EAAE,8CAA8C;YACtD,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QACH,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC9E,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChH,SAAS,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,yCAAyC;IACzC,CAAC;QACG,MAAM,8BAA8B,GAAG,SAAS,CAAC,SAAS,CAAC;YACvD,UAAU,EAAE,gCAAgC;YAC5C,MAAM,EAAE,sDAAsD;YAC9D,WAAW,EAAE,eAAe;YAC5B,cAAc,EAAE,YAAY;SAC/B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,8BAA8B,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACrG,8BAA8B,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,gDAAgD;IAChD,SAAS,CAAC,SAAS,CAAC;QAChB,UAAU,EAAE,uCAAuC;QACnD,MAAM,EAAE,6DAA6D;QACrE,WAAW,EAAE,eAAe;QAC5B,cAAc,EAAE,YAAY;KAC/B,CAAC,CAAC;IAEH,kDAAkD;IAClD,CAAC;QACG,MAAM,uCAAuC,GAAG,SAAS,CAAC,SAAS,CAAC;YAChE,UAAU,EAAE,yCAAyC;YACrD,MAAM,EAAE,+DAA+D;YACvE,cAAc,EAAE,YAAY;YAC5B,WAAW,EAAE,eAAe;SAC/B,CAAC,CAAC;QACH,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,uCAAuC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjI,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,uCAAuC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjI,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,uCAAuC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjI,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,uCAAuC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,wBAAwB,CAAC,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;YACzG,uCAAuC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnH,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Object with methods for conformance testing (MethodNoArgs, MethodIO, MethodI, MethodO).
3
+ */
4
+ import type { Namespace, UAObject } from "node-opcua-address-space";
5
+ export declare function addObjectWithMethod(namespace: Namespace, parentFolder: UAObject): void;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addObjectWithMethod = addObjectWithMethod;
4
+ const node_opcua_assert_1 = require("node-opcua-assert");
5
+ const node_opcua_nodeid_1 = require("node-opcua-nodeid");
6
+ const node_opcua_status_code_1 = require("node-opcua-status-code");
7
+ const node_opcua_variant_1 = require("node-opcua-variant");
8
+ function addObjectWithMethod(namespace, parentFolder) {
9
+ const myObject = namespace.addObject({
10
+ nodeId: "s=ObjectWithMethods",
11
+ organizedBy: parentFolder,
12
+ browseName: "ObjectWithMethods"
13
+ });
14
+ // MethodNoArgs
15
+ const methodNoArgs = namespace.addMethod(myObject, {
16
+ browseName: "MethodNoArgs",
17
+ nodeId: "s=MethodNoArgs"
18
+ });
19
+ (0, node_opcua_assert_1.assert)((0, node_opcua_nodeid_1.makeNodeId)("MethodNoArgs", namespace.index)
20
+ .toString()
21
+ .match(/s=MethodNoArgs/));
22
+ (0, node_opcua_assert_1.assert)(methodNoArgs.nodeId.toString().match(/s=MethodNoArgs/));
23
+ methodNoArgs.bindMethod((_inputArguments, _context, callback) => {
24
+ callback(null, { statusCode: node_opcua_status_code_1.StatusCodes.Good, outputArguments: [] });
25
+ });
26
+ // MethodIO (input + output)
27
+ const methodIO = namespace.addMethod(myObject, {
28
+ browseName: "MethodIO",
29
+ nodeId: (0, node_opcua_nodeid_1.makeNodeId)("MethodIO", namespace.index),
30
+ inputArguments: [
31
+ {
32
+ name: "ShutterLag",
33
+ description: { text: "specifies the number of seconds to wait before the picture is taken " },
34
+ dataType: node_opcua_variant_1.DataType.UInt32
35
+ }
36
+ ],
37
+ outputArguments: [
38
+ {
39
+ name: "Result",
40
+ description: { text: "the result" },
41
+ dataType: "Int32"
42
+ }
43
+ ]
44
+ });
45
+ methodIO.bindMethod((_inputArguments, _context, callback) => {
46
+ callback(null, {
47
+ statusCode: node_opcua_status_code_1.StatusCodes.Good,
48
+ outputArguments: [{ dataType: node_opcua_variant_1.DataType.Int32, value: 42 }]
49
+ });
50
+ });
51
+ // MethodI (input only)
52
+ const methodI = namespace.addMethod(myObject, {
53
+ browseName: "MethodI",
54
+ nodeId: "s=MethodI",
55
+ inputArguments: [
56
+ {
57
+ name: "ShutterLag",
58
+ description: { text: "specifies the number of seconds to wait before the picture is taken " },
59
+ dataType: node_opcua_variant_1.DataType.UInt32
60
+ }
61
+ ]
62
+ });
63
+ methodI.bindMethod((_inputArguments, _context, callback) => {
64
+ callback(null, { statusCode: node_opcua_status_code_1.StatusCodes.Good, outputArguments: [] });
65
+ });
66
+ // MethodO (output only)
67
+ const methodO = namespace.addMethod(myObject, {
68
+ browseName: "MethodO",
69
+ nodeId: "s=MethodO",
70
+ outputArguments: [
71
+ {
72
+ name: "Result",
73
+ description: { text: "the result" },
74
+ dataType: "Int32"
75
+ }
76
+ ]
77
+ });
78
+ methodO.bindMethod((_inputArguments, _context, callback) => {
79
+ callback(null, {
80
+ statusCode: node_opcua_status_code_1.StatusCodes.Good,
81
+ outputArguments: [{ dataType: node_opcua_variant_1.DataType.Int32, value: 42 }]
82
+ });
83
+ });
84
+ }
85
+ //# sourceMappingURL=object_with_methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object_with_methods.js","sourceRoot":"","sources":["../../src/conformance_testing/object_with_methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 10-deep path and very large array variables for conformance testing.
3
+ */
4
+ import type { Namespace, UAObject } from "node-opcua-address-space";
5
+ export declare function addPath10Deep(namespace: Namespace, simulation_folder: UAObject): void;
6
+ export declare function addVeryLargeArrayVariables(namespace: Namespace, objectsFolder: UAObject): void;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addPath10Deep = addPath10Deep;
4
+ exports.addVeryLargeArrayVariables = addVeryLargeArrayVariables;
5
+ const helpers_1 = require("./helpers");
6
+ const type_defaults_1 = require("./type_defaults");
7
+ function addPath10Deep(namespace, simulation_folder) {
8
+ let parent = simulation_folder;
9
+ for (let i = 1; i <= 10; i++) {
10
+ const name = `Path_${i.toString()}Deep`;
11
+ const child = namespace.addObject({
12
+ organizedBy: parent,
13
+ browseName: name,
14
+ description: `A folder at the top of ${i} elements`,
15
+ typeDefinition: "FolderType",
16
+ nodeId: `s=${name}`
17
+ });
18
+ parent = child;
19
+ }
20
+ }
21
+ function addVeryLargeArrayVariables(namespace, objectsFolder) {
22
+ const scalarStaticLargeArray = namespace.addObject({
23
+ organizedBy: objectsFolder,
24
+ browseName: "Static_Scalar_Large_Array",
25
+ description: "Single dimension, suggested size of 100k-elements per array.",
26
+ nodeId: "s=Static_Scalar_Large_Array"
27
+ });
28
+ for (const e of type_defaults_1.typeAndDefaultValue) {
29
+ const realType = e.realType || e.type;
30
+ (0, helpers_1.addArrayVariable)(namespace, scalarStaticLargeArray, e.type, e.defaultValue, realType, 50 * 1024, "");
31
+ }
32
+ }
33
+ //# sourceMappingURL=path_and_large_arrays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path_and_large_arrays.js","sourceRoot":"","sources":["../../src/conformance_testing/path_and_large_arrays.ts"],"names":[],"mappings":";;AAQA,sCAaC;AAED,gEAWC;AA7BD,uCAA6C;AAC7C,mDAAsD;AAEtD,SAAgB,aAAa,CAAC,SAAoB,EAAE,iBAA2B;IAC3E,IAAI,MAAM,GAAG,iBAAiB,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,0BAA0B,CAAC,WAAW;YACnD,cAAc,EAAE,YAAY;YAC5B,MAAM,EAAE,KAAK,IAAI,EAAE;SACtB,CAAC,CAAC;QACH,MAAM,GAAG,KAAK,CAAC;IACnB,CAAC;AACL,CAAC;AAED,SAAgB,0BAA0B,CAAC,SAAoB,EAAE,aAAuB;IACpF,MAAM,sBAAsB,GAAG,SAAS,CAAC,SAAS,CAAC;QAC/C,WAAW,EAAE,aAAa;QAC1B,UAAU,EAAE,2BAA2B;QACvC,WAAW,EAAE,8DAA8D;QAC3E,MAAM,EAAE,6BAA6B;KACxC,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,IAAI,mCAAmB,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC;QACtC,IAAA,0BAAgB,EAAC,SAAS,EAAE,sBAAsB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;IACzG,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Sample views for conformance testing.
3
+ */
4
+ import type { Namespace } from "node-opcua-address-space";
5
+ export declare function addSampleView(namespace: Namespace): void;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addSampleView = addSampleView;
4
+ function addSampleView(namespace) {
5
+ const addressSpace = namespace.addressSpace;
6
+ const view1 = namespace.addView({
7
+ organizedBy: addressSpace.rootFolder.views,
8
+ browseName: "SampleView",
9
+ nodeId: "s=SampleView"
10
+ });
11
+ view1.addReference({
12
+ nodeId: "i=2256", // Server_Status
13
+ referenceType: "Organizes"
14
+ });
15
+ view1.addReference({
16
+ nodeId: "i=11715", // Server_Namespaces
17
+ referenceType: "Organizes"
18
+ });
19
+ namespace.addView({
20
+ organizedBy: addressSpace.rootFolder.views,
21
+ browseName: "OtherSampleView",
22
+ nodeId: "s=OtherSampleView"
23
+ });
24
+ }
25
+ //# sourceMappingURL=sample_view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample_view.js","sourceRoot":"","sources":["../../src/conformance_testing/sample_view.ts"],"names":[],"mappings":";;AAKA,sCAsBC;AAtBD,SAAgB,aAAa,CAAC,SAAoB;IAC9C,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IAE5C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5B,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK;QAC1C,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,cAAc;KACzB,CAAC,CAAC;IACH,KAAK,CAAC,YAAY,CAAC;QACf,MAAM,EAAE,QAAQ,EAAE,gBAAgB;QAClC,aAAa,EAAE,WAAW;KAC7B,CAAC,CAAC;IACH,KAAK,CAAC,YAAY,CAAC;QACf,MAAM,EAAE,SAAS,EAAE,oBAAoB;QACvC,aAAa,EAAE,WAAW;KAC7B,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC;QACd,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,KAAK;QAC1C,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,mBAAmB;KAC9B,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Simulation (dynamic) variables that change randomly on a timer.
3
+ */
4
+ import type { Namespace, UAObject } from "node-opcua-address-space";
5
+ export declare function addSimulationVariables(namespace: Namespace, scalarFolder: UAObject): void;