@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.
@@ -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;
@@ -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
- if ((headerFlags & ~31) !== 0) {
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
- if ((headerFlags & ~0x1f) !== 0) {
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zlink-systems/stream-wire",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "repository": {
6
6
  "type": "git",