@zlink-systems/stream-wire 0.27.0 → 0.29.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.
- package/dist/esm/index.mjs +13 -0
- package/dist/index.js +14 -0
- package/package.json +1 -1
package/dist/esm/index.mjs
CHANGED
|
@@ -166,6 +166,17 @@ function isStreamWireMessageKind(value) {
|
|
|
166
166
|
function isStreamWireCodec(value) {
|
|
167
167
|
return validCodecs.has(value);
|
|
168
168
|
}
|
|
169
|
+
function validateHeaderKindAndControl(kind, codec, flags) {
|
|
170
|
+
if (!isStreamWireMessageKind(kind)) {
|
|
171
|
+
throw new Error("Unknown stream message kind.");
|
|
172
|
+
}
|
|
173
|
+
if (!isStreamWireCodec(codec)) {
|
|
174
|
+
throw new Error("Unknown stream codec.");
|
|
175
|
+
}
|
|
176
|
+
if (kind === 5 /* Control */ && (codec !== 0 /* Raw */ || flags !== 0 /* None */)) {
|
|
177
|
+
throw new Error("Control packet must use raw codec and must not contain flags.");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
169
180
|
var UTF8_TWO_BYTE_MIN = 128;
|
|
170
181
|
var UTF8_THREE_BYTE_MIN = 2048;
|
|
171
182
|
var UTF16_HIGH_SURROGATE_MIN = 55296;
|
|
@@ -398,6 +409,7 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
398
409
|
headerFlags = hasCorrelation ? headerFlags | flags.hasCorrelationId : headerFlags & ~flags.hasCorrelationId;
|
|
399
410
|
headerFlags = hasFlow ? headerFlags | flags.hasFlowId : headerFlags & ~flags.hasFlowId;
|
|
400
411
|
headerFlags = hasActorSlot ? headerFlags | flags.hasActorSlot : headerFlags & ~flags.hasActorSlot;
|
|
412
|
+
validateHeaderKindAndControl(header.kind, header.codec, header.flags | headerFlags);
|
|
401
413
|
const metadataBytes = hasMetadata ? encodeStreamWireMetadata(header.metadata) : new Uint8Array();
|
|
402
414
|
const size = 4 + (hasRequestSeq ? UINT64_BYTES : 0) + 1 + nameBytes.length + (hasMetadata ? UINT16_BYTES + metadataBytes.length : 0) + (hasCorrelation ? 1 + correlationBytes.length : 0) + (hasFlow ? FLOW_FIELDS_BYTES : 0) + (hasActorSlot ? UINT16_BYTES : 0);
|
|
403
415
|
const buffer = new Uint8Array(size);
|
|
@@ -449,6 +461,7 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
449
461
|
const kind = header[offset++];
|
|
450
462
|
const codec = header[offset++];
|
|
451
463
|
const headerFlags = header[offset++];
|
|
464
|
+
validateHeaderKindAndControl(kind, codec, headerFlags);
|
|
452
465
|
const hasRequestSeq = (headerFlags & flags.hasRequestSeq) !== 0;
|
|
453
466
|
const hasMetadata = (headerFlags & flags.hasMetadata) !== 0;
|
|
454
467
|
const hasCorrelation = (headerFlags & flags.hasCorrelationId) !== 0;
|
package/dist/index.js
CHANGED
|
@@ -73,6 +73,18 @@ function isStreamWireMessageKind(value) {
|
|
|
73
73
|
function isStreamWireCodec(value) {
|
|
74
74
|
return validCodecs.has(value);
|
|
75
75
|
}
|
|
76
|
+
function validateHeaderKindAndControl(kind, codec, flags) {
|
|
77
|
+
if (!isStreamWireMessageKind(kind)) {
|
|
78
|
+
throw new Error('Unknown stream message kind.');
|
|
79
|
+
}
|
|
80
|
+
if (!isStreamWireCodec(codec)) {
|
|
81
|
+
throw new Error('Unknown stream codec.');
|
|
82
|
+
}
|
|
83
|
+
if (kind === ZlinkStreamMessageKind.Control &&
|
|
84
|
+
(codec !== ZlinkStreamCodec.Raw || flags !== ZlinkStreamHeaderFlags.None)) {
|
|
85
|
+
throw new Error('Control packet must use raw codec and must not contain flags.');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
76
88
|
const UTF8_TWO_BYTE_MIN = 0x80;
|
|
77
89
|
const UTF8_THREE_BYTE_MIN = 0x800;
|
|
78
90
|
const UTF16_HIGH_SURROGATE_MIN = 0xd800;
|
|
@@ -322,6 +334,7 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
322
334
|
: headerFlags & ~flags.hasCorrelationId;
|
|
323
335
|
headerFlags = hasFlow ? headerFlags | flags.hasFlowId : headerFlags & ~flags.hasFlowId;
|
|
324
336
|
headerFlags = hasActorSlot ? headerFlags | flags.hasActorSlot : headerFlags & ~flags.hasActorSlot;
|
|
337
|
+
validateHeaderKindAndControl(header.kind, header.codec, header.flags | headerFlags);
|
|
325
338
|
const metadataBytes = hasMetadata ? encodeStreamWireMetadata(header.metadata) : new Uint8Array();
|
|
326
339
|
const size = 4 +
|
|
327
340
|
(hasRequestSeq ? exports.UINT64_BYTES : 0) +
|
|
@@ -380,6 +393,7 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
380
393
|
const kind = header[offset++];
|
|
381
394
|
const codec = header[offset++];
|
|
382
395
|
const headerFlags = header[offset++];
|
|
396
|
+
validateHeaderKindAndControl(kind, codec, headerFlags);
|
|
383
397
|
const hasRequestSeq = (headerFlags & flags.hasRequestSeq) !== 0;
|
|
384
398
|
const hasMetadata = (headerFlags & flags.hasMetadata) !== 0;
|
|
385
399
|
const hasCorrelation = (headerFlags & flags.hasCorrelationId) !== 0;
|