node-opcua-address-space 2.186.17 → 2.187.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.
- package/api/address_space_public.ts +16 -0
- package/api/helpers/resolve_opaque_on_address_space.ts +13 -1
- package/api/index.ts +14 -3
- package/api/loader/store_record_applier.ts +267 -0
- package/api/session_context.ts +116 -27
- package/dist/api/address_space_public.d.ts +14 -0
- package/dist/api/address_space_public.d.ts.map +1 -1
- package/dist/api/address_space_public.js +3 -0
- package/dist/api/address_space_public.js.map +1 -1
- package/dist/api/helpers/resolve_opaque_on_address_space.d.ts +6 -0
- package/dist/api/helpers/resolve_opaque_on_address_space.d.ts.map +1 -1
- package/dist/api/helpers/resolve_opaque_on_address_space.js +12 -1
- package/dist/api/helpers/resolve_opaque_on_address_space.js.map +1 -1
- package/dist/api/index.d.ts +4 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +4 -3
- package/dist/api/index.js.map +1 -1
- package/dist/api/loader/store_record_applier.d.ts +49 -0
- package/dist/api/loader/store_record_applier.d.ts.map +1 -0
- package/dist/api/loader/store_record_applier.js +235 -0
- package/dist/api/loader/store_record_applier.js.map +1 -0
- package/dist/api/session_context.d.ts +10 -0
- package/dist/api/session_context.d.ts.map +1 -1
- package/dist/api/session_context.js +100 -27
- package/dist/api/session_context.js.map +1 -1
- package/dist/impl/address_space.d.ts +2 -0
- package/dist/impl/address_space.d.ts.map +1 -1
- package/dist/impl/address_space.js +12 -2
- package/dist/impl/address_space.js.map +1 -1
- package/dist/impl/base_node_impl.d.ts +12 -0
- package/dist/impl/base_node_impl.d.ts.map +1 -1
- package/dist/impl/base_node_impl.js +35 -29
- package/dist/impl/base_node_impl.js.map +1 -1
- package/dist/impl/base_node_private.d.ts +5 -5
- package/dist/impl/base_node_private.d.ts.map +1 -1
- package/dist/impl/base_node_private.js +11 -5
- package/dist/impl/base_node_private.js.map +1 -1
- package/dist/impl/extension_object_array_node.d.ts +4 -2
- package/dist/impl/extension_object_array_node.d.ts.map +1 -1
- package/dist/impl/extension_object_array_node.js +5 -2
- package/dist/impl/extension_object_array_node.js.map +1 -1
- package/dist/impl/historical_access/address_space_historical_data_node.d.ts +26 -2
- package/dist/impl/historical_access/address_space_historical_data_node.d.ts.map +1 -1
- package/dist/impl/historical_access/address_space_historical_data_node.js +39 -0
- package/dist/impl/historical_access/address_space_historical_data_node.js.map +1 -1
- package/dist/impl/namespace_impl.d.ts.map +1 -1
- package/dist/impl/namespace_impl.js +3 -1
- package/dist/impl/namespace_impl.js.map +1 -1
- package/dist/impl/nodeid_manager.d.ts.map +1 -1
- package/dist/impl/nodeid_manager.js +10 -7
- package/dist/impl/nodeid_manager.js.map +1 -1
- package/dist/impl/nodeset_tools/construct_namespace_dependency.d.ts.map +1 -1
- package/dist/impl/nodeset_tools/construct_namespace_dependency.js +28 -0
- package/dist/impl/nodeset_tools/construct_namespace_dependency.js.map +1 -1
- package/dist/impl/reference_impl.d.ts +2 -1
- package/dist/impl/reference_impl.d.ts.map +1 -1
- package/dist/impl/reference_impl.js +6 -5
- package/dist/impl/reference_impl.js.map +1 -1
- package/dist/impl/reference_index.d.ts +22 -0
- package/dist/impl/reference_index.d.ts.map +1 -0
- package/dist/impl/reference_index.js +104 -0
- package/dist/impl/reference_index.js.map +1 -0
- package/dist/impl/ua_variable_impl.d.ts +10 -0
- package/dist/impl/ua_variable_impl.d.ts.map +1 -1
- package/dist/impl/ua_variable_impl.js +152 -106
- package/dist/impl/ua_variable_impl.js.map +1 -1
- package/dist/tsconfig_base.tsbuildinfo +1 -1
- package/distNodeJS/generate_address_space.d.ts +6 -1
- package/distNodeJS/generate_address_space.d.ts.map +1 -1
- package/distNodeJS/generate_address_space.js +33 -1
- package/distNodeJS/generate_address_space.js.map +1 -1
- package/impl/address_space.ts +16 -2
- package/impl/base_node_impl.ts +52 -30
- package/impl/base_node_private.ts +16 -10
- package/impl/extension_object_array_node.ts +12 -3
- package/impl/historical_access/address_space_historical_data_node.ts +64 -1
- package/impl/namespace_impl.ts +3 -1
- package/impl/nodeid_manager.ts +10 -7
- package/impl/nodeset_tools/construct_namespace_dependency.ts +23 -1
- package/impl/reference_impl.ts +6 -5
- package/impl/reference_index.ts +116 -0
- package/impl/ua_variable_impl.ts +203 -115
- package/package.json +34 -33
- package/source_nodejs/generate_address_space.ts +46 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* above this many references a node indexes them in a Map; below, a plain array scanned on
|
|
3
|
+
* lookup. A leaf node holds two or three references, and a Map with its hash table costs
|
|
4
|
+
* about 280 bytes even when nearly empty: a quarter of what a node weighs. On a model of a
|
|
5
|
+
* million nodes that is the difference between fitting in memory and not.
|
|
6
|
+
*/
|
|
7
|
+
const MAP_THRESHOLD = 16;
|
|
8
|
+
/**
|
|
9
|
+
* The references a node holds, by key (see ReferenceImpl#key). It offers what the code uses of
|
|
10
|
+
* a Map: get, has, set, delete, values, size and iteration.
|
|
11
|
+
*
|
|
12
|
+
* The key is not stored twice: a reference caches its own key when it is indexed, and a scan
|
|
13
|
+
* compares that cached key.
|
|
14
|
+
*/
|
|
15
|
+
export class ReferenceIndex {
|
|
16
|
+
#refs = null;
|
|
17
|
+
#map = null;
|
|
18
|
+
get size() {
|
|
19
|
+
return this.#map ? this.#map.size : this.#refs ? this.#refs.length : 0;
|
|
20
|
+
}
|
|
21
|
+
#indexOf(key) {
|
|
22
|
+
const refs = this.#refs;
|
|
23
|
+
for (let i = 0; i < refs.length; i++) {
|
|
24
|
+
if (refs[i]._key === key) {
|
|
25
|
+
return i;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return -1;
|
|
29
|
+
}
|
|
30
|
+
has(key) {
|
|
31
|
+
if (this.#map) {
|
|
32
|
+
return this.#map.has(key);
|
|
33
|
+
}
|
|
34
|
+
return this.#refs !== null && this.#indexOf(key) !== -1;
|
|
35
|
+
}
|
|
36
|
+
get(key) {
|
|
37
|
+
if (this.#map) {
|
|
38
|
+
return this.#map.get(key);
|
|
39
|
+
}
|
|
40
|
+
if (this.#refs === null) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const index = this.#indexOf(key);
|
|
44
|
+
return index === -1 ? undefined : this.#refs[index];
|
|
45
|
+
}
|
|
46
|
+
/** `key` must be the reference's own key (ReferenceImpl#key), which is what callers index by */
|
|
47
|
+
set(key, reference) {
|
|
48
|
+
if (this.#map) {
|
|
49
|
+
this.#map.set(key, reference);
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
if (this.#refs === null) {
|
|
53
|
+
this.#refs = [reference];
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
const index = this.#indexOf(key);
|
|
57
|
+
if (index !== -1) {
|
|
58
|
+
this.#refs[index] = reference; // check-proto-pollution: ok - numeric index
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
if (this.#refs.length >= MAP_THRESHOLD) {
|
|
62
|
+
const map = new Map();
|
|
63
|
+
for (const ref of this.#refs) {
|
|
64
|
+
map.set(ref._key, ref);
|
|
65
|
+
}
|
|
66
|
+
map.set(key, reference);
|
|
67
|
+
this.#map = map;
|
|
68
|
+
this.#refs = null;
|
|
69
|
+
return this;
|
|
70
|
+
}
|
|
71
|
+
// concat allocates exactly the length needed; push would grow the backing store to 17
|
|
72
|
+
// slots, which is more than the Map this replaces
|
|
73
|
+
this.#refs = this.#refs.concat(reference);
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
delete(key) {
|
|
77
|
+
if (this.#map) {
|
|
78
|
+
return this.#map.delete(key);
|
|
79
|
+
}
|
|
80
|
+
if (this.#refs === null) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const index = this.#indexOf(key);
|
|
84
|
+
if (index === -1) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
this.#refs = this.#refs.length === 1 ? null : this.#refs.filter((_r, i) => i !== index);
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
clear() {
|
|
91
|
+
this.#refs = null;
|
|
92
|
+
this.#map = null;
|
|
93
|
+
}
|
|
94
|
+
values() {
|
|
95
|
+
if (this.#map) {
|
|
96
|
+
return this.#map.values();
|
|
97
|
+
}
|
|
98
|
+
return (this.#refs ?? []).values();
|
|
99
|
+
}
|
|
100
|
+
[Symbol.iterator]() {
|
|
101
|
+
return this.values();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=reference_index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference_index.js","sourceRoot":"","sources":["../../impl/reference_index.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,7 +92,16 @@ export declare class UAVariableImpl<T extends UAVariableEvents & ListenerSignatu
|
|
|
92
92
|
_get_func?: GetFunc | null;
|
|
93
93
|
_set_func?: ((value: Variant, callback: (err: Error | null, statusCode?: StatusCode) => void) => void) | null;
|
|
94
94
|
refreshFunc?: (callback: CallbackT<DataValue>) => void;
|
|
95
|
+
/**
|
|
96
|
+
* true when refreshFunc only wraps the synchronous getter of a Variable bound with a plain
|
|
97
|
+
* `get`. readValue evaluates that getter itself: refreshing such a Variable before reading
|
|
98
|
+
* it, as the Read service does for the others, evaluates the getter twice for nothing.
|
|
99
|
+
*/
|
|
100
|
+
_refreshFuncWrapsGetter?: boolean;
|
|
95
101
|
__waiting_callbacks?: CallbackT<DataValue>[];
|
|
102
|
+
private _validatedForDataType?;
|
|
103
|
+
private _validatedVariantTypes?;
|
|
104
|
+
private __satisfy_waiting_callbacks?;
|
|
96
105
|
get typeDefinitionObj(): UAVariableType;
|
|
97
106
|
get typeDefinition(): NodeId;
|
|
98
107
|
constructor(options: UAVariableOptions);
|
|
@@ -320,6 +329,7 @@ export declare class UAVariableImpl<T extends UAVariableEvents & ListenerSignatu
|
|
|
320
329
|
*/
|
|
321
330
|
readValueAsync(context: ISessionContext | null, callback: CallbackT<DataValue>): void;
|
|
322
331
|
readValueAsync(context: ISessionContext | null): Promise<DataValue>;
|
|
332
|
+
private _readValueAsync;
|
|
323
333
|
getWriteMask(): number;
|
|
324
334
|
getUserWriteMask(): number;
|
|
325
335
|
clone(options: CloneOptions, optionalFilter?: CloneFilter, extraInfo?: CloneExtraInfo): UAVariable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ua_variable_impl.d.ts","sourceRoot":"","sources":["../../impl/ua_variable_impl.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ua_variable_impl.d.ts","sourceRoot":"","sources":["../../impl/ua_variable_impl.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAEhB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACH,KAAK,0BAA0B,EAC/B,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAErB,KAAK,OAAO,EAIZ,KAAK,mCAAmC,EAE3C,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACH,eAAe,EACf,YAAY,EAKZ,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACH,SAAS,EAET,KAAK,UAAU,EAIlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAgC,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,eAAe,EAAmB,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,SAAS,EAAE,UAAU,EAAe,MAAM,wBAAwB,CAAC;AACjF,OAAO,EACH,KAAK,kBAAkB,EACvB,iBAAiB,EAEjB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEH,QAAQ,EAER,OAAO,EAEP,KAAK,WAAW,EAEnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAMjF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAkB,MAAM,wBAAwB,CAAC;AAsB9F,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe,CAIrH;AAED,wBAAgB,sBAAsB,CAClC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,IAAI,GAAG,SAAS,EACrE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,IAAI,GACtD,eAAe,GAAG,SAAS,CAO7B;AA4BD,UAAU,iBAAkB,SAAQ,uBAAuB;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,OAAO,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IACpE,eAAe,CAAC,EAAE,MAAM,OAAO,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC;IACxE,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAC5F,SAAQ,YAAY,CAAC,CAAC,CACtB,YAAW,UAAU,CAAC,CAAC,CAAC,EAAE,sBAAsB;IAGxC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,aAAa,CAAC;IACjG,sBAAsB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAGrC,SAAgB,SAAS,sBAAsB;IAExC,QAAQ,EAAE,MAAM,CAAC;IACxB,QAAgB,cAAc,CAAC,CAAW;IAM3B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,oBAAoB,CAAC,EAAE,CAClC,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,YAAY,EAC7B,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,KACzB,IAAI,CAAC;IAEK,4BAA4B,CAAC,EAAE,6BAA6B,CAAC;IAC7D,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAEjD;;OAEG;IACI,UAAU,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IAEzB,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,qBAAqB,CAAC,EAAE,mCAAmC,GAAG,IAAI,CAAC;IACnE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9G,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACtE;;;;OAIG;IACY,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mBAAmB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;IAE5D,QAAgB,qBAAqB,CAAC,CAAS;IAC/C,QAAgB,sBAAsB,CAAC,CAAS;IAChD,QAAgB,2BAA2B,CAAC,CAAqD;IAEjG,IAAI,iBAAiB,IAAI,cAAc,CAWtC;IACD,IAAI,cAAc,IAAI,MAAM,CAE3B;IACD,YAAY,OAAO,EAAE,iBAAiB,EAwCrC;IACD,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,oCAAoC;IAWrC,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEpD;IAEM,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAQvD;IAEM,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAEpD;IAEM,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAKvD;IAEM,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE3D;IACM,gCAAgC,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAKzE;IACM,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE7D;IACM,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE7D;IACM,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAE7D;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,SAAS,CACZ,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,EAChC,UAAU,CAAC,EAAE,YAAY,EACzB,YAAY,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACxC,SAAS,CAyFX;IAEM,aAAa,IAAI,OAAO,CAE9B;IAED;;;OAGG;IACI,iBAAiB,IAAI,OAAO,CAYlC;IAEM,mBAAmB,IAAI,eAAe,CAK5C;IAEM,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC7E,YAAY,CAAC,UAAU,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAuE3D,aAAa,IAAI,SAAS,CAKhC;IAEM,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBlD;IAEM,aAAa,CAChB,OAAO,EAAE,eAAe,GAAG,IAAI,EAC/B,WAAW,EAAE,YAAY,EACzB,UAAU,CAAC,EAAE,YAAY,EACzB,YAAY,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACxC,SAAS,CA+CX;IAEM,gBAAgB,IAAI,QAAQ,CAElC;IACM,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE9C;IACM,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6ExD;IACD;;;;;;;;;;MAUE;IACK,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI,CAuCrG;IAED;;;;;;;;;;OAUG;IACI,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,GAAE,UAA6B,GAAG,IAAI,CA6BjG;IAED,OAAO,CAAC,yBAAyB;IAS1B,UAAU,CACb,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,EACxC,QAAQ,EAAE,kBAAkB,GAC7B,IAAI,CAAC;IACD,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC/F,UAAU,CACb,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,SAAS,EACpB,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,GAC1C,OAAO,CAAC,UAAU,CAAC,CAAC;IA+JhB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnH,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAuE3G;;;;;OAKG;IACI,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAW3D;IAED;;;OAGG;IACI,UAAU,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,IAAI,CAGlD;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwHG;IACI,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CA8B5E;IAED;;OAEG;IACI,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtF,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAa3E,OAAO,CAAC,eAAe;IAiFhB,YAAY,IAAI,MAAM,CAE5B;IAEM,gBAAgB,IAAI,MAAM,CAEhC;IAEM,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,UAAU,CA+CxG;IAEM,eAAe,IAAI,UAAU,CAWnC;IAED,IAAW,WAAW,IAAI,UAAU,CAEnC;IAEM,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,EAAE,GAAG,IAAI,GAAG,OAAO,CA6GhG;IAEM,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAE3E;IAED;;;;;OAKG;IACI,+BAA+B,IAAI,IAAI,CAE7C;IACD;;;OAGG;IACI,yBAAyB,CAC5B,uBAAuB,CAAC,EAAE,eAAe,EACzC,OAAO,CAAC,EAAE,0BAA0B,GACrC,eAAe,GAAG,IAAI,CAGxB;IAEM,wBAAwB,CAC3B,uBAAuB,CAAC,EAAE,eAAe,EAAE,EAC3C,OAAO,CAAC,EAAE,0BAA0B,GACrC,eAAe,EAAE,GAAG,IAAI,CAG1B;IAEM,mBAAmB,CACtB,uBAAuB,CAAC,EAAE,eAAe,GAAG,eAAe,EAAE,EAC7D,OAAO,CAAC,EAAE,0BAA0B,GACrC,eAAe,GAAG,eAAe,EAAE,GAAG,IAAI,CAmC5C;IAEM,4BAA4B,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAGrG;IAEM,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAKpE;IAEM,QAAQ,IAAI,MAAM,CAIxB;IAEM,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwBvC;IAyDM,WAAW,CACd,OAAO,EAAE,eAAe,EACxB,kBAAkB,EACZ,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAChB,oBAAoB,GACpB,iBAAiB,EACvB,UAAU,EAAE,YAAY,GAAG,IAAI,EAC/B,YAAY,EAAE,iBAAiB,GAAG,IAAI,EACtC,gBAAgB,EAAE,gBAAgB,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEvB,WAAW,CACd,OAAO,EAAE,eAAe,EACxB,kBAAkB,EACZ,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAChB,oBAAoB,GACpB,iBAAiB,EACvB,UAAU,EAAE,YAAY,GAAG,IAAI,EAC/B,YAAY,EAAE,iBAAiB,GAAG,IAAI,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC,GACvC,IAAI,CAAC;IAgCD,eAAe,CAClB,QAAQ,EAAE,eAAe,EACzB,8BAA8B,EAAE,sBAAsB,EACtD,WAAW,EAAE,YAAY,GAAG,IAAI,EAChC,aAAa,EAAE,iBAAiB,GAAG,IAAI,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,GACxC,IAAI,CAEN;IAEM,qBAAqB,CACxB,QAAQ,EAAE,eAAe,EACzB,8BAA8B,EAAE,sBAAsB,EACtD,WAAW,EAAE,YAAY,GAAG,IAAI,EAChC,aAAa,EAAE,iBAAiB,GAAG,IAAI,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,SAAS,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,GACzC,IAAI,CAEN;IAEM,YAAY,CACf,OAAO,EAAE,eAAe,EACxB,mBAAmB,EACb,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAChB,oBAAoB,GACpB,iBAAiB,EACvB,WAAW,EAAE,YAAY,GAAG,IAAI,EAChC,aAAa,EAAE,iBAAiB,GAAG,IAAI,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC,GACvC,IAAI,CAiBN;IAEM,YAAY,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAElD;IAEM,oBAAoB,CACvB,8BAA8B,EAAE,sBAAsB,EACtD,mBAAmB,EAAE,MAAM,EAC3B,WAAW,EAAE,OAAO,EACpB,iBAAiB,EAAE,OAAO,EAC1B,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,GAClC,IAAI,CAEN;IAEM,kBAAkB,CACrB,QAAQ,EAAE,eAAe,EACzB,8BAA8B,EAAE,sBAAsB,EACtD,WAAW,EAAE,YAAY,GAAG,IAAI,EAChC,aAAa,EAAE,iBAAiB,GAAG,IAAI,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,SAAS,EAAE,SAAS,CAAC,iBAAiB,CAAC,GACxC,IAAI,CAEN;IAEM,4BAA4B,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAGxD;IAEM,sBAAsB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAElD;IAEM,kBAAkB,CAAC,eAAe,EAAE,QAAQ,GAAG,OAAO,CAsB5D;IAEM,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAK/C;IAEM,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAwC3F;IAED;;OAEG;IACI,wBAAwB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,QA0ErF;IAEM,iBAAiB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAE7D;IAEM,uBAAuB,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI,CAM1D;IAED,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,gBAAgB;CAQ3B;AAeD,MAAM,WAAW,sBAAsB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,aAAa,CAAC;IACjG,sBAAsB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAqaD,qBAAa,eAAe,CAAC,CAAC,EAAE,EAAE,SAAS,QAAQ,CAAE,SAAQ,cAAe,YAAW,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9F,SAAS,CACZ,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,EAChC,UAAU,CAAC,EAAE,YAAY,EACzB,YAAY,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACxC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAEnB;IAEM,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5E,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAe9F,UAAU,CACb,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAC5B,UAAU,EAAE,YAAY,GAAG,IAAI,EAC/B,QAAQ,EAAE,kBAAkB,GAC7B,IAAI,CAAC;IACD,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvG,UAAU,CACb,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAC5B,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,GACjC,OAAO,CAAC,UAAU,CAAC,CAAC;CAmB1B"}
|
|
@@ -54,9 +54,6 @@ function adjust_samplingInterval(minimumSamplingInterval) {
|
|
|
54
54
|
}
|
|
55
55
|
return minimumSamplingInterval;
|
|
56
56
|
}
|
|
57
|
-
function is_Variant(v) {
|
|
58
|
-
return v instanceof Variant;
|
|
59
|
-
}
|
|
60
57
|
function is_StatusCode(v) {
|
|
61
58
|
return !!(v?.constructor &&
|
|
62
59
|
(v instanceof StatusCode ||
|
|
@@ -64,11 +61,8 @@ function is_StatusCode(v) {
|
|
|
64
61
|
v.constructor.name === "StatusCode" ||
|
|
65
62
|
v.constructor.name === "ModifiableStatusCode"));
|
|
66
63
|
}
|
|
67
|
-
function
|
|
68
|
-
|
|
69
|
-
// /@@assert(v.isValid());
|
|
70
|
-
}
|
|
71
|
-
return is_Variant(v) || is_StatusCode(v);
|
|
64
|
+
function isThenable(v) {
|
|
65
|
+
return typeof v?.then === "function";
|
|
72
66
|
}
|
|
73
67
|
function default_func(dataValue1, callback1) {
|
|
74
68
|
return _default_writable_timestamped_set_func.call(this, dataValue1, callback1);
|
|
@@ -100,41 +94,19 @@ function default_func(dataValue1, callback1) {
|
|
|
100
94
|
*
|
|
101
95
|
*/
|
|
102
96
|
export class UAVariableImpl extends BaseNodeImpl {
|
|
103
|
-
// -------------- UAvaraibleImplExArray
|
|
104
|
-
$$variableType;
|
|
105
|
-
$$dataType = undefined;
|
|
106
|
-
$$getElementBrowseName;
|
|
107
|
-
$$extensionObjectArray;
|
|
108
|
-
$$indexPropertyName;
|
|
109
97
|
// --------------
|
|
110
98
|
nodeClass = NodeClass.Variable;
|
|
111
99
|
dataType;
|
|
112
|
-
_basicDataType;
|
|
113
|
-
// narrowing this to ExtensionObject breaks declaration-merging in ua_two_state_variable.ts and elsewhere
|
|
114
|
-
// (concrete *T variants bind $extensionObject to a different, more specific shape) — see the matching
|
|
115
|
-
// comment on UAVariable.$extensionObject in node-opcua-address-space-base for the documented precedent.
|
|
116
|
-
// biome-ignore lint/suspicious/noExplicitAny: see comment above
|
|
117
|
-
$extensionObject;
|
|
118
|
-
$set_ExtensionObject;
|
|
119
|
-
$historicalDataConfiguration;
|
|
120
|
-
varHistorian;
|
|
121
100
|
/**
|
|
122
101
|
* @internal @private
|
|
123
102
|
*/
|
|
124
103
|
$dataValue;
|
|
125
104
|
accessLevel;
|
|
126
|
-
userAccessLevel;
|
|
127
105
|
valueRank;
|
|
128
106
|
minimumSamplingInterval;
|
|
129
107
|
historizing;
|
|
130
108
|
semantic_version;
|
|
131
109
|
arrayDimensions;
|
|
132
|
-
_timestamped_get_func;
|
|
133
|
-
_timestamped_set_func;
|
|
134
|
-
_get_func;
|
|
135
|
-
_set_func;
|
|
136
|
-
refreshFunc;
|
|
137
|
-
__waiting_callbacks;
|
|
138
110
|
get typeDefinitionObj() {
|
|
139
111
|
/* c8 ignore next */
|
|
140
112
|
if (super.typeDefinitionObj && super.typeDefinitionObj.nodeClass !== NodeClass.VariableType) {
|
|
@@ -191,7 +163,6 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
191
163
|
checkPermissionPrivate(context, permission) {
|
|
192
164
|
if (!context)
|
|
193
165
|
return true;
|
|
194
|
-
assert(context instanceof SessionContext);
|
|
195
166
|
if (context.checkPermission) {
|
|
196
167
|
if (!(context.checkPermission instanceof Function)) {
|
|
197
168
|
errorLog("context checkPermission is not a function");
|
|
@@ -294,7 +265,13 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
294
265
|
if (!this.checkPermissionPrivate(context, PermissionType.Read)) {
|
|
295
266
|
return makeNowDataValue({ statusCode: StatusCodes.BadUserAccessDenied });
|
|
296
267
|
}
|
|
297
|
-
|
|
268
|
+
// isUserReadable() would evaluate isReadable() and the Read permission a second time, and the
|
|
269
|
+
// permission lookup walks the namespace metadata. Both just passed above, so only the access
|
|
270
|
+
// level is left, unless a node replaced isUserReadable (see makeNotReadableIfEnabledFlagIsFalse).
|
|
271
|
+
const userReadable = this.isUserReadable === UAVariableImpl.prototype.isUserReadable
|
|
272
|
+
? this.checkAccessLevelPrivate(context, AccessLevelFlag.CurrentRead)
|
|
273
|
+
: this.isUserReadable(context);
|
|
274
|
+
if (!userReadable) {
|
|
298
275
|
return makeNowDataValue({ statusCode: StatusCodes.BadNotReadable });
|
|
299
276
|
}
|
|
300
277
|
if (!isValidDataEncoding(dataEncoding)) {
|
|
@@ -1016,6 +993,7 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1016
993
|
this._get_func = null;
|
|
1017
994
|
this._set_func = null;
|
|
1018
995
|
this.refreshFunc = undefined;
|
|
996
|
+
this._refreshFuncWrapsGetter = false;
|
|
1019
997
|
this._historyRead = UAVariableImpl.prototype._historyRead;
|
|
1020
998
|
}
|
|
1021
999
|
options = options || {};
|
|
@@ -1035,7 +1013,17 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1035
1013
|
assert(this._timestamped_set_func?.length === 2, "expecting 2 parameters");
|
|
1036
1014
|
}
|
|
1037
1015
|
readValueAsync(context, callback) {
|
|
1038
|
-
|
|
1016
|
+
// written out rather than wrapped with thenify-ex: every sample of a monitored item comes
|
|
1017
|
+
// through here with a callback, and the generic wrapper forwarded it with apply(arguments)
|
|
1018
|
+
if (callback) {
|
|
1019
|
+
this._readValueAsync(context, callback);
|
|
1020
|
+
return undefined;
|
|
1021
|
+
}
|
|
1022
|
+
return new Promise((resolve, reject) => {
|
|
1023
|
+
this._readValueAsync(context, (err, dataValue) => (err ? reject(err) : resolve(dataValue)));
|
|
1024
|
+
});
|
|
1025
|
+
}
|
|
1026
|
+
_readValueAsync(context, callback) {
|
|
1039
1027
|
context = context || SessionContext.defaultContext;
|
|
1040
1028
|
this.__waiting_callbacks = this.__waiting_callbacks || [];
|
|
1041
1029
|
this.__waiting_callbacks.push(callback);
|
|
@@ -1047,15 +1035,10 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1047
1035
|
callback?.(null, new DataValue({ statusCode: StatusCodes.BadNodeIdUnknown }));
|
|
1048
1036
|
return;
|
|
1049
1037
|
}
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
};
|
|
1055
|
-
let func;
|
|
1056
|
-
// stamped like the same gates of readValue(): the requested timestamps are expected
|
|
1057
|
-
// on a Bad result too (FEAT-34)
|
|
1058
|
-
const answerStatusOnly = (statusCode) => (innerCallback) => innerCallback(null, makeNowDataValue({ statusCode }));
|
|
1038
|
+
// runs once per sample of every monitored item, so nothing here allocates a closure or
|
|
1039
|
+
// binds a function: the denial (if any) is a StatusCode, and the callback that releases
|
|
1040
|
+
// the waiting readers is made once per variable
|
|
1041
|
+
let denied = null;
|
|
1059
1042
|
if (context.isAccessRestricted(this)) {
|
|
1060
1043
|
// same gate as readValue(): a variable bound with a simple get()
|
|
1061
1044
|
// also gets a refreshFunc, sending every read down the asyncRefresh
|
|
@@ -1063,32 +1046,51 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1063
1046
|
// through readValue(). Without this check here, a node hardened
|
|
1064
1047
|
// with AccessRestrictions(EncryptionRequired) answered its value
|
|
1065
1048
|
// over an unencrypted channel.
|
|
1066
|
-
|
|
1049
|
+
denied = StatusCodes.BadSecurityModeInsufficient;
|
|
1067
1050
|
}
|
|
1068
1051
|
else if (!this.isReadable(context)) {
|
|
1069
|
-
|
|
1052
|
+
denied = StatusCodes.BadNotReadable;
|
|
1070
1053
|
}
|
|
1071
1054
|
else if (!this.checkPermissionPrivate(context, PermissionType.Read)) {
|
|
1072
|
-
|
|
1055
|
+
denied = StatusCodes.BadUserAccessDenied;
|
|
1073
1056
|
}
|
|
1074
|
-
else if (
|
|
1075
|
-
|
|
1057
|
+
else if (
|
|
1058
|
+
// as in readValue(): the Read permission has just passed, only the access level is
|
|
1059
|
+
// left, unless a node replaced isUserReadable (see makeNotReadableIfEnabledFlagIsFalse)
|
|
1060
|
+
this.isUserReadable === UAVariableImpl.prototype.isUserReadable
|
|
1061
|
+
? !this.checkAccessLevelPrivate(context, AccessLevelFlag.CurrentRead)
|
|
1062
|
+
: !this.isUserReadable(context)) {
|
|
1063
|
+
denied = StatusCodes.BadNotReadable;
|
|
1076
1064
|
}
|
|
1077
|
-
|
|
1078
|
-
const clock = getCurrentClock();
|
|
1079
|
-
func = typeof this.refreshFunc === "function" ? this.asyncRefresh.bind(this, clock) : readImmediate;
|
|
1080
|
-
}
|
|
1081
|
-
const satisfy_callbacks = (err, dataValue) => {
|
|
1065
|
+
this.__satisfy_waiting_callbacks ??= (err, dataValue) => {
|
|
1082
1066
|
// now call all pending callbacks
|
|
1083
1067
|
const callbacks = this.__waiting_callbacks || [];
|
|
1084
1068
|
this.__waiting_callbacks = [];
|
|
1085
|
-
const _n = callbacks.length;
|
|
1086
1069
|
for (const callback1 of callbacks) {
|
|
1087
1070
|
callback1.call(this, err, dataValue);
|
|
1088
1071
|
}
|
|
1089
1072
|
};
|
|
1073
|
+
const satisfy_callbacks = this.__satisfy_waiting_callbacks;
|
|
1090
1074
|
try {
|
|
1091
|
-
|
|
1075
|
+
if (denied) {
|
|
1076
|
+
// stamped like the same gates of readValue(): the requested timestamps are expected
|
|
1077
|
+
// on a Bad result too (FEAT-34)
|
|
1078
|
+
satisfy_callbacks(null, makeNowDataValue({ statusCode: denied }));
|
|
1079
|
+
}
|
|
1080
|
+
else if (typeof this.refreshFunc === "function") {
|
|
1081
|
+
const clock = getCurrentClock();
|
|
1082
|
+
if (this.asyncRefresh === wrappedAsyncRefresh) {
|
|
1083
|
+
// the thenified wrapper adds nothing when a callback is given
|
|
1084
|
+
asyncRefreshImpl.call(this, clock, satisfy_callbacks);
|
|
1085
|
+
}
|
|
1086
|
+
else {
|
|
1087
|
+
this.asyncRefresh(clock, satisfy_callbacks);
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
else {
|
|
1091
|
+
assert(this.$dataValue instanceof DataValue);
|
|
1092
|
+
satisfy_callbacks(null, this.readValue(context));
|
|
1093
|
+
}
|
|
1092
1094
|
}
|
|
1093
1095
|
catch (err) {
|
|
1094
1096
|
// c8 ignore next
|
|
@@ -1100,7 +1102,6 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1100
1102
|
}
|
|
1101
1103
|
satisfy_callbacks(err);
|
|
1102
1104
|
}
|
|
1103
|
-
return undefined;
|
|
1104
1105
|
}
|
|
1105
1106
|
getWriteMask() {
|
|
1106
1107
|
return super.getWriteMask();
|
|
@@ -1467,7 +1468,22 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1467
1468
|
throw new Error("");
|
|
1468
1469
|
}
|
|
1469
1470
|
_validate_DataType(variantDataType) {
|
|
1470
|
-
|
|
1471
|
+
// every write of a Variable checks the same variant type against the same DataType: a check that
|
|
1472
|
+
// passed is remembered while the DataType stays the same; a refusal is always checked again
|
|
1473
|
+
const bit = variantDataType >= 0 && variantDataType < 31 ? 1 << variantDataType : 0;
|
|
1474
|
+
if (bit && this._validatedForDataType === this.dataType && ((this._validatedVariantTypes ?? 0) & bit) !== 0) {
|
|
1475
|
+
return true;
|
|
1476
|
+
}
|
|
1477
|
+
const valid = validateDataTypeCorrectness(this.addressSpace, this.dataType, variantDataType,
|
|
1478
|
+
/* allow Nulls */ false, this.nodeId);
|
|
1479
|
+
if (valid && bit) {
|
|
1480
|
+
if (this._validatedForDataType !== this.dataType) {
|
|
1481
|
+
this._validatedForDataType = this.dataType;
|
|
1482
|
+
this._validatedVariantTypes = 0;
|
|
1483
|
+
}
|
|
1484
|
+
this._validatedVariantTypes = (this._validatedVariantTypes ?? 0) | bit;
|
|
1485
|
+
}
|
|
1486
|
+
return valid;
|
|
1471
1487
|
}
|
|
1472
1488
|
_internal_set_value(value) {
|
|
1473
1489
|
if (value.dataType !== DataType.Null) {
|
|
@@ -1511,8 +1527,16 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1511
1527
|
*/
|
|
1512
1528
|
_inner_replace_dataValue(dataValue, indexRange) {
|
|
1513
1529
|
assert(this.$dataValue.value instanceof Variant);
|
|
1514
|
-
const
|
|
1515
|
-
|
|
1530
|
+
const replacesArrayInPlace = !!this.$$extensionObjectArray && dataValue.value.arrayType !== VariantArrayType.Scalar;
|
|
1531
|
+
const replacesExtensionObjectInPlace = this._basicDataType === DataType.ExtensionObject &&
|
|
1532
|
+
this.valueRank === -1 &&
|
|
1533
|
+
!!this.$set_ExtensionObject &&
|
|
1534
|
+
dataValue.value.arrayType === VariantArrayType.Scalar;
|
|
1535
|
+
// the previous value is needed intact for the comparison below. Only the two branches that
|
|
1536
|
+
// write into $dataValue in place need a copy of it: the common case swaps in the new object
|
|
1537
|
+
// and leaves the old one untouched
|
|
1538
|
+
const old_dataValue = replacesArrayInPlace || replacesExtensionObjectInPlace ? this.$dataValue.clone() : this.$dataValue;
|
|
1539
|
+
if (replacesArrayInPlace) {
|
|
1516
1540
|
// we have a bounded array or matrix
|
|
1517
1541
|
assert(Array.isArray(dataValue.value.value));
|
|
1518
1542
|
if (this.$$extensionObjectArray !== this.$dataValue.value.value) {
|
|
@@ -1526,10 +1550,7 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1526
1550
|
this.$dataValue.sourceTimestamp = dataValue.sourceTimestamp;
|
|
1527
1551
|
this.$dataValue.sourcePicoseconds = dataValue.sourcePicoseconds;
|
|
1528
1552
|
}
|
|
1529
|
-
else if (
|
|
1530
|
-
this.valueRank === -1 &&
|
|
1531
|
-
this.$set_ExtensionObject &&
|
|
1532
|
-
dataValue.value.arrayType === VariantArrayType.Scalar) {
|
|
1553
|
+
else if (replacesExtensionObjectInPlace && this.$set_ExtensionObject) {
|
|
1533
1554
|
// the entire extension object is changed.
|
|
1534
1555
|
this.$dataValue.statusCode = this.$dataValue.statusCode || StatusCodes.Good;
|
|
1535
1556
|
const preciseClock = coerceClock(this.$dataValue.sourceTimestamp, this.$dataValue.sourcePicoseconds);
|
|
@@ -1539,14 +1560,16 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1539
1560
|
this.$dataValue = dataValue;
|
|
1540
1561
|
this.$dataValue.statusCode = this.$dataValue.statusCode || StatusCodes.Good;
|
|
1541
1562
|
}
|
|
1542
|
-
// repair missing timestamps
|
|
1543
|
-
|
|
1563
|
+
// repair missing timestamps (the clock is only read when one is missing: this runs on
|
|
1564
|
+
// every stored value, and most arrive with both timestamps)
|
|
1565
|
+
let now;
|
|
1544
1566
|
if (!dataValue.serverTimestamp) {
|
|
1567
|
+
now = new Date();
|
|
1545
1568
|
this.$dataValue.serverTimestamp = old_dataValue.serverTimestamp || now;
|
|
1546
1569
|
this.$dataValue.serverPicoseconds = old_dataValue.serverPicoseconds || 0;
|
|
1547
1570
|
}
|
|
1548
1571
|
if (!dataValue.sourceTimestamp) {
|
|
1549
|
-
this.$dataValue.sourceTimestamp = old_dataValue.sourceTimestamp || now;
|
|
1572
|
+
this.$dataValue.sourceTimestamp = old_dataValue.sourceTimestamp || (now ?? new Date());
|
|
1550
1573
|
this.$dataValue.sourcePicoseconds = old_dataValue.sourcePicoseconds || 0;
|
|
1551
1574
|
}
|
|
1552
1575
|
if (!sameDataValue(old_dataValue, dataValue)) {
|
|
@@ -1571,7 +1594,7 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1571
1594
|
propagateTouchValueDownward(this, preciseClock, cache);
|
|
1572
1595
|
}
|
|
1573
1596
|
}
|
|
1574
|
-
else {
|
|
1597
|
+
else if (this.listenerCount("value_changed") > 0) {
|
|
1575
1598
|
this.emit("value_changed", this.$dataValue.clone(), indexRange);
|
|
1576
1599
|
}
|
|
1577
1600
|
}
|
|
@@ -1665,11 +1688,14 @@ export class UAVariableImpl extends BaseNodeImpl {
|
|
|
1665
1688
|
}
|
|
1666
1689
|
}
|
|
1667
1690
|
import { withCallback } from "thenify-ex";
|
|
1668
|
-
|
|
1691
|
+
// readValueAsync calls the unwrapped asyncRefresh directly: binding the thenified wrapper on
|
|
1692
|
+
// every sample cost more than the refresh itself
|
|
1693
|
+
const asyncRefreshImpl = UAVariableImpl.prototype.asyncRefresh;
|
|
1694
|
+
UAVariableImpl.prototype.asyncRefresh = withCallback(asyncRefreshImpl);
|
|
1695
|
+
const wrappedAsyncRefresh = UAVariableImpl.prototype.asyncRefresh;
|
|
1669
1696
|
UAVariableImpl.prototype.writeValue = withCallback(UAVariableImpl.prototype.writeValue);
|
|
1670
1697
|
UAVariableImpl.prototype.writeAttribute = withCallback(UAVariableImpl.prototype.writeAttribute);
|
|
1671
1698
|
UAVariableImpl.prototype.historyRead = withCallback(UAVariableImpl.prototype.historyRead);
|
|
1672
|
-
UAVariableImpl.prototype.readValueAsync = withCallback(UAVariableImpl.prototype.readValueAsync);
|
|
1673
1699
|
function check_valid_array(dataType, array) {
|
|
1674
1700
|
if (Array.isArray(array)) {
|
|
1675
1701
|
return true;
|
|
@@ -1757,28 +1783,22 @@ function _default_writable_timestamped_set_func(dataValue, callback) {
|
|
|
1757
1783
|
function turn_sync_to_async(f, numberOfArgs) {
|
|
1758
1784
|
if (f.length <= numberOfArgs) {
|
|
1759
1785
|
return function (data, callback) {
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
r.then(resolve, reject);
|
|
1767
|
-
}
|
|
1768
|
-
else {
|
|
1769
|
-
resolve(r);
|
|
1770
|
-
}
|
|
1771
|
-
}
|
|
1772
|
-
catch (err) {
|
|
1773
|
-
reject(err);
|
|
1774
|
-
}
|
|
1775
|
-
})
|
|
1776
|
-
.then((r) => {
|
|
1777
|
-
callback(null, r);
|
|
1778
|
-
})
|
|
1779
|
-
.catch((err) => {
|
|
1786
|
+
const ff2 = f;
|
|
1787
|
+
let r;
|
|
1788
|
+
try {
|
|
1789
|
+
r = ff2.call(this, data);
|
|
1790
|
+
}
|
|
1791
|
+
catch (err) {
|
|
1780
1792
|
callback(err);
|
|
1781
|
-
|
|
1793
|
+
return;
|
|
1794
|
+
}
|
|
1795
|
+
if (r instanceof Promise) {
|
|
1796
|
+
r.then((value) => callback(null, value), (err) => callback(err));
|
|
1797
|
+
return;
|
|
1798
|
+
}
|
|
1799
|
+
// a synchronous function answers at once: a Write of such Variables completes without waiting
|
|
1800
|
+
// a turn per value, under one permission cache for the whole request
|
|
1801
|
+
callback(null, r);
|
|
1782
1802
|
};
|
|
1783
1803
|
}
|
|
1784
1804
|
else {
|
|
@@ -1820,12 +1840,27 @@ function _Variable_bind_with_timestamped_get(options) {
|
|
|
1820
1840
|
assert(!options.get, "should not specify 'get' when 'timestamped_get' exists ");
|
|
1821
1841
|
assert(!this._timestamped_get_func);
|
|
1822
1842
|
const async_refresh_func = (callback) => {
|
|
1823
|
-
|
|
1824
|
-
.then((dataValue) => callback(null, dataValue))
|
|
1825
|
-
.catch((err) => {
|
|
1843
|
+
const reportError = (err) => {
|
|
1826
1844
|
errorLog("asyncRefresh error: Variable is ", this.nodeId.toString(), this.browseName.toString());
|
|
1827
1845
|
callback(err);
|
|
1828
|
-
}
|
|
1846
|
+
};
|
|
1847
|
+
// a getter that throws is reported by asyncRefresh, which calls this function
|
|
1848
|
+
const dataValueOrPromise = this._timestamped_get_func.call(this);
|
|
1849
|
+
if (isThenable(dataValueOrPromise)) {
|
|
1850
|
+
Promise.resolve(dataValueOrPromise)
|
|
1851
|
+
.then((dataValue) => callback(null, dataValue))
|
|
1852
|
+
.catch(reportError);
|
|
1853
|
+
return;
|
|
1854
|
+
}
|
|
1855
|
+
// the getter is synchronous (it always is for a Variable bound with a plain `get`):
|
|
1856
|
+
// answer at once. A promise here costs every Read of the Variable an allocation and
|
|
1857
|
+
// a turn of the microtask queue, for a value that is already known.
|
|
1858
|
+
try {
|
|
1859
|
+
callback(null, dataValueOrPromise);
|
|
1860
|
+
}
|
|
1861
|
+
catch (err) {
|
|
1862
|
+
reportError(err);
|
|
1863
|
+
}
|
|
1829
1864
|
};
|
|
1830
1865
|
const pThis = this;
|
|
1831
1866
|
if (options.timestamped_get.length === 0) {
|
|
@@ -1861,15 +1896,9 @@ function _Variable_bind_with_simple_get(options) {
|
|
|
1861
1896
|
this._get_func = options.get;
|
|
1862
1897
|
const timestamped_get_func_from__Variable_bind_with_simple_get = () => {
|
|
1863
1898
|
const value = this._get_func();
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
throw new Error(" bindVariable : the value getter function returns a invalid result ( expecting a Variant or a StatusCode !!!");
|
|
1868
|
-
}
|
|
1869
|
-
if (is_StatusCode(value)) {
|
|
1870
|
-
return new DataValue({ statusCode: value });
|
|
1871
|
-
}
|
|
1872
|
-
else {
|
|
1899
|
+
// a getter returns a Variant on every read but a failing one: test for it first, as
|
|
1900
|
+
// is_StatusCode ends in comparisons of constructor names
|
|
1901
|
+
if (value instanceof Variant) {
|
|
1873
1902
|
if (!this.$dataValue?.statusCode.isGoodish() || !sameVariant(this.$dataValue.value, value)) {
|
|
1874
1903
|
// rebuilding artificially timestamps with current clock as they are not provided
|
|
1875
1904
|
// by the underlying getter function
|
|
@@ -1880,11 +1909,18 @@ function _Variable_bind_with_simple_get(options) {
|
|
|
1880
1909
|
}
|
|
1881
1910
|
return this.$dataValue;
|
|
1882
1911
|
}
|
|
1912
|
+
/* c8 ignore next */
|
|
1913
|
+
if (!is_StatusCode(value)) {
|
|
1914
|
+
errorLog(chalk.red(" Bind variable error: "), " : the getter must return a Variant or a StatusCode" + "\nvalue_check.constructor.name ", value ? value.constructor.name : "null");
|
|
1915
|
+
throw new Error(" bindVariable : the value getter function returns a invalid result ( expecting a Variant or a StatusCode !!!");
|
|
1916
|
+
}
|
|
1917
|
+
return new DataValue({ statusCode: value });
|
|
1883
1918
|
};
|
|
1884
1919
|
_Variable_bind_with_timestamped_get.call(this, {
|
|
1885
1920
|
get: undefined,
|
|
1886
1921
|
timestamped_get: timestamped_get_func_from__Variable_bind_with_simple_get
|
|
1887
1922
|
});
|
|
1923
|
+
this._refreshFuncWrapsGetter = true;
|
|
1888
1924
|
}
|
|
1889
1925
|
function _Variable_bind_with_simple_set(options) {
|
|
1890
1926
|
assert(this instanceof UAVariableImpl);
|
|
@@ -1916,8 +1952,18 @@ function _Variable_bind_with_simple_set(options) {
|
|
|
1916
1952
|
function _Variable_bind_with_timestamped_set(options) {
|
|
1917
1953
|
assert(options.timestamped_set.length === 2 || options.timestamped_set.length === 1, "timestamped_set must have 2 parameters timestamped_set: function(dataValue,callback){} or one paramater timestamped_set: function(dataValue): Promise<StatusCode>{}");
|
|
1918
1954
|
assert(!options.set, "should not specify set when timestamped_set_func exists ");
|
|
1919
|
-
|
|
1955
|
+
// the callback form of a setter is a stateless wrapper around it (it takes the variable as
|
|
1956
|
+
// `this`): one per setter function, not one per variable. Every writable variable without a
|
|
1957
|
+
// setter of its own binds the same default, and a closure per variable was 110 bytes each
|
|
1958
|
+
let setter = callbackSetters.get(options.timestamped_set);
|
|
1959
|
+
if (!setter) {
|
|
1960
|
+
setter = convertToCallbackFunction1(options.timestamped_set);
|
|
1961
|
+
callbackSetters.set(options.timestamped_set, setter);
|
|
1962
|
+
}
|
|
1963
|
+
this._timestamped_set_func = setter;
|
|
1920
1964
|
}
|
|
1965
|
+
/** the callback form of each setter function met so far, see _Variable_bind_with_timestamped_set */
|
|
1966
|
+
const callbackSetters = new WeakMap();
|
|
1921
1967
|
function bind_setter(options) {
|
|
1922
1968
|
if (options.set && typeof options.set === "function") {
|
|
1923
1969
|
// variation 1
|
|
@@ -1985,9 +2031,9 @@ export class UAVariableImplT extends UAVariableImpl {
|
|
|
1985
2031
|
return super.readValue(context, indexRange, dataEncoding);
|
|
1986
2032
|
}
|
|
1987
2033
|
readValueAsync(context, callback) {
|
|
1988
|
-
// forward the arguments we were actually given
|
|
1989
|
-
//
|
|
1990
|
-
//
|
|
2034
|
+
// forward the arguments we were actually given: the base method picks the promise or the
|
|
2035
|
+
// callback form from the callback it receives (writeValue below, still thenified, picks
|
|
2036
|
+
// it from the argument count, where an explicit undefined callback would be passed on)
|
|
1991
2037
|
if (callback === undefined) {
|
|
1992
2038
|
return super.readValueAsync(context);
|
|
1993
2039
|
}
|