opcjs-base 0.1.38-alpha → 0.1.39-alpha

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/dist/index.d.cts CHANGED
@@ -8281,9 +8281,13 @@ declare class SecureChannelMessageDecoder extends TransformStream<Uint8Array, Ms
8281
8281
  private context;
8282
8282
  private logger;
8283
8283
  /**
8284
- * Validates that `sequenceNumber` is strictly increasing from the last
8284
+ * Validates that `sequenceNumber` is monotonically increasing from the last
8285
8285
  * seen remote sequence. Allows exactly one UInt32 wrap-around per token.
8286
- * Returns false and logs an error if the number is a duplicate or out of order.
8286
+ *
8287
+ * Forward gaps are tolerated with a warning because some server implementations
8288
+ * may consume sequence numbers internally (e.g. cancelled responses) without
8289
+ * sending them on the wire. Backward jumps and duplicates are rejected as
8290
+ * errors since they indicate replay or reordering.
8287
8291
  */
8288
8292
  private validateSequenceNumber;
8289
8293
  private transform;
package/dist/index.d.ts CHANGED
@@ -8281,9 +8281,13 @@ declare class SecureChannelMessageDecoder extends TransformStream<Uint8Array, Ms
8281
8281
  private context;
8282
8282
  private logger;
8283
8283
  /**
8284
- * Validates that `sequenceNumber` is strictly increasing from the last
8284
+ * Validates that `sequenceNumber` is monotonically increasing from the last
8285
8285
  * seen remote sequence. Allows exactly one UInt32 wrap-around per token.
8286
- * Returns false and logs an error if the number is a duplicate or out of order.
8286
+ *
8287
+ * Forward gaps are tolerated with a warning because some server implementations
8288
+ * may consume sequence numbers internally (e.g. cancelled responses) without
8289
+ * sending them on the wire. Backward jumps and duplicates are rejected as
8290
+ * errors since they indicate replay or reordering.
8287
8291
  */
8288
8292
  private validateSequenceNumber;
8289
8293
  private transform;
package/dist/index.js CHANGED
@@ -17868,9 +17868,13 @@ var SecureChannelMessageDecoder = class extends TransformStream {
17868
17868
  }
17869
17869
  logger = getLogger("secureChannel.SecureChannelMessageDecoder");
17870
17870
  /**
17871
- * Validates that `sequenceNumber` is strictly increasing from the last
17871
+ * Validates that `sequenceNumber` is monotonically increasing from the last
17872
17872
  * seen remote sequence. Allows exactly one UInt32 wrap-around per token.
17873
- * Returns false and logs an error if the number is a duplicate or out of order.
17873
+ *
17874
+ * Forward gaps are tolerated with a warning because some server implementations
17875
+ * may consume sequence numbers internally (e.g. cancelled responses) without
17876
+ * sending them on the wire. Backward jumps and duplicates are rejected as
17877
+ * errors since they indicate replay or reordering.
17874
17878
  */
17875
17879
  validateSequenceNumber(sequenceNumber, msgType, controller) {
17876
17880
  const last = this.context.lastRemoteSequenceNumber;
@@ -17879,14 +17883,18 @@ var SecureChannelMessageDecoder = class extends TransformStream {
17879
17883
  this.logger.debug(`[${msgType}] Sequence number initialized to ${sequenceNumber}`);
17880
17884
  return true;
17881
17885
  }
17882
- const isIncrement = sequenceNumber === last + 1;
17883
17886
  const isWrap = last >= SEQ_WRAP_THRESHOLD2 && sequenceNumber < SEQ_WRAP_MAX;
17884
- if (!isIncrement && !isWrap) {
17885
- this.logger.error(`[${msgType}] Invalid remote sequence number: expected ${last + 1}, got ${sequenceNumber}`);
17886
- controller.error(new Error(`Invalid remote sequence number: expected ${last + 1}, got ${sequenceNumber}`));
17887
+ const isForward = sequenceNumber > last;
17888
+ if (!isForward && !isWrap) {
17889
+ this.logger.error(`[${msgType}] Invalid remote sequence number: expected > ${last}, got ${sequenceNumber}`);
17890
+ controller.error(new Error(`Invalid remote sequence number: expected > ${last}, got ${sequenceNumber}`));
17887
17891
  return false;
17888
17892
  }
17889
- this.logger.debug(`[${msgType}] Sequence number advanced: ${last} \u2192 ${sequenceNumber}`);
17893
+ if (sequenceNumber !== last + 1 && !isWrap) {
17894
+ this.logger.warn(`[${msgType}] Remote sequence number gap: expected ${last + 1}, got ${sequenceNumber} (skipped ${sequenceNumber - last - 1})`);
17895
+ } else {
17896
+ this.logger.debug(`[${msgType}] Sequence number advanced: ${last} \u2192 ${sequenceNumber}`);
17897
+ }
17890
17898
  this.context.lastRemoteSequenceNumber = sequenceNumber;
17891
17899
  return true;
17892
17900
  }