opcjs-base 0.1.29-alpha → 0.1.32-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.cjs +213 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +65 -32
- package/dist/index.d.ts +65 -32
- package/dist/index.js +213 -74
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2930,12 +2930,22 @@ var SecureChannelTypeEncoder = class extends TransformStream {
|
|
|
2930
2930
|
}
|
|
2931
2931
|
};
|
|
2932
2932
|
|
|
2933
|
+
// src/secureChannel/messages/msgType.ts
|
|
2934
|
+
var MsgTypeOpenFinal = "O".charCodeAt(0) | "P".charCodeAt(0) << 8 | "N".charCodeAt(0) << 16 | "F".charCodeAt(0) << 24;
|
|
2935
|
+
var MsgTypeOpenChunk = "O".charCodeAt(0) | "P".charCodeAt(0) << 8 | "N".charCodeAt(0) << 16 | "C".charCodeAt(0) << 24;
|
|
2936
|
+
var MsgTypeAbort = "M".charCodeAt(0) | "S".charCodeAt(0) << 8 | "G".charCodeAt(0) << 16 | "A".charCodeAt(0) << 24;
|
|
2937
|
+
var MsgTypeChunk = "M".charCodeAt(0) | "S".charCodeAt(0) << 8 | "G".charCodeAt(0) << 16 | "C".charCodeAt(0) << 24;
|
|
2938
|
+
var MsgTypeFinal = "M".charCodeAt(0) | "S".charCodeAt(0) << 8 | "G".charCodeAt(0) << 16 | "F".charCodeAt(0) << 24;
|
|
2939
|
+
var MsgTypeCloseFinal = "C".charCodeAt(0) | "L".charCodeAt(0) << 8 | "O".charCodeAt(0) << 16 | "F".charCodeAt(0) << 24;
|
|
2940
|
+
|
|
2933
2941
|
// src/secureChannel/secureChannelTypeDecoder.ts
|
|
2934
2942
|
var SecureChannelTypeDecoder = class extends TransformStream {
|
|
2935
2943
|
constructor(decoder) {
|
|
2936
2944
|
super({
|
|
2937
2945
|
transform(msg, controller) {
|
|
2938
|
-
|
|
2946
|
+
if (msg.header.msgType !== MsgTypeAbort) {
|
|
2947
|
+
msg.body = decoder.decode(msg.body, "binary");
|
|
2948
|
+
}
|
|
2939
2949
|
controller.enqueue(msg);
|
|
2940
2950
|
}
|
|
2941
2951
|
});
|
|
@@ -17397,13 +17407,6 @@ var MsgSymmetric = class _MsgSymmetric extends MsgBase2 {
|
|
|
17397
17407
|
}
|
|
17398
17408
|
};
|
|
17399
17409
|
|
|
17400
|
-
// src/secureChannel/messages/msgType.ts
|
|
17401
|
-
var MsgTypeOpenFinal = "O".charCodeAt(0) | "P".charCodeAt(0) << 8 | "N".charCodeAt(0) << 16 | "F".charCodeAt(0) << 24;
|
|
17402
|
-
var MsgTypeAbort = "M".charCodeAt(0) | "S".charCodeAt(0) << 8 | "G".charCodeAt(0) << 16 | "A".charCodeAt(0) << 24;
|
|
17403
|
-
var MsgTypeChunk = "M".charCodeAt(0) | "S".charCodeAt(0) << 8 | "G".charCodeAt(0) << 16 | "C".charCodeAt(0) << 24;
|
|
17404
|
-
var MsgTypeFinal = "M".charCodeAt(0) | "S".charCodeAt(0) << 8 | "G".charCodeAt(0) << 16 | "F".charCodeAt(0) << 24;
|
|
17405
|
-
var MsgTypeCloseFinal = "C".charCodeAt(0) | "L".charCodeAt(0) << 8 | "O".charCodeAt(0) << 16 | "F".charCodeAt(0) << 24;
|
|
17406
|
-
|
|
17407
17410
|
// src/secureChannel/pendingRequests.ts
|
|
17408
17411
|
var PendingRequests = class {
|
|
17409
17412
|
map = /* @__PURE__ */ new Map();
|
|
@@ -17455,6 +17458,7 @@ var Certificate = class {
|
|
|
17455
17458
|
};
|
|
17456
17459
|
|
|
17457
17460
|
// src/secureChannel/secureChannelFacade.ts
|
|
17461
|
+
var TOKEN_RENEW_FRACTION = 0.75;
|
|
17458
17462
|
var SecureChannelFacade = class {
|
|
17459
17463
|
// ─── Constructor ────────────────────────────────────────────────────────────────
|
|
17460
17464
|
constructor(context, readerTransform, writerTransform) {
|
|
@@ -17469,11 +17473,17 @@ var SecureChannelFacade = class {
|
|
|
17469
17473
|
logger = getLogger("secureChannel.SecureChannelFacade");
|
|
17470
17474
|
writer;
|
|
17471
17475
|
reader;
|
|
17476
|
+
/** Timer handle for the scheduled token renewal; undefined when no renewal is pending. */
|
|
17477
|
+
renewalTimer;
|
|
17472
17478
|
/**
|
|
17473
|
-
*
|
|
17474
|
-
*
|
|
17479
|
+
* Builds and sends an OpenSecureChannel request.
|
|
17480
|
+
* Called for both the initial Issue and subsequent Renew requests.
|
|
17481
|
+
*
|
|
17482
|
+
* On success the context `channelId` and `tokenId` are updated and a new
|
|
17483
|
+
* renewal is scheduled at 75 % of the server-revised token lifetime, per
|
|
17484
|
+
* OPC UA Part 4 Section 5.4.1 / Part 6 Section 6.7.3.
|
|
17475
17485
|
*/
|
|
17476
|
-
async
|
|
17486
|
+
async sendOpenSecureChannel(requestType) {
|
|
17477
17487
|
const requestHeader = new RequestHeader();
|
|
17478
17488
|
requestHeader.authenticationToken = NodeId.newTwoByte(0);
|
|
17479
17489
|
requestHeader.timestamp = /* @__PURE__ */ new Date();
|
|
@@ -17485,31 +17495,72 @@ var SecureChannelFacade = class {
|
|
|
17485
17495
|
const request = new OpenSecureChannelRequest();
|
|
17486
17496
|
request.requestHeader = requestHeader;
|
|
17487
17497
|
request.clientProtocolVersion = 0;
|
|
17488
|
-
request.requestType =
|
|
17498
|
+
request.requestType = requestType;
|
|
17489
17499
|
request.securityMode = this.context.securityPolicy.getSecurityMode();
|
|
17490
17500
|
request.clientNonce = null;
|
|
17491
17501
|
request.requestedLifetime = 36e5;
|
|
17492
17502
|
const { sequenceNumber, requestId } = this.context.nextIds();
|
|
17493
|
-
this.context.securityAlgorithm = this.context.securityPolicy.getAlgorithmAsymmetric(
|
|
17503
|
+
this.context.securityAlgorithm = this.context.securityPolicy.getAlgorithmAsymmetric(
|
|
17504
|
+
new Uint8Array(),
|
|
17505
|
+
new Uint8Array()
|
|
17506
|
+
);
|
|
17494
17507
|
const msg = new MsgAsymmetric(
|
|
17495
|
-
new MsgHeader2(MsgTypeOpenFinal, 0,
|
|
17508
|
+
new MsgHeader2(MsgTypeOpenFinal, 0, this.context.channelId),
|
|
17496
17509
|
new MsgSecurityHeaderAsymmetric(
|
|
17497
17510
|
"http://opcfoundation.org/UA/SecurityPolicy#None"
|
|
17498
17511
|
),
|
|
17499
17512
|
new MsgSequenceHeader(sequenceNumber, requestId),
|
|
17500
17513
|
request
|
|
17501
17514
|
);
|
|
17502
|
-
this.
|
|
17503
|
-
|
|
17504
|
-
|
|
17505
|
-
|
|
17506
|
-
|
|
17507
|
-
|
|
17508
|
-
|
|
17509
|
-
|
|
17510
|
-
|
|
17511
|
-
|
|
17512
|
-
|
|
17515
|
+
const response = await this.pushMessage(msg);
|
|
17516
|
+
this.context.channelId = response.securityToken?.channelId;
|
|
17517
|
+
this.context.tokenId = response.securityToken?.tokenId;
|
|
17518
|
+
this.context.securityAlgorithm = this.context.securityPolicy.getAlgorithmSymmetric(
|
|
17519
|
+
new Certificate(),
|
|
17520
|
+
new Certificate()
|
|
17521
|
+
);
|
|
17522
|
+
const revisedLifetimeMs = response.securityToken?.revisedLifetime;
|
|
17523
|
+
this.scheduleRenewal(revisedLifetimeMs);
|
|
17524
|
+
}
|
|
17525
|
+
/**
|
|
17526
|
+
* Schedules a proactive token renewal at {@link TOKEN_RENEW_FRACTION} of
|
|
17527
|
+
* `lifetimeMs`. Any previously scheduled renewal is cancelled first.
|
|
17528
|
+
*/
|
|
17529
|
+
scheduleRenewal(lifetimeMs) {
|
|
17530
|
+
if (this.renewalTimer !== void 0) {
|
|
17531
|
+
clearTimeout(this.renewalTimer);
|
|
17532
|
+
}
|
|
17533
|
+
const delayMs = Math.floor(lifetimeMs * TOKEN_RENEW_FRACTION);
|
|
17534
|
+
this.logger.debug(
|
|
17535
|
+
`Scheduling SecurityToken renewal in ${delayMs} ms (75 % of ${lifetimeMs} ms lifetime).`
|
|
17536
|
+
);
|
|
17537
|
+
this.renewalTimer = setTimeout(() => {
|
|
17538
|
+
this.renewalTimer = void 0;
|
|
17539
|
+
this.logger.info("Renewing SecurityToken...");
|
|
17540
|
+
this.sendOpenSecureChannel(1 /* Renew */).catch((err) => {
|
|
17541
|
+
this.logger.error("SecurityToken renewal failed:", err);
|
|
17542
|
+
});
|
|
17543
|
+
}, delayMs);
|
|
17544
|
+
}
|
|
17545
|
+
/**
|
|
17546
|
+
* Sends the initial OpenSecureChannel request and resolves once the server
|
|
17547
|
+
* replies. Updates `context.channelId` and `context.tokenId` on success
|
|
17548
|
+
* and schedules automatic renewal at 75 % of the token lifetime.
|
|
17549
|
+
*/
|
|
17550
|
+
openSecureChannel() {
|
|
17551
|
+
this.logger.debug("Sending OpenSecureChannelRequest (Issue)...");
|
|
17552
|
+
return this.sendOpenSecureChannel(0 /* Issue */);
|
|
17553
|
+
}
|
|
17554
|
+
/**
|
|
17555
|
+
* Cancels any pending token renewal timer and releases the stream writer.
|
|
17556
|
+
* Call this when the secure channel is no longer needed.
|
|
17557
|
+
*/
|
|
17558
|
+
close() {
|
|
17559
|
+
if (this.renewalTimer !== void 0) {
|
|
17560
|
+
clearTimeout(this.renewalTimer);
|
|
17561
|
+
this.renewalTimer = void 0;
|
|
17562
|
+
}
|
|
17563
|
+
this.writer.releaseLock();
|
|
17513
17564
|
}
|
|
17514
17565
|
// ─── ISecureChannel implementation ─────────────────────────────────────────────
|
|
17515
17566
|
getSecurityPolicy() {
|
|
@@ -17546,14 +17597,20 @@ var SecureChannelFacade = class {
|
|
|
17546
17597
|
if (!value) {
|
|
17547
17598
|
this.logger.error("Received empty frame");
|
|
17548
17599
|
}
|
|
17549
|
-
const
|
|
17550
|
-
if (
|
|
17551
|
-
|
|
17552
|
-
|
|
17553
|
-
|
|
17554
|
-
);
|
|
17600
|
+
const requestId = value.sequenceHeader.requestId;
|
|
17601
|
+
if (value.header.msgType === MsgTypeAbort) {
|
|
17602
|
+
const reader = new BinaryReader(value.body);
|
|
17603
|
+
const statusCode = reader.readUInt32();
|
|
17604
|
+
const reason = reader.readString();
|
|
17605
|
+
this.context.chunkBuffers.delete(requestId);
|
|
17606
|
+
this.pending.fail(requestId, new Error(`Abort 0x${statusCode.toString(16).toUpperCase()}: ${reason}`));
|
|
17555
17607
|
} else {
|
|
17556
|
-
|
|
17608
|
+
const response = value.body;
|
|
17609
|
+
if (response instanceof ServiceFault) {
|
|
17610
|
+
this.pending.fail(requestId, new Error(`ServiceFault: ${JSON.stringify(response)}`));
|
|
17611
|
+
} else {
|
|
17612
|
+
this.pending.settle(requestId, response);
|
|
17613
|
+
}
|
|
17557
17614
|
}
|
|
17558
17615
|
}
|
|
17559
17616
|
} catch (e) {
|
|
@@ -17684,33 +17741,67 @@ var SecurityPolicyNone = class {
|
|
|
17684
17741
|
};
|
|
17685
17742
|
|
|
17686
17743
|
// src/secureChannel/secureChannelContext.ts
|
|
17687
|
-
var
|
|
17744
|
+
var SEQ_WRAP_THRESHOLD = 4294967295 - 1024;
|
|
17745
|
+
var SEQ_WRAP_START = 1;
|
|
17688
17746
|
var SecureChannelContext = class {
|
|
17689
17747
|
constructor(endpointUrl) {
|
|
17690
17748
|
this.endpointUrl = endpointUrl;
|
|
17691
17749
|
}
|
|
17692
|
-
|
|
17693
|
-
|
|
17750
|
+
/**
|
|
17751
|
+
* Next outgoing sequence number. Starts at 1 for non-ECC legacy profiles
|
|
17752
|
+
* per OPC UA Part 6, Section 6.7.2.4. The value 0 is used only as the
|
|
17753
|
+
* LastSequenceNumber sentinel in the OPN request ("no prior sequence").
|
|
17754
|
+
*/
|
|
17755
|
+
sequenceNumber = 1;
|
|
17756
|
+
/** Next outgoing request ID. The value 0 is reserved and must be skipped. */
|
|
17757
|
+
requestId = 1;
|
|
17694
17758
|
channelId = 0;
|
|
17695
17759
|
tokenId = 0;
|
|
17696
|
-
maxSendBufferSize =
|
|
17697
|
-
maxRecvBufferSize =
|
|
17698
|
-
|
|
17760
|
+
maxSendBufferSize = 2147483647;
|
|
17761
|
+
maxRecvBufferSize = 2147483647;
|
|
17762
|
+
/** Pending chunk bodies keyed by requestId, for reassembling multi-chunk messages. */
|
|
17763
|
+
chunkBuffers = /* @__PURE__ */ new Map();
|
|
17699
17764
|
securityAlgorithm;
|
|
17765
|
+
/** Last remote sequence number seen; undefined before the first received message. */
|
|
17766
|
+
lastRemoteSequenceNumber = void 0;
|
|
17700
17767
|
securityPolicy = new SecurityPolicyNone();
|
|
17701
17768
|
/**
|
|
17702
|
-
*
|
|
17703
|
-
*
|
|
17769
|
+
* Returns the current outgoing sequence number then advances it with
|
|
17770
|
+
* UInt32 wrap-around per OPC UA Part 6, Section 6.7.2.4. Only advances
|
|
17771
|
+
* the sequence counter — use when creating additional chunks for the same
|
|
17772
|
+
* message (each chunk needs its own sequence number but the same requestId).
|
|
17773
|
+
*/
|
|
17774
|
+
nextSequenceNumber() {
|
|
17775
|
+
const seq = this.sequenceNumber;
|
|
17776
|
+
if (this.sequenceNumber >= SEQ_WRAP_THRESHOLD) {
|
|
17777
|
+
this.sequenceNumber = SEQ_WRAP_START;
|
|
17778
|
+
} else {
|
|
17779
|
+
this.sequenceNumber++;
|
|
17780
|
+
}
|
|
17781
|
+
return seq;
|
|
17782
|
+
}
|
|
17783
|
+
/**
|
|
17784
|
+
* Returns the next outgoing sequence number and request ID, then advances
|
|
17785
|
+
* both counters. Call once per outgoing message; use {@link nextSequenceNumber}
|
|
17786
|
+
* for additional chunks of the same message.
|
|
17787
|
+
*
|
|
17788
|
+
* Handles UInt32 wrap-around per OPC UA Part 6, Section 6.7.2.4:
|
|
17789
|
+
* sequence numbers reset to 1 after reaching 0xFFFFFFFF-1024; request IDs
|
|
17790
|
+
* skip the reserved value 0 on wrap.
|
|
17704
17791
|
*/
|
|
17705
17792
|
nextIds() {
|
|
17706
|
-
|
|
17707
|
-
|
|
17708
|
-
|
|
17709
|
-
|
|
17793
|
+
const result = { sequenceNumber: this.nextSequenceNumber(), requestId: this.requestId };
|
|
17794
|
+
this.requestId++;
|
|
17795
|
+
if (this.requestId === 0) {
|
|
17796
|
+
this.requestId = 1;
|
|
17797
|
+
}
|
|
17798
|
+
return result;
|
|
17710
17799
|
}
|
|
17711
17800
|
};
|
|
17712
17801
|
|
|
17713
17802
|
// src/secureChannel/secureChannelMessageDecoder.ts
|
|
17803
|
+
var SEQ_WRAP_THRESHOLD2 = 4294967295 - 1024;
|
|
17804
|
+
var SEQ_WRAP_MAX = 1024;
|
|
17714
17805
|
var SecureChannelMessageDecoder = class extends TransformStream {
|
|
17715
17806
|
constructor(context) {
|
|
17716
17807
|
super({
|
|
@@ -17719,12 +17810,34 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17719
17810
|
this.context = context;
|
|
17720
17811
|
}
|
|
17721
17812
|
logger = getLogger("secureChannel.SecureChannelMessageDecoder");
|
|
17813
|
+
/**
|
|
17814
|
+
* Validates that `sequenceNumber` is strictly increasing from the last
|
|
17815
|
+
* seen remote sequence. Allows exactly one UInt32 wrap-around per token.
|
|
17816
|
+
* Returns false and logs an error if the number is a duplicate or out of order.
|
|
17817
|
+
*/
|
|
17818
|
+
validateSequenceNumber(sequenceNumber, controller) {
|
|
17819
|
+
const last = this.context.lastRemoteSequenceNumber;
|
|
17820
|
+
if (last === void 0) {
|
|
17821
|
+
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17822
|
+
return true;
|
|
17823
|
+
}
|
|
17824
|
+
const isIncrement = sequenceNumber === last + 1;
|
|
17825
|
+
const isWrap = last >= SEQ_WRAP_THRESHOLD2 && sequenceNumber < SEQ_WRAP_MAX;
|
|
17826
|
+
if (!isIncrement && !isWrap) {
|
|
17827
|
+
this.logger.error(`Invalid remote sequence number: expected ${last + 1}, got ${sequenceNumber}`);
|
|
17828
|
+
controller.error(new Error(`Invalid remote sequence number: expected ${last + 1}, got ${sequenceNumber}`));
|
|
17829
|
+
return false;
|
|
17830
|
+
}
|
|
17831
|
+
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17832
|
+
return true;
|
|
17833
|
+
}
|
|
17722
17834
|
transform(data, controller) {
|
|
17723
17835
|
const buffer = new BinaryReader(data);
|
|
17724
17836
|
const header = MsgHeader2.decode(buffer);
|
|
17725
17837
|
switch (header.msgType) {
|
|
17726
|
-
case MsgTypeOpenFinal:
|
|
17727
|
-
|
|
17838
|
+
case MsgTypeOpenFinal:
|
|
17839
|
+
case MsgTypeOpenChunk: {
|
|
17840
|
+
this.logger.debug("SecureChannel received OpenFinal/OpenChunk message");
|
|
17728
17841
|
const secHeader = MsgSecurityHeaderAsymmetric.decode(buffer);
|
|
17729
17842
|
const msgAsym = MsgAsymmetric.decode(
|
|
17730
17843
|
buffer,
|
|
@@ -17732,16 +17845,22 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17732
17845
|
secHeader,
|
|
17733
17846
|
this.context.securityAlgorithm
|
|
17734
17847
|
);
|
|
17848
|
+
if (!this.validateSequenceNumber(msgAsym.sequenceHeader.sequenceNumber, controller)) return;
|
|
17735
17849
|
controller.enqueue(msgAsym);
|
|
17736
17850
|
break;
|
|
17737
17851
|
}
|
|
17738
|
-
case MsgTypeAbort:
|
|
17739
|
-
this.logger.warn("
|
|
17852
|
+
case MsgTypeAbort: {
|
|
17853
|
+
this.logger.warn("SecureChannel received Abort message");
|
|
17854
|
+
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17855
|
+
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17856
|
+
controller.enqueue(msgSym);
|
|
17740
17857
|
break;
|
|
17858
|
+
}
|
|
17741
17859
|
case MsgTypeChunk: {
|
|
17742
17860
|
this.logger.debug("SecureChannel received Chunk message.");
|
|
17743
17861
|
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17744
17862
|
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17863
|
+
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, controller)) return;
|
|
17745
17864
|
controller.enqueue(msgSym);
|
|
17746
17865
|
break;
|
|
17747
17866
|
}
|
|
@@ -17749,11 +17868,12 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17749
17868
|
this.logger.debug("SecureChannel received Final message");
|
|
17750
17869
|
const secHeader = MsgSecurityHeaderSymmetric.decode(buffer);
|
|
17751
17870
|
const msgSym = MsgSymmetric.decode(buffer, header, secHeader, this.context.securityAlgorithm);
|
|
17871
|
+
if (!this.validateSequenceNumber(msgSym.sequenceHeader.sequenceNumber, controller)) return;
|
|
17752
17872
|
controller.enqueue(msgSym);
|
|
17753
17873
|
break;
|
|
17754
17874
|
}
|
|
17755
17875
|
case MsgTypeCloseFinal:
|
|
17756
|
-
this.logger.warn("Unimplemented
|
|
17876
|
+
this.logger.warn("Unimplemented CloseFinal message.");
|
|
17757
17877
|
break;
|
|
17758
17878
|
default:
|
|
17759
17879
|
this.logger.warn("SecureChannel received unknown message type:", header.msgType);
|
|
@@ -17763,7 +17883,7 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17763
17883
|
};
|
|
17764
17884
|
|
|
17765
17885
|
// src/secureChannel/secureChannelMessageEncoder.ts
|
|
17766
|
-
var
|
|
17886
|
+
var SecureChannelMessageEncoder = class extends TransformStream {
|
|
17767
17887
|
constructor(context) {
|
|
17768
17888
|
super({
|
|
17769
17889
|
transform(msg, controller) {
|
|
@@ -17778,24 +17898,33 @@ var SecureChannelMesssageEncoder = class extends TransformStream {
|
|
|
17778
17898
|
// src/secureChannel/secureChannelChunkReader.ts
|
|
17779
17899
|
var SecureChannelChunkReader = class extends TransformStream {
|
|
17780
17900
|
logger = getLogger("secureChannel.SecureChannelChunkReader");
|
|
17781
|
-
prependChunk(chunk, body) {
|
|
17782
|
-
const result = new Uint8Array(chunk.byteLength + body.byteLength);
|
|
17783
|
-
result.set(chunk, 0);
|
|
17784
|
-
result.set(body, chunk.byteLength);
|
|
17785
|
-
return result;
|
|
17786
|
-
}
|
|
17787
17901
|
transform(msg, context, controller) {
|
|
17902
|
+
const requestId = msg.sequenceHeader.requestId;
|
|
17788
17903
|
switch (msg.header.msgType) {
|
|
17789
|
-
case MsgTypeChunk:
|
|
17904
|
+
case MsgTypeChunk:
|
|
17905
|
+
case MsgTypeOpenChunk: {
|
|
17790
17906
|
this.logger.debug("Received Chunk message");
|
|
17791
|
-
context.chunkBuffers.
|
|
17907
|
+
const chunks = context.chunkBuffers.get(requestId) ?? [];
|
|
17908
|
+
chunks.push(msg.body);
|
|
17909
|
+
context.chunkBuffers.set(requestId, chunks);
|
|
17792
17910
|
break;
|
|
17793
17911
|
}
|
|
17794
|
-
case MsgTypeFinal:
|
|
17912
|
+
case MsgTypeFinal:
|
|
17913
|
+
case MsgTypeOpenFinal: {
|
|
17795
17914
|
this.logger.debug("Received Final message");
|
|
17796
|
-
|
|
17797
|
-
|
|
17798
|
-
|
|
17915
|
+
const chunks = context.chunkBuffers.get(requestId);
|
|
17916
|
+
if (chunks && chunks.length > 0) {
|
|
17917
|
+
const finalBody = msg.body;
|
|
17918
|
+
const totalLength = chunks.reduce((sum, c) => sum + c.byteLength, 0) + finalBody.byteLength;
|
|
17919
|
+
const assembled = new Uint8Array(totalLength);
|
|
17920
|
+
let offset = 0;
|
|
17921
|
+
for (const chunk of chunks) {
|
|
17922
|
+
assembled.set(chunk, offset);
|
|
17923
|
+
offset += chunk.byteLength;
|
|
17924
|
+
}
|
|
17925
|
+
assembled.set(finalBody, offset);
|
|
17926
|
+
msg.body = assembled;
|
|
17927
|
+
context.chunkBuffers.delete(requestId);
|
|
17799
17928
|
}
|
|
17800
17929
|
controller.enqueue(msg);
|
|
17801
17930
|
break;
|
|
@@ -17829,33 +17958,43 @@ var SecureChannelChunkWriter = class extends TransformStream {
|
|
|
17829
17958
|
this.logger.debug("Received Final message");
|
|
17830
17959
|
const securityAlgorithm = this.context.securityAlgorithm;
|
|
17831
17960
|
const maxCipherTextSize = this.context.maxSendBufferSize - MsgHeader2.Size - MsgSecurityHeaderSymmetric.Size;
|
|
17832
|
-
const
|
|
17833
|
-
const maxPayloadSize = maxPlainTextSize - securityAlgorithm.GetSignatureLength() - 1 - MsgSecurityHeaderSymmetric.Size + (securityAlgorithm.IsAuthenticated() ? 1 : 0);
|
|
17961
|
+
const maxPayloadSize = securityAlgorithm.GetMaxPayload(maxCipherTextSize) - MsgSequenceHeader.Size;
|
|
17834
17962
|
const data = msgSymmetric.body;
|
|
17835
|
-
const
|
|
17836
|
-
if (
|
|
17837
|
-
this.logger.debug(`Message body exceeds max chunk size, splitting into ${
|
|
17838
|
-
for (let i = 0; i <
|
|
17963
|
+
const numChunks = Math.ceil(data.byteLength / maxPayloadSize);
|
|
17964
|
+
if (numChunks > 1) {
|
|
17965
|
+
this.logger.debug(`Message body exceeds max chunk size, splitting into ${numChunks} chunks.`);
|
|
17966
|
+
for (let i = 0; i < numChunks - 1; i++) {
|
|
17839
17967
|
const chunkMsg = new MsgSymmetric(
|
|
17840
|
-
|
|
17968
|
+
// messageSize=0 is a placeholder: MsgBase.Encrypt() overwrites it at byte offset 4
|
|
17969
|
+
// with the actual encrypted size before writing to the wire.
|
|
17970
|
+
new MsgHeader2(MsgTypeChunk, 0, msgSymmetric.header.secureChannelId),
|
|
17841
17971
|
msgSymmetric.securityHeader,
|
|
17842
|
-
|
|
17972
|
+
new MsgSequenceHeader(
|
|
17973
|
+
this.context.nextSequenceNumber(),
|
|
17974
|
+
msgSymmetric.sequenceHeader.requestId
|
|
17975
|
+
),
|
|
17843
17976
|
data.subarray(i * maxPayloadSize, (i + 1) * maxPayloadSize)
|
|
17844
17977
|
);
|
|
17845
|
-
this.logger.trace(
|
|
17978
|
+
this.logger.trace(
|
|
17979
|
+
`Enqueuing chunk ${i + 1}/${numChunks} with size ${chunkMsg.body.byteLength} bytes.`
|
|
17980
|
+
);
|
|
17846
17981
|
controller.enqueue(chunkMsg);
|
|
17847
17982
|
}
|
|
17848
|
-
msg.
|
|
17983
|
+
msg.sequenceHeader = new MsgSequenceHeader(
|
|
17984
|
+
this.context.nextSequenceNumber(),
|
|
17985
|
+
msgSymmetric.sequenceHeader.requestId
|
|
17986
|
+
);
|
|
17987
|
+
msg.body = data.subarray((numChunks - 1) * maxPayloadSize);
|
|
17849
17988
|
}
|
|
17850
17989
|
break;
|
|
17851
17990
|
}
|
|
17852
17991
|
}
|
|
17853
17992
|
}
|
|
17854
|
-
this.logger.trace(`Enqueuing
|
|
17993
|
+
this.logger.trace(`Enqueuing final message with body size ${msg.body.byteLength} bytes.`);
|
|
17855
17994
|
controller.enqueue(msg);
|
|
17856
17995
|
}
|
|
17857
17996
|
};
|
|
17858
17997
|
|
|
17859
|
-
export { ActionMethodDataType, ActionStateEnum, ActionTargetDataType, ActivateSessionRequest, ActivateSessionResponse, AddNodesItem, AddNodesRequest, AddNodesResponse, AddNodesResult, AddReferencesItem, AddReferencesRequest, AddReferencesResponse, AdditionalParametersType, AggregateConfiguration, AggregateFilter, AggregateFilterResult, AliasNameDataType, Annotation, AnnotationDataType, AnonymousIdentityToken, ApplicationConfigurationDataType, ApplicationDescription, ApplicationIdentityDataType, ApplicationTypeEnum, Argument, AttributeOperand, AuthorizationServiceConfigurationDataType, AxisInformation, AxisScaleEnumerationEnum, BaseConfigurationDataType, BaseConfigurationRecordDataType, SecureChannelTypeDecoder as BinaryDecoderTransform, SecureChannelTypeEncoder as BinaryEncoderTransform, BinaryReader, BinaryWriter, BitFieldDefinition, BrokerConnectionTransportDataType, BrokerDataSetReaderTransportDataType, BrokerDataSetWriterTransportDataType, BrokerTransportQualityOfServiceEnum, BrokerWriterGroupTransportDataType, BrowseDescription, BrowseDirectionEnum, BrowseNextRequest, BrowseNextResponse, BrowsePath, BrowsePathResult, BrowsePathTarget, BrowseRequest, BrowseResponse, BrowseResult, BrowseResultMaskEnum, BuildInfo, CallMethodRequest, CallMethodResult, CallRequest, CallResponse, CancelRequest, CancelResponse, CartesianCoordinates, CertificateGroupDataType, ChannelSecurityToken, ChassisIdSubtypeEnum, CloseSecureChannelRequest, CloseSecureChannelResponse, CloseSessionRequest, CloseSessionResponse, ComplexNumberType, Configuration, ConfigurationUpdateTargetType, ConfigurationUpdateTypeEnum, ConfigurationVersionDataType, ConnectionTransportDataType, ConsoleSink, ContentFilter, ContentFilterElement, ContentFilterElementResult, ContentFilterResult, ConversionLimitEnumEnum, CreateMonitoredItemsRequest, CreateMonitoredItemsResponse, CreateSessionRequest, CreateSessionResponse, CreateSubscriptionRequest, CreateSubscriptionResponse, CurrencyUnitType, DataChangeFilter, DataChangeNotification, DataChangeTriggerEnum, DataSetMetaDataType, DataSetOrderingTypeEnum, DataSetReaderDataType, DataSetReaderMessageDataType, DataSetReaderTransportDataType, DataSetWriterDataType, DataSetWriterMessageDataType, DataSetWriterTransportDataType, DataTypeAttributes, DataTypeDefinition, DataTypeDescription, DataTypeNode, DataTypeSchemaHeader, DataValue, DatagramConnectionTransport2DataType, DatagramConnectionTransportDataType, DatagramDataSetReaderTransportDataType, DatagramWriterGroupTransport2DataType, DatagramWriterGroupTransportDataType, DeadbandTypeEnum, DecimalDataType, Decoder, DeleteAtTimeDetails, DeleteEventDetails, DeleteMonitoredItemsRequest, DeleteMonitoredItemsResponse, DeleteNodesItem, DeleteNodesRequest, DeleteNodesResponse, DeleteRawModifiedDetails, DeleteReferencesItem, DeleteReferencesRequest, DeleteReferencesResponse, DeleteSubscriptionsRequest, DeleteSubscriptionsResponse, DiagnosticInfo, DiagnosticsLevelEnum, DiscoveryConfiguration, DoubleComplexNumberType, DtlsPubSubConnectionDataType, DuplexEnum, EUInformation, ElementOperand, Encoder, EndpointConfiguration, EndpointDataType, EndpointDescription, EndpointType, EndpointUrlListDataType, EnumDefinition, EnumDescription, EnumField, EnumValueType, EphemeralKeyType, EventFieldList, EventFilter, EventFilterResult, EventNotificationList, ExceptionDeviationFormatEnum, ExpandedNodeId, ExtensionObject, FieldMetaData, FieldTargetDataType, FilterOperand, FilterOperatorEnum, FindServersOnNetworkRequest, FindServersOnNetworkResponse, FindServersRequest, FindServersResponse, Frame, GenericAttributeValue, GenericAttributes, GetEndpointsRequest, GetEndpointsResponse, HistoryData, HistoryEvent, HistoryEventFieldList, HistoryModifiedData, HistoryModifiedEvent, HistoryReadDetails, HistoryReadRequest, HistoryReadResponse, HistoryReadResult, HistoryReadValueId, HistoryUpdateDetails, HistoryUpdateRequest, HistoryUpdateResponse, HistoryUpdateResult, HistoryUpdateTypeEnum, IdTypeEnum, IdentityCriteriaTypeEnum, IdentityMappingRuleType, InstanceNode, InterfaceAdminStatusEnum, InterfaceOperStatusEnum, IssuedIdentityToken, JsonActionMetaDataMessage, JsonActionNetworkMessage, JsonActionRequestMessage, JsonActionResponderMessage, JsonActionResponseMessage, JsonApplicationDescriptionMessage, JsonDataSetMessage, JsonDataSetMetaDataMessage, JsonDataSetReaderMessageDataType, JsonDataSetWriterMessageDataType, JsonNetworkMessage, JsonPubSubConnectionMessage, JsonServerEndpointsMessage, JsonStatusMessage, JsonWriterGroupMessageDataType, KeyValuePair, LinearConversionDataType, LiteralOperand, LldpManagementAddressTxPortType, LldpManagementAddressType, LldpTlvType, LocalizedText, LogRecordsDataType, LoggerFactory, ManAddrIfSubtypeEnum, MdnsDiscoveryConfiguration, MessageSecurityModeEnum, MethodAttributes, MethodNode, ModelChangeStructureDataType, ModelChangeStructureVerbMaskEnum, ModificationInfo, ModifyMonitoredItemsRequest, ModifyMonitoredItemsResponse, ModifySubscriptionRequest, ModifySubscriptionResponse, MonitoredItemCreateRequest, MonitoredItemCreateResult, MonitoredItemModifyRequest, MonitoredItemModifyResult, MonitoredItemNotification, MonitoringFilter, MonitoringFilterResult, MonitoringModeEnum, MonitoringParameters, NameValuePair, NamingRuleTypeEnum, NegotiationStatusEnum, NetworkAddressDataType, NetworkAddressUrlDataType, NetworkGroupDataType, Node, NodeAttributes, NodeAttributesMaskEnum, NodeClassEnum, NodeId, NodeIdType, NodeReference, NodeTypeDescription, NotificationData, NotificationMessage, ObjectAttributes, ObjectNode, ObjectTypeAttributes, ObjectTypeNode, OpenFileModeEnum, OpenSecureChannelRequest, OpenSecureChannelResponse, OptionSet, Orientation, OverrideValueHandlingEnum, ParsingResult, PerformUpdateTypeEnum, PortIdSubtypeEnum, PortableNodeId, PortableQualifiedName, PriorityMappingEntryType, ProgramDiagnostic2DataType, ProgramDiagnosticDataType, PubSubConfiguration2DataType, PubSubConfigurationDataType, PubSubConfigurationRefDataType, PubSubConfigurationValueDataType, PubSubConnectionDataType, PubSubDiagnosticsCounterClassificationEnum, PubSubGroupDataType, PubSubKeyPushTargetDataType, PubSubStateEnum, PublishRequest, PublishResponse, PublishedActionDataType, PublishedActionMethodDataType, PublishedDataItemsDataType, PublishedDataSetCustomSourceDataType, PublishedDataSetDataType, PublishedDataSetSourceDataType, PublishedEventsDataType, PublishedVariableDataType, QosDataType, QualifiedName, QuantityDimension, QueryDataDescription, QueryDataSet, QueryFirstRequest, QueryFirstResponse, QueryNextRequest, QueryNextResponse, Range, RationalNumber, ReadAnnotationDataDetails, ReadAtTimeDetails, ReadEventDetails, ReadEventDetails2, ReadEventDetailsSorted, ReadProcessedDetails, ReadRawModifiedDetails, ReadRequest, ReadResponse, ReadValueId, ReaderGroupDataType, ReaderGroupMessageDataType, ReaderGroupTransportDataType, ReceiveQosDataType, ReceiveQosPriorityDataType, RedundancySupportEnum, RedundantServerDataType, RedundantServerModeEnum, ReferenceDescription, ReferenceDescriptionDataType, ReferenceListEntryDataType, ReferenceNode, ReferenceTypeAttributes, ReferenceTypeNode, RegisterNodesRequest, RegisterNodesResponse, RegisterServer2Request, RegisterServer2Response, RegisterServerRequest, RegisterServerResponse, RegisteredServer, RelativePath, RelativePathElement, RepublishRequest, RepublishResponse, RequestHeader, ResponseHeader, RolePermissionType, SamplingIntervalDiagnosticsDataType, SecureChannelChunkReader, SecureChannelChunkWriter, SecureChannelContext, SecureChannelFacade, SecureChannelMessageDecoder, SecureChannelMesssageEncoder, SecureChannelTypeDecoder, SecureChannelTypeEncoder, SecurityGroupDataType, SecuritySettingsDataType, SecurityTokenRequestTypeEnum, SemanticChangeStructureDataType, ServerDiagnosticsSummaryDataType, ServerEndpointDataType, ServerOnNetwork, ServerStateEnum, ServerStatusDataType, ServiceCertificateDataType, ServiceCounterDataType, ServiceFault, SessionDiagnosticsDataType, SessionSecurityDiagnosticsDataType, SessionlessInvokeRequestType, SessionlessInvokeResponseType, SetMonitoringModeRequest, SetMonitoringModeResponse, SetPublishingModeRequest, SetPublishingModeResponse, SetTriggeringRequest, SetTriggeringResponse, SignatureData, SignedSoftwareCertificate, SimpleAttributeOperand, SimpleTypeDescription, SortOrderTypeEnum, SortRuleElement, SpanContextDataType, StandaloneSubscribedDataSetDataType, StandaloneSubscribedDataSetRefDataType, StatusChangeNotification, StatusCode, StatusCodeGetFlagBits, StatusCodeIs, StatusCodeToString, StatusCodeToStringNumber, StatusResult, Structure, StructureDefinition, StructureDescription, StructureField, StructureTypeEnum, SubscribedDataSetDataType, SubscribedDataSetMirrorDataType, SubscriptionAcknowledgement, SubscriptionDiagnosticsDataType, TargetVariablesDataType, TcpConnectionHandler, TcpMessageDecoupler, TcpMessageInjector, TimeZoneDataType, TimestampsToReturnEnum, TraceContextDataType, TransactionErrorType, TransferResult, TransferSubscriptionsRequest, TransferSubscriptionsResponse, TranslateBrowsePathsToNodeIdsRequest, TranslateBrowsePathsToNodeIdsResponse, TransmitQosDataType, TransmitQosPriorityDataType, TrustListDataType, TrustListMasksEnum, TsnFailureCodeEnum, TsnListenerStatusEnum, TsnStreamStateEnum, TsnTalkerStatusEnum, TypeNode, UABinaryFileDataType, UadpDataSetReaderMessageDataType, UadpDataSetWriterMessageDataType, UadpWriterGroupMessageDataType, Union, UnregisterNodesRequest, UnregisterNodesResponse, UnsignedRationalNumber, UpdateDataDetails, UpdateEventDetails, UpdateStructureDataDetails, UserIdentityToken, UserManagementDataType, UserNameIdentityToken, UserTokenPolicy, UserTokenSettingsDataType, UserTokenTypeEnum, VariableAttributes, VariableNode, VariableTypeAttributes, VariableTypeNode, Variant, Vector, ViewAttributes, ViewDescription, ViewNode, WebSocketFascade, WebSocketReadableStream, WebSocketWritableStream, WriteRequest, WriteResponse, WriteValue, WriterGroupDataType, WriterGroupMessageDataType, WriterGroupTransportDataType, X509IdentityToken, XVType, XmlElement, _3DCartesianCoordinates, _3DFrame, _3DOrientation, _3DVector, getLogger, initLoggerProvider, registerBinaryDecoders, registerEncoders, registerJsonDecoders, registerTypeDecoders, registerXmlDecoders, uaByte, uaDouble, uaFloat, uaGuid, uaInt16, uaInt32, uaInt64, uaSbyte, uaUint16, uaUint32, uaUint64 };
|
|
17998
|
+
export { ActionMethodDataType, ActionStateEnum, ActionTargetDataType, ActivateSessionRequest, ActivateSessionResponse, AddNodesItem, AddNodesRequest, AddNodesResponse, AddNodesResult, AddReferencesItem, AddReferencesRequest, AddReferencesResponse, AdditionalParametersType, AggregateConfiguration, AggregateFilter, AggregateFilterResult, AliasNameDataType, Annotation, AnnotationDataType, AnonymousIdentityToken, ApplicationConfigurationDataType, ApplicationDescription, ApplicationIdentityDataType, ApplicationTypeEnum, Argument, AttributeOperand, AuthorizationServiceConfigurationDataType, AxisInformation, AxisScaleEnumerationEnum, BaseConfigurationDataType, BaseConfigurationRecordDataType, SecureChannelTypeDecoder as BinaryDecoderTransform, SecureChannelTypeEncoder as BinaryEncoderTransform, BinaryReader, BinaryWriter, BitFieldDefinition, BrokerConnectionTransportDataType, BrokerDataSetReaderTransportDataType, BrokerDataSetWriterTransportDataType, BrokerTransportQualityOfServiceEnum, BrokerWriterGroupTransportDataType, BrowseDescription, BrowseDirectionEnum, BrowseNextRequest, BrowseNextResponse, BrowsePath, BrowsePathResult, BrowsePathTarget, BrowseRequest, BrowseResponse, BrowseResult, BrowseResultMaskEnum, BuildInfo, CallMethodRequest, CallMethodResult, CallRequest, CallResponse, CancelRequest, CancelResponse, CartesianCoordinates, CertificateGroupDataType, ChannelSecurityToken, ChassisIdSubtypeEnum, CloseSecureChannelRequest, CloseSecureChannelResponse, CloseSessionRequest, CloseSessionResponse, ComplexNumberType, Configuration, ConfigurationUpdateTargetType, ConfigurationUpdateTypeEnum, ConfigurationVersionDataType, ConnectionTransportDataType, ConsoleSink, ContentFilter, ContentFilterElement, ContentFilterElementResult, ContentFilterResult, ConversionLimitEnumEnum, CreateMonitoredItemsRequest, CreateMonitoredItemsResponse, CreateSessionRequest, CreateSessionResponse, CreateSubscriptionRequest, CreateSubscriptionResponse, CurrencyUnitType, DataChangeFilter, DataChangeNotification, DataChangeTriggerEnum, DataSetMetaDataType, DataSetOrderingTypeEnum, DataSetReaderDataType, DataSetReaderMessageDataType, DataSetReaderTransportDataType, DataSetWriterDataType, DataSetWriterMessageDataType, DataSetWriterTransportDataType, DataTypeAttributes, DataTypeDefinition, DataTypeDescription, DataTypeNode, DataTypeSchemaHeader, DataValue, DatagramConnectionTransport2DataType, DatagramConnectionTransportDataType, DatagramDataSetReaderTransportDataType, DatagramWriterGroupTransport2DataType, DatagramWriterGroupTransportDataType, DeadbandTypeEnum, DecimalDataType, Decoder, DeleteAtTimeDetails, DeleteEventDetails, DeleteMonitoredItemsRequest, DeleteMonitoredItemsResponse, DeleteNodesItem, DeleteNodesRequest, DeleteNodesResponse, DeleteRawModifiedDetails, DeleteReferencesItem, DeleteReferencesRequest, DeleteReferencesResponse, DeleteSubscriptionsRequest, DeleteSubscriptionsResponse, DiagnosticInfo, DiagnosticsLevelEnum, DiscoveryConfiguration, DoubleComplexNumberType, DtlsPubSubConnectionDataType, DuplexEnum, EUInformation, ElementOperand, Encoder, EndpointConfiguration, EndpointDataType, EndpointDescription, EndpointType, EndpointUrlListDataType, EnumDefinition, EnumDescription, EnumField, EnumValueType, EphemeralKeyType, EventFieldList, EventFilter, EventFilterResult, EventNotificationList, ExceptionDeviationFormatEnum, ExpandedNodeId, ExtensionObject, FieldMetaData, FieldTargetDataType, FilterOperand, FilterOperatorEnum, FindServersOnNetworkRequest, FindServersOnNetworkResponse, FindServersRequest, FindServersResponse, Frame, GenericAttributeValue, GenericAttributes, GetEndpointsRequest, GetEndpointsResponse, HistoryData, HistoryEvent, HistoryEventFieldList, HistoryModifiedData, HistoryModifiedEvent, HistoryReadDetails, HistoryReadRequest, HistoryReadResponse, HistoryReadResult, HistoryReadValueId, HistoryUpdateDetails, HistoryUpdateRequest, HistoryUpdateResponse, HistoryUpdateResult, HistoryUpdateTypeEnum, IdTypeEnum, IdentityCriteriaTypeEnum, IdentityMappingRuleType, InstanceNode, InterfaceAdminStatusEnum, InterfaceOperStatusEnum, IssuedIdentityToken, JsonActionMetaDataMessage, JsonActionNetworkMessage, JsonActionRequestMessage, JsonActionResponderMessage, JsonActionResponseMessage, JsonApplicationDescriptionMessage, JsonDataSetMessage, JsonDataSetMetaDataMessage, JsonDataSetReaderMessageDataType, JsonDataSetWriterMessageDataType, JsonNetworkMessage, JsonPubSubConnectionMessage, JsonServerEndpointsMessage, JsonStatusMessage, JsonWriterGroupMessageDataType, KeyValuePair, LinearConversionDataType, LiteralOperand, LldpManagementAddressTxPortType, LldpManagementAddressType, LldpTlvType, LocalizedText, LogRecordsDataType, LoggerFactory, ManAddrIfSubtypeEnum, MdnsDiscoveryConfiguration, MessageSecurityModeEnum, MethodAttributes, MethodNode, ModelChangeStructureDataType, ModelChangeStructureVerbMaskEnum, ModificationInfo, ModifyMonitoredItemsRequest, ModifyMonitoredItemsResponse, ModifySubscriptionRequest, ModifySubscriptionResponse, MonitoredItemCreateRequest, MonitoredItemCreateResult, MonitoredItemModifyRequest, MonitoredItemModifyResult, MonitoredItemNotification, MonitoringFilter, MonitoringFilterResult, MonitoringModeEnum, MonitoringParameters, NameValuePair, NamingRuleTypeEnum, NegotiationStatusEnum, NetworkAddressDataType, NetworkAddressUrlDataType, NetworkGroupDataType, Node, NodeAttributes, NodeAttributesMaskEnum, NodeClassEnum, NodeId, NodeIdType, NodeReference, NodeTypeDescription, NotificationData, NotificationMessage, ObjectAttributes, ObjectNode, ObjectTypeAttributes, ObjectTypeNode, OpenFileModeEnum, OpenSecureChannelRequest, OpenSecureChannelResponse, OptionSet, Orientation, OverrideValueHandlingEnum, ParsingResult, PerformUpdateTypeEnum, PortIdSubtypeEnum, PortableNodeId, PortableQualifiedName, PriorityMappingEntryType, ProgramDiagnostic2DataType, ProgramDiagnosticDataType, PubSubConfiguration2DataType, PubSubConfigurationDataType, PubSubConfigurationRefDataType, PubSubConfigurationValueDataType, PubSubConnectionDataType, PubSubDiagnosticsCounterClassificationEnum, PubSubGroupDataType, PubSubKeyPushTargetDataType, PubSubStateEnum, PublishRequest, PublishResponse, PublishedActionDataType, PublishedActionMethodDataType, PublishedDataItemsDataType, PublishedDataSetCustomSourceDataType, PublishedDataSetDataType, PublishedDataSetSourceDataType, PublishedEventsDataType, PublishedVariableDataType, QosDataType, QualifiedName, QuantityDimension, QueryDataDescription, QueryDataSet, QueryFirstRequest, QueryFirstResponse, QueryNextRequest, QueryNextResponse, Range, RationalNumber, ReadAnnotationDataDetails, ReadAtTimeDetails, ReadEventDetails, ReadEventDetails2, ReadEventDetailsSorted, ReadProcessedDetails, ReadRawModifiedDetails, ReadRequest, ReadResponse, ReadValueId, ReaderGroupDataType, ReaderGroupMessageDataType, ReaderGroupTransportDataType, ReceiveQosDataType, ReceiveQosPriorityDataType, RedundancySupportEnum, RedundantServerDataType, RedundantServerModeEnum, ReferenceDescription, ReferenceDescriptionDataType, ReferenceListEntryDataType, ReferenceNode, ReferenceTypeAttributes, ReferenceTypeNode, RegisterNodesRequest, RegisterNodesResponse, RegisterServer2Request, RegisterServer2Response, RegisterServerRequest, RegisterServerResponse, RegisteredServer, RelativePath, RelativePathElement, RepublishRequest, RepublishResponse, RequestHeader, ResponseHeader, RolePermissionType, SamplingIntervalDiagnosticsDataType, SecureChannelChunkReader, SecureChannelChunkWriter, SecureChannelContext, SecureChannelFacade, SecureChannelMessageDecoder, SecureChannelMessageEncoder, SecureChannelTypeDecoder, SecureChannelTypeEncoder, SecurityGroupDataType, SecuritySettingsDataType, SecurityTokenRequestTypeEnum, SemanticChangeStructureDataType, ServerDiagnosticsSummaryDataType, ServerEndpointDataType, ServerOnNetwork, ServerStateEnum, ServerStatusDataType, ServiceCertificateDataType, ServiceCounterDataType, ServiceFault, SessionDiagnosticsDataType, SessionSecurityDiagnosticsDataType, SessionlessInvokeRequestType, SessionlessInvokeResponseType, SetMonitoringModeRequest, SetMonitoringModeResponse, SetPublishingModeRequest, SetPublishingModeResponse, SetTriggeringRequest, SetTriggeringResponse, SignatureData, SignedSoftwareCertificate, SimpleAttributeOperand, SimpleTypeDescription, SortOrderTypeEnum, SortRuleElement, SpanContextDataType, StandaloneSubscribedDataSetDataType, StandaloneSubscribedDataSetRefDataType, StatusChangeNotification, StatusCode, StatusCodeGetFlagBits, StatusCodeIs, StatusCodeToString, StatusCodeToStringNumber, StatusResult, Structure, StructureDefinition, StructureDescription, StructureField, StructureTypeEnum, SubscribedDataSetDataType, SubscribedDataSetMirrorDataType, SubscriptionAcknowledgement, SubscriptionDiagnosticsDataType, TargetVariablesDataType, TcpConnectionHandler, TcpMessageDecoupler, TcpMessageInjector, TimeZoneDataType, TimestampsToReturnEnum, TraceContextDataType, TransactionErrorType, TransferResult, TransferSubscriptionsRequest, TransferSubscriptionsResponse, TranslateBrowsePathsToNodeIdsRequest, TranslateBrowsePathsToNodeIdsResponse, TransmitQosDataType, TransmitQosPriorityDataType, TrustListDataType, TrustListMasksEnum, TsnFailureCodeEnum, TsnListenerStatusEnum, TsnStreamStateEnum, TsnTalkerStatusEnum, TypeNode, UABinaryFileDataType, UadpDataSetReaderMessageDataType, UadpDataSetWriterMessageDataType, UadpWriterGroupMessageDataType, Union, UnregisterNodesRequest, UnregisterNodesResponse, UnsignedRationalNumber, UpdateDataDetails, UpdateEventDetails, UpdateStructureDataDetails, UserIdentityToken, UserManagementDataType, UserNameIdentityToken, UserTokenPolicy, UserTokenSettingsDataType, UserTokenTypeEnum, VariableAttributes, VariableNode, VariableTypeAttributes, VariableTypeNode, Variant, Vector, ViewAttributes, ViewDescription, ViewNode, WebSocketFascade, WebSocketReadableStream, WebSocketWritableStream, WriteRequest, WriteResponse, WriteValue, WriterGroupDataType, WriterGroupMessageDataType, WriterGroupTransportDataType, X509IdentityToken, XVType, XmlElement, _3DCartesianCoordinates, _3DFrame, _3DOrientation, _3DVector, getLogger, initLoggerProvider, registerBinaryDecoders, registerEncoders, registerJsonDecoders, registerTypeDecoders, registerXmlDecoders, uaByte, uaDouble, uaFloat, uaGuid, uaInt16, uaInt32, uaInt64, uaSbyte, uaUint16, uaUint32, uaUint64 };
|
|
17860
17999
|
//# sourceMappingURL=index.js.map
|
|
17861
18000
|
//# sourceMappingURL=index.js.map
|