node-opcua-address-space 2.186.17 → 2.187.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 (80) hide show
  1. package/api/address_space_public.ts +16 -0
  2. package/api/helpers/resolve_opaque_on_address_space.ts +13 -1
  3. package/api/index.ts +14 -3
  4. package/api/loader/store_record_applier.ts +267 -0
  5. package/api/session_context.ts +116 -27
  6. package/dist/api/address_space_public.d.ts +14 -0
  7. package/dist/api/address_space_public.d.ts.map +1 -1
  8. package/dist/api/address_space_public.js +3 -0
  9. package/dist/api/address_space_public.js.map +1 -1
  10. package/dist/api/helpers/resolve_opaque_on_address_space.d.ts +6 -0
  11. package/dist/api/helpers/resolve_opaque_on_address_space.d.ts.map +1 -1
  12. package/dist/api/helpers/resolve_opaque_on_address_space.js +12 -1
  13. package/dist/api/helpers/resolve_opaque_on_address_space.js.map +1 -1
  14. package/dist/api/index.d.ts +4 -3
  15. package/dist/api/index.d.ts.map +1 -1
  16. package/dist/api/index.js +4 -3
  17. package/dist/api/index.js.map +1 -1
  18. package/dist/api/loader/store_record_applier.d.ts +49 -0
  19. package/dist/api/loader/store_record_applier.d.ts.map +1 -0
  20. package/dist/api/loader/store_record_applier.js +235 -0
  21. package/dist/api/loader/store_record_applier.js.map +1 -0
  22. package/dist/api/session_context.d.ts +10 -0
  23. package/dist/api/session_context.d.ts.map +1 -1
  24. package/dist/api/session_context.js +100 -27
  25. package/dist/api/session_context.js.map +1 -1
  26. package/dist/impl/address_space.d.ts +2 -0
  27. package/dist/impl/address_space.d.ts.map +1 -1
  28. package/dist/impl/address_space.js +12 -2
  29. package/dist/impl/address_space.js.map +1 -1
  30. package/dist/impl/base_node_impl.d.ts +12 -0
  31. package/dist/impl/base_node_impl.d.ts.map +1 -1
  32. package/dist/impl/base_node_impl.js +35 -29
  33. package/dist/impl/base_node_impl.js.map +1 -1
  34. package/dist/impl/base_node_private.d.ts +5 -5
  35. package/dist/impl/base_node_private.d.ts.map +1 -1
  36. package/dist/impl/base_node_private.js +11 -5
  37. package/dist/impl/base_node_private.js.map +1 -1
  38. package/dist/impl/extension_object_array_node.d.ts +4 -2
  39. package/dist/impl/extension_object_array_node.d.ts.map +1 -1
  40. package/dist/impl/extension_object_array_node.js +5 -2
  41. package/dist/impl/extension_object_array_node.js.map +1 -1
  42. package/dist/impl/historical_access/address_space_historical_data_node.d.ts +26 -2
  43. package/dist/impl/historical_access/address_space_historical_data_node.d.ts.map +1 -1
  44. package/dist/impl/historical_access/address_space_historical_data_node.js +39 -0
  45. package/dist/impl/historical_access/address_space_historical_data_node.js.map +1 -1
  46. package/dist/impl/namespace_impl.d.ts.map +1 -1
  47. package/dist/impl/namespace_impl.js +3 -1
  48. package/dist/impl/namespace_impl.js.map +1 -1
  49. package/dist/impl/nodeset_tools/construct_namespace_dependency.d.ts.map +1 -1
  50. package/dist/impl/nodeset_tools/construct_namespace_dependency.js +28 -0
  51. package/dist/impl/nodeset_tools/construct_namespace_dependency.js.map +1 -1
  52. package/dist/impl/reference_impl.d.ts +2 -1
  53. package/dist/impl/reference_impl.d.ts.map +1 -1
  54. package/dist/impl/reference_impl.js +6 -5
  55. package/dist/impl/reference_impl.js.map +1 -1
  56. package/dist/impl/reference_index.d.ts +22 -0
  57. package/dist/impl/reference_index.d.ts.map +1 -0
  58. package/dist/impl/reference_index.js +104 -0
  59. package/dist/impl/reference_index.js.map +1 -0
  60. package/dist/impl/ua_variable_impl.d.ts +8 -0
  61. package/dist/impl/ua_variable_impl.d.ts.map +1 -1
  62. package/dist/impl/ua_variable_impl.js +121 -84
  63. package/dist/impl/ua_variable_impl.js.map +1 -1
  64. package/dist/tsconfig_base.tsbuildinfo +1 -1
  65. package/distNodeJS/generate_address_space.d.ts +6 -1
  66. package/distNodeJS/generate_address_space.d.ts.map +1 -1
  67. package/distNodeJS/generate_address_space.js +33 -1
  68. package/distNodeJS/generate_address_space.js.map +1 -1
  69. package/impl/address_space.ts +16 -2
  70. package/impl/base_node_impl.ts +52 -30
  71. package/impl/base_node_private.ts +16 -10
  72. package/impl/extension_object_array_node.ts +12 -3
  73. package/impl/historical_access/address_space_historical_data_node.ts +64 -1
  74. package/impl/namespace_impl.ts +3 -1
  75. package/impl/nodeset_tools/construct_namespace_dependency.ts +23 -1
  76. package/impl/reference_impl.ts +6 -5
  77. package/impl/reference_index.ts +116 -0
  78. package/impl/ua_variable_impl.ts +161 -94
  79. package/package.json +34 -33
  80. package/source_nodejs/generate_address_space.ts +46 -1
@@ -92,7 +92,14 @@ 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 __satisfy_waiting_callbacks?;
96
103
  get typeDefinitionObj(): UAVariableType;
97
104
  get typeDefinition(): NodeId;
98
105
  constructor(options: UAVariableOptions);
@@ -320,6 +327,7 @@ export declare class UAVariableImpl<T extends UAVariableEvents & ListenerSignatu
320
327
  */
321
328
  readValueAsync(context: ISessionContext | null, callback: CallbackT<DataValue>): void;
322
329
  readValueAsync(context: ISessionContext | null): Promise<DataValue>;
330
+ private _readValueAsync;
323
331
  getWriteMask(): number;
324
332
  getUserWriteMask(): number;
325
333
  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":"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"}
@@ -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 is_Variant_or_StatusCode(v) {
68
- if (is_Variant(v)) {
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
- if (!this.isUserReadable(context)) {
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
- assert(typeof callback === "function");
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
- const readImmediate = (innerCallback) => {
1051
- assert(this.$dataValue instanceof DataValue);
1052
- const dataValue = this.readValue(context);
1053
- innerCallback(null, dataValue);
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
- func = answerStatusOnly(StatusCodes.BadSecurityModeInsufficient);
1049
+ denied = StatusCodes.BadSecurityModeInsufficient;
1067
1050
  }
1068
1051
  else if (!this.isReadable(context)) {
1069
- func = answerStatusOnly(StatusCodes.BadNotReadable);
1052
+ denied = StatusCodes.BadNotReadable;
1070
1053
  }
1071
1054
  else if (!this.checkPermissionPrivate(context, PermissionType.Read)) {
1072
- func = answerStatusOnly(StatusCodes.BadUserAccessDenied);
1055
+ denied = StatusCodes.BadUserAccessDenied;
1073
1056
  }
1074
- else if (!this.isUserReadable(context)) {
1075
- func = answerStatusOnly(StatusCodes.BadNotReadable);
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
- else {
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
- func.call(this, satisfy_callbacks);
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();
@@ -1511,8 +1512,16 @@ export class UAVariableImpl extends BaseNodeImpl {
1511
1512
  */
1512
1513
  _inner_replace_dataValue(dataValue, indexRange) {
1513
1514
  assert(this.$dataValue.value instanceof Variant);
1514
- const old_dataValue = this.$dataValue.clone();
1515
- if (this.$$extensionObjectArray && dataValue.value.arrayType !== VariantArrayType.Scalar) {
1515
+ const replacesArrayInPlace = !!this.$$extensionObjectArray && dataValue.value.arrayType !== VariantArrayType.Scalar;
1516
+ const replacesExtensionObjectInPlace = this._basicDataType === DataType.ExtensionObject &&
1517
+ this.valueRank === -1 &&
1518
+ !!this.$set_ExtensionObject &&
1519
+ dataValue.value.arrayType === VariantArrayType.Scalar;
1520
+ // the previous value is needed intact for the comparison below. Only the two branches that
1521
+ // write into $dataValue in place need a copy of it: the common case swaps in the new object
1522
+ // and leaves the old one untouched
1523
+ const old_dataValue = replacesArrayInPlace || replacesExtensionObjectInPlace ? this.$dataValue.clone() : this.$dataValue;
1524
+ if (replacesArrayInPlace) {
1516
1525
  // we have a bounded array or matrix
1517
1526
  assert(Array.isArray(dataValue.value.value));
1518
1527
  if (this.$$extensionObjectArray !== this.$dataValue.value.value) {
@@ -1526,10 +1535,7 @@ export class UAVariableImpl extends BaseNodeImpl {
1526
1535
  this.$dataValue.sourceTimestamp = dataValue.sourceTimestamp;
1527
1536
  this.$dataValue.sourcePicoseconds = dataValue.sourcePicoseconds;
1528
1537
  }
1529
- else if (this._basicDataType === DataType.ExtensionObject &&
1530
- this.valueRank === -1 &&
1531
- this.$set_ExtensionObject &&
1532
- dataValue.value.arrayType === VariantArrayType.Scalar) {
1538
+ else if (replacesExtensionObjectInPlace && this.$set_ExtensionObject) {
1533
1539
  // the entire extension object is changed.
1534
1540
  this.$dataValue.statusCode = this.$dataValue.statusCode || StatusCodes.Good;
1535
1541
  const preciseClock = coerceClock(this.$dataValue.sourceTimestamp, this.$dataValue.sourcePicoseconds);
@@ -1539,14 +1545,16 @@ export class UAVariableImpl extends BaseNodeImpl {
1539
1545
  this.$dataValue = dataValue;
1540
1546
  this.$dataValue.statusCode = this.$dataValue.statusCode || StatusCodes.Good;
1541
1547
  }
1542
- // repair missing timestamps
1543
- const now = new Date();
1548
+ // repair missing timestamps (the clock is only read when one is missing: this runs on
1549
+ // every stored value, and most arrive with both timestamps)
1550
+ let now;
1544
1551
  if (!dataValue.serverTimestamp) {
1552
+ now = new Date();
1545
1553
  this.$dataValue.serverTimestamp = old_dataValue.serverTimestamp || now;
1546
1554
  this.$dataValue.serverPicoseconds = old_dataValue.serverPicoseconds || 0;
1547
1555
  }
1548
1556
  if (!dataValue.sourceTimestamp) {
1549
- this.$dataValue.sourceTimestamp = old_dataValue.sourceTimestamp || now;
1557
+ this.$dataValue.sourceTimestamp = old_dataValue.sourceTimestamp || (now ?? new Date());
1550
1558
  this.$dataValue.sourcePicoseconds = old_dataValue.sourcePicoseconds || 0;
1551
1559
  }
1552
1560
  if (!sameDataValue(old_dataValue, dataValue)) {
@@ -1571,7 +1579,7 @@ export class UAVariableImpl extends BaseNodeImpl {
1571
1579
  propagateTouchValueDownward(this, preciseClock, cache);
1572
1580
  }
1573
1581
  }
1574
- else {
1582
+ else if (this.listenerCount("value_changed") > 0) {
1575
1583
  this.emit("value_changed", this.$dataValue.clone(), indexRange);
1576
1584
  }
1577
1585
  }
@@ -1665,11 +1673,14 @@ export class UAVariableImpl extends BaseNodeImpl {
1665
1673
  }
1666
1674
  }
1667
1675
  import { withCallback } from "thenify-ex";
1668
- UAVariableImpl.prototype.asyncRefresh = withCallback(UAVariableImpl.prototype.asyncRefresh);
1676
+ // readValueAsync calls the unwrapped asyncRefresh directly: binding the thenified wrapper on
1677
+ // every sample cost more than the refresh itself
1678
+ const asyncRefreshImpl = UAVariableImpl.prototype.asyncRefresh;
1679
+ UAVariableImpl.prototype.asyncRefresh = withCallback(asyncRefreshImpl);
1680
+ const wrappedAsyncRefresh = UAVariableImpl.prototype.asyncRefresh;
1669
1681
  UAVariableImpl.prototype.writeValue = withCallback(UAVariableImpl.prototype.writeValue);
1670
1682
  UAVariableImpl.prototype.writeAttribute = withCallback(UAVariableImpl.prototype.writeAttribute);
1671
1683
  UAVariableImpl.prototype.historyRead = withCallback(UAVariableImpl.prototype.historyRead);
1672
- UAVariableImpl.prototype.readValueAsync = withCallback(UAVariableImpl.prototype.readValueAsync);
1673
1684
  function check_valid_array(dataType, array) {
1674
1685
  if (Array.isArray(array)) {
1675
1686
  return true;
@@ -1820,12 +1831,27 @@ function _Variable_bind_with_timestamped_get(options) {
1820
1831
  assert(!options.get, "should not specify 'get' when 'timestamped_get' exists ");
1821
1832
  assert(!this._timestamped_get_func);
1822
1833
  const async_refresh_func = (callback) => {
1823
- Promise.resolve(this._timestamped_get_func.call(this))
1824
- .then((dataValue) => callback(null, dataValue))
1825
- .catch((err) => {
1834
+ const reportError = (err) => {
1826
1835
  errorLog("asyncRefresh error: Variable is ", this.nodeId.toString(), this.browseName.toString());
1827
1836
  callback(err);
1828
- });
1837
+ };
1838
+ // a getter that throws is reported by asyncRefresh, which calls this function
1839
+ const dataValueOrPromise = this._timestamped_get_func.call(this);
1840
+ if (isThenable(dataValueOrPromise)) {
1841
+ Promise.resolve(dataValueOrPromise)
1842
+ .then((dataValue) => callback(null, dataValue))
1843
+ .catch(reportError);
1844
+ return;
1845
+ }
1846
+ // the getter is synchronous (it always is for a Variable bound with a plain `get`):
1847
+ // answer at once. A promise here costs every Read of the Variable an allocation and
1848
+ // a turn of the microtask queue, for a value that is already known.
1849
+ try {
1850
+ callback(null, dataValueOrPromise);
1851
+ }
1852
+ catch (err) {
1853
+ reportError(err);
1854
+ }
1829
1855
  };
1830
1856
  const pThis = this;
1831
1857
  if (options.timestamped_get.length === 0) {
@@ -1861,15 +1887,9 @@ function _Variable_bind_with_simple_get(options) {
1861
1887
  this._get_func = options.get;
1862
1888
  const timestamped_get_func_from__Variable_bind_with_simple_get = () => {
1863
1889
  const value = this._get_func();
1864
- /* c8 ignore next */
1865
- if (!is_Variant_or_StatusCode(value)) {
1866
- errorLog(chalk.red(" Bind variable error: "), " : the getter must return a Variant or a StatusCode" + "\nvalue_check.constructor.name ", value ? value.constructor.name : "null");
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 {
1890
+ // a getter returns a Variant on every read but a failing one: test for it first, as
1891
+ // is_StatusCode ends in comparisons of constructor names
1892
+ if (value instanceof Variant) {
1873
1893
  if (!this.$dataValue?.statusCode.isGoodish() || !sameVariant(this.$dataValue.value, value)) {
1874
1894
  // rebuilding artificially timestamps with current clock as they are not provided
1875
1895
  // by the underlying getter function
@@ -1880,11 +1900,18 @@ function _Variable_bind_with_simple_get(options) {
1880
1900
  }
1881
1901
  return this.$dataValue;
1882
1902
  }
1903
+ /* c8 ignore next */
1904
+ if (!is_StatusCode(value)) {
1905
+ errorLog(chalk.red(" Bind variable error: "), " : the getter must return a Variant or a StatusCode" + "\nvalue_check.constructor.name ", value ? value.constructor.name : "null");
1906
+ throw new Error(" bindVariable : the value getter function returns a invalid result ( expecting a Variant or a StatusCode !!!");
1907
+ }
1908
+ return new DataValue({ statusCode: value });
1883
1909
  };
1884
1910
  _Variable_bind_with_timestamped_get.call(this, {
1885
1911
  get: undefined,
1886
1912
  timestamped_get: timestamped_get_func_from__Variable_bind_with_simple_get
1887
1913
  });
1914
+ this._refreshFuncWrapsGetter = true;
1888
1915
  }
1889
1916
  function _Variable_bind_with_simple_set(options) {
1890
1917
  assert(this instanceof UAVariableImpl);
@@ -1916,8 +1943,18 @@ function _Variable_bind_with_simple_set(options) {
1916
1943
  function _Variable_bind_with_timestamped_set(options) {
1917
1944
  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
1945
  assert(!options.set, "should not specify set when timestamped_set_func exists ");
1919
- this._timestamped_set_func = convertToCallbackFunction1(options.timestamped_set);
1946
+ // the callback form of a setter is a stateless wrapper around it (it takes the variable as
1947
+ // `this`): one per setter function, not one per variable. Every writable variable without a
1948
+ // setter of its own binds the same default, and a closure per variable was 110 bytes each
1949
+ let setter = callbackSetters.get(options.timestamped_set);
1950
+ if (!setter) {
1951
+ setter = convertToCallbackFunction1(options.timestamped_set);
1952
+ callbackSetters.set(options.timestamped_set, setter);
1953
+ }
1954
+ this._timestamped_set_func = setter;
1920
1955
  }
1956
+ /** the callback form of each setter function met so far, see _Variable_bind_with_timestamped_set */
1957
+ const callbackSetters = new WeakMap();
1921
1958
  function bind_setter(options) {
1922
1959
  if (options.set && typeof options.set === "function") {
1923
1960
  // variation 1
@@ -1985,9 +2022,9 @@ export class UAVariableImplT extends UAVariableImpl {
1985
2022
  return super.readValue(context, indexRange, dataEncoding);
1986
2023
  }
1987
2024
  readValueAsync(context, callback) {
1988
- // forward the arguments we were actually given. The base method is thenified, and
1989
- // thenify decides between promise and callback form by argument count, so passing an
1990
- // explicit undefined callback makes it hand that undefined straight through.
2025
+ // forward the arguments we were actually given: the base method picks the promise or the
2026
+ // callback form from the callback it receives (writeValue below, still thenified, picks
2027
+ // it from the argument count, where an explicit undefined callback would be passed on)
1991
2028
  if (callback === undefined) {
1992
2029
  return super.readValueAsync(context);
1993
2030
  }