@zlink-systems/stream-wire 0.22.0 → 0.23.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.d.ts +2 -0
- package/dist/esm/index.mjs +26 -4
- package/dist/index.d.ts +2 -0
- package/dist/index.js +28 -4
- package/package.json +1 -1
package/dist/esm/index.d.ts
CHANGED
|
@@ -19,12 +19,14 @@ export interface ZLinkStreamWireHeader {
|
|
|
19
19
|
readonly correlationId?: string;
|
|
20
20
|
readonly flowId?: string;
|
|
21
21
|
readonly flowOrigin?: number;
|
|
22
|
+
readonly actorSlot?: number;
|
|
22
23
|
}
|
|
23
24
|
export interface ZLinkStreamWireHeaderFlags {
|
|
24
25
|
readonly hasRequestSeq: number;
|
|
25
26
|
readonly hasMetadata: number;
|
|
26
27
|
readonly hasCorrelationId: number;
|
|
27
28
|
readonly hasFlowId: number;
|
|
29
|
+
readonly hasActorSlot: number;
|
|
28
30
|
}
|
|
29
31
|
export declare const ZLINK_STREAM_FORMAT_MARKER = 242;
|
|
30
32
|
export declare function encodeStreamWireFrame(header: Uint8Array, payload: Uint8Array): Uint8Array;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -120,7 +120,8 @@ var defaultHeaderFlags = {
|
|
|
120
120
|
hasRequestSeq: 1,
|
|
121
121
|
hasMetadata: 2,
|
|
122
122
|
hasCorrelationId: 8,
|
|
123
|
-
hasFlowId: 16
|
|
123
|
+
hasFlowId: 16,
|
|
124
|
+
hasActorSlot: 32
|
|
124
125
|
};
|
|
125
126
|
var ZLINK_STREAM_FORMAT_MARKER = 242;
|
|
126
127
|
var ZLINK_STREAM_RESPONSE_KIND = 3;
|
|
@@ -181,6 +182,7 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
181
182
|
}
|
|
182
183
|
const hasCorrelation = correlationBytes !== void 0;
|
|
183
184
|
const hasFlow = header.flowId !== void 0 || header.flowOrigin !== void 0;
|
|
185
|
+
const hasActorSlot = header.actorSlot !== void 0;
|
|
184
186
|
if (hasFlow && (header.flowId === void 0 || header.flowOrigin === void 0)) {
|
|
185
187
|
throw new Error("Stream flow id and origin must be provided together.");
|
|
186
188
|
}
|
|
@@ -188,13 +190,17 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
188
190
|
if (header.flowOrigin !== void 0 && ![1, 2, 3, 4].includes(header.flowOrigin)) {
|
|
189
191
|
throw new Error("Stream flow origin is invalid.");
|
|
190
192
|
}
|
|
193
|
+
if (header.actorSlot !== void 0 && (!Number.isInteger(header.actorSlot) || header.actorSlot < 1 || header.actorSlot > 65535)) {
|
|
194
|
+
throw new Error("Stream actor slot is invalid.");
|
|
195
|
+
}
|
|
191
196
|
let headerFlags = header.flags;
|
|
192
197
|
headerFlags = hasRequestSeq ? headerFlags | flags.hasRequestSeq : headerFlags & ~flags.hasRequestSeq;
|
|
193
198
|
headerFlags = hasMetadata ? headerFlags | flags.hasMetadata : headerFlags & ~flags.hasMetadata;
|
|
194
199
|
headerFlags = hasCorrelation ? headerFlags | flags.hasCorrelationId : headerFlags & ~flags.hasCorrelationId;
|
|
195
200
|
headerFlags = hasFlow ? headerFlags | flags.hasFlowId : headerFlags & ~flags.hasFlowId;
|
|
201
|
+
headerFlags = hasActorSlot ? headerFlags | flags.hasActorSlot : headerFlags & ~flags.hasActorSlot;
|
|
196
202
|
const metadataBytes = hasMetadata ? encodeStreamWireMetadata(header.metadata) : new Uint8Array();
|
|
197
|
-
const size = 4 + (hasRequestSeq ? 8 : 0) + 1 + nameBytes.length + (hasMetadata ? 2 + metadataBytes.length : 0) + (hasCorrelation ? 1 + correlationBytes.length : 0) + (hasFlow ? 37 : 0);
|
|
203
|
+
const size = 4 + (hasRequestSeq ? 8 : 0) + 1 + nameBytes.length + (hasMetadata ? 2 + metadataBytes.length : 0) + (hasCorrelation ? 1 + correlationBytes.length : 0) + (hasFlow ? 37 : 0) + (hasActorSlot ? 2 : 0);
|
|
198
204
|
const buffer = new Uint8Array(size);
|
|
199
205
|
let offset = 0;
|
|
200
206
|
buffer[offset++] = ZLINK_STREAM_FORMAT_MARKER;
|
|
@@ -227,6 +233,9 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
227
233
|
offset += 36;
|
|
228
234
|
buffer[offset++] = header.flowOrigin;
|
|
229
235
|
}
|
|
236
|
+
if (hasActorSlot) {
|
|
237
|
+
writeUInt16BE(buffer, offset, header.actorSlot);
|
|
238
|
+
}
|
|
230
239
|
return buffer;
|
|
231
240
|
}
|
|
232
241
|
function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
@@ -245,7 +254,8 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
245
254
|
const hasMetadata = (headerFlags & flags.hasMetadata) !== 0;
|
|
246
255
|
const hasCorrelation = (headerFlags & flags.hasCorrelationId) !== 0;
|
|
247
256
|
const hasFlow = (headerFlags & flags.hasFlowId) !== 0;
|
|
248
|
-
|
|
257
|
+
const hasActorSlot = (headerFlags & flags.hasActorSlot) !== 0;
|
|
258
|
+
if ((headerFlags & ~63) !== 0) {
|
|
249
259
|
throw new Error("Unknown mandatory stream header flag.");
|
|
250
260
|
}
|
|
251
261
|
let requestSeq;
|
|
@@ -300,6 +310,17 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
300
310
|
}
|
|
301
311
|
flowOrigin = includeFlow ? decodedFlowOrigin : void 0;
|
|
302
312
|
}
|
|
313
|
+
let actorSlot;
|
|
314
|
+
if (hasActorSlot) {
|
|
315
|
+
if (header.length - offset < 2) {
|
|
316
|
+
throw new Error("Stream actor slot is incomplete.");
|
|
317
|
+
}
|
|
318
|
+
actorSlot = readUInt16BE(header, offset);
|
|
319
|
+
if (actorSlot === 0) {
|
|
320
|
+
throw new Error("Stream actor slot must not be zero.");
|
|
321
|
+
}
|
|
322
|
+
offset += 2;
|
|
323
|
+
}
|
|
303
324
|
if (offset !== header.length) {
|
|
304
325
|
throw new Error("Stream header has trailing bytes.");
|
|
305
326
|
}
|
|
@@ -312,7 +333,8 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
312
333
|
metadata: decodedMetadata.metadata,
|
|
313
334
|
correlationId,
|
|
314
335
|
flowId,
|
|
315
|
-
flowOrigin
|
|
336
|
+
flowOrigin,
|
|
337
|
+
actorSlot
|
|
316
338
|
};
|
|
317
339
|
}
|
|
318
340
|
function validateFlowId(flowId) {
|
package/dist/index.d.ts
CHANGED
|
@@ -19,12 +19,14 @@ export interface ZLinkStreamWireHeader {
|
|
|
19
19
|
readonly correlationId?: string;
|
|
20
20
|
readonly flowId?: string;
|
|
21
21
|
readonly flowOrigin?: number;
|
|
22
|
+
readonly actorSlot?: number;
|
|
22
23
|
}
|
|
23
24
|
export interface ZLinkStreamWireHeaderFlags {
|
|
24
25
|
readonly hasRequestSeq: number;
|
|
25
26
|
readonly hasMetadata: number;
|
|
26
27
|
readonly hasCorrelationId: number;
|
|
27
28
|
readonly hasFlowId: number;
|
|
29
|
+
readonly hasActorSlot: number;
|
|
28
30
|
}
|
|
29
31
|
export declare const ZLINK_STREAM_FORMAT_MARKER = 242;
|
|
30
32
|
export declare function encodeStreamWireFrame(header: Uint8Array, payload: Uint8Array): Uint8Array;
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,8 @@ const defaultHeaderFlags = {
|
|
|
30
30
|
hasRequestSeq: 0x01,
|
|
31
31
|
hasMetadata: 0x02,
|
|
32
32
|
hasCorrelationId: 0x08,
|
|
33
|
-
hasFlowId: 0x10
|
|
33
|
+
hasFlowId: 0x10,
|
|
34
|
+
hasActorSlot: 0x20
|
|
34
35
|
};
|
|
35
36
|
exports.ZLINK_STREAM_FORMAT_MARKER = 0xf2;
|
|
36
37
|
const ZLINK_STREAM_RESPONSE_KIND = 3;
|
|
@@ -94,6 +95,7 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
94
95
|
}
|
|
95
96
|
const hasCorrelation = correlationBytes !== undefined;
|
|
96
97
|
const hasFlow = header.flowId !== undefined || header.flowOrigin !== undefined;
|
|
98
|
+
const hasActorSlot = header.actorSlot !== undefined;
|
|
97
99
|
if (hasFlow && (header.flowId === undefined || header.flowOrigin === undefined)) {
|
|
98
100
|
throw new Error('Stream flow id and origin must be provided together.');
|
|
99
101
|
}
|
|
@@ -102,6 +104,10 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
102
104
|
if (header.flowOrigin !== undefined && ![1, 2, 3, 4].includes(header.flowOrigin)) {
|
|
103
105
|
throw new Error('Stream flow origin is invalid.');
|
|
104
106
|
}
|
|
107
|
+
if (header.actorSlot !== undefined &&
|
|
108
|
+
(!Number.isInteger(header.actorSlot) || header.actorSlot < 1 || header.actorSlot > 0xffff)) {
|
|
109
|
+
throw new Error('Stream actor slot is invalid.');
|
|
110
|
+
}
|
|
105
111
|
let headerFlags = header.flags;
|
|
106
112
|
headerFlags = hasRequestSeq
|
|
107
113
|
? headerFlags | flags.hasRequestSeq
|
|
@@ -111,6 +117,7 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
111
117
|
? headerFlags | flags.hasCorrelationId
|
|
112
118
|
: headerFlags & ~flags.hasCorrelationId;
|
|
113
119
|
headerFlags = hasFlow ? headerFlags | flags.hasFlowId : headerFlags & ~flags.hasFlowId;
|
|
120
|
+
headerFlags = hasActorSlot ? headerFlags | flags.hasActorSlot : headerFlags & ~flags.hasActorSlot;
|
|
114
121
|
const metadataBytes = hasMetadata ? encodeStreamWireMetadata(header.metadata) : new Uint8Array();
|
|
115
122
|
const size = 4 +
|
|
116
123
|
(hasRequestSeq ? 8 : 0) +
|
|
@@ -118,7 +125,8 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
118
125
|
nameBytes.length +
|
|
119
126
|
(hasMetadata ? 2 + metadataBytes.length : 0) +
|
|
120
127
|
(hasCorrelation ? 1 + correlationBytes.length : 0) +
|
|
121
|
-
(hasFlow ? 37 : 0)
|
|
128
|
+
(hasFlow ? 37 : 0) +
|
|
129
|
+
(hasActorSlot ? 2 : 0);
|
|
122
130
|
const buffer = new Uint8Array(size);
|
|
123
131
|
let offset = 0;
|
|
124
132
|
buffer[offset++] = exports.ZLINK_STREAM_FORMAT_MARKER;
|
|
@@ -151,6 +159,9 @@ function encodeStreamWireHeader(header, flagOverrides) {
|
|
|
151
159
|
offset += 36;
|
|
152
160
|
buffer[offset++] = header.flowOrigin;
|
|
153
161
|
}
|
|
162
|
+
if (hasActorSlot) {
|
|
163
|
+
writeUInt16BE(buffer, offset, header.actorSlot);
|
|
164
|
+
}
|
|
154
165
|
return buffer;
|
|
155
166
|
}
|
|
156
167
|
function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
@@ -169,7 +180,8 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
169
180
|
const hasMetadata = (headerFlags & flags.hasMetadata) !== 0;
|
|
170
181
|
const hasCorrelation = (headerFlags & flags.hasCorrelationId) !== 0;
|
|
171
182
|
const hasFlow = (headerFlags & flags.hasFlowId) !== 0;
|
|
172
|
-
|
|
183
|
+
const hasActorSlot = (headerFlags & flags.hasActorSlot) !== 0;
|
|
184
|
+
if ((headerFlags & ~0x3f) !== 0) {
|
|
173
185
|
throw new Error('Unknown mandatory stream header flag.');
|
|
174
186
|
}
|
|
175
187
|
let requestSeq;
|
|
@@ -226,6 +238,17 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
226
238
|
}
|
|
227
239
|
flowOrigin = includeFlow ? decodedFlowOrigin : undefined;
|
|
228
240
|
}
|
|
241
|
+
let actorSlot;
|
|
242
|
+
if (hasActorSlot) {
|
|
243
|
+
if (header.length - offset < 2) {
|
|
244
|
+
throw new Error('Stream actor slot is incomplete.');
|
|
245
|
+
}
|
|
246
|
+
actorSlot = readUInt16BE(header, offset);
|
|
247
|
+
if (actorSlot === 0) {
|
|
248
|
+
throw new Error('Stream actor slot must not be zero.');
|
|
249
|
+
}
|
|
250
|
+
offset += 2;
|
|
251
|
+
}
|
|
229
252
|
if (offset !== header.length) {
|
|
230
253
|
throw new Error('Stream header has trailing bytes.');
|
|
231
254
|
}
|
|
@@ -238,7 +261,8 @@ function decodeStreamWireHeader(header, flagOverrides, includeFlow = true) {
|
|
|
238
261
|
metadata: decodedMetadata.metadata,
|
|
239
262
|
correlationId,
|
|
240
263
|
flowId,
|
|
241
|
-
flowOrigin
|
|
264
|
+
flowOrigin,
|
|
265
|
+
actorSlot
|
|
242
266
|
};
|
|
243
267
|
}
|
|
244
268
|
function validateFlowId(flowId) {
|