@api.global/typedsocket 6.0.0 → 6.2.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.
Files changed (34) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/classes.clienttagreconciler.d.ts +51 -0
  3. package/dist_ts/classes.clienttagreconciler.js +290 -0
  4. package/dist_ts/classes.nativebyteerror.js +26 -0
  5. package/dist_ts/{nativebytes.manager.d.ts → classes.nativebytemanager.d.ts} +8 -3
  6. package/dist_ts/classes.nativebytemanager.js +2343 -0
  7. package/dist_ts/{typedsocket.classes.typedsocket.d.ts → classes.typedsocket.d.ts} +21 -21
  8. package/dist_ts/{typedsocket.classes.typedsocket.js → classes.typedsocket.js} +123 -260
  9. package/dist_ts/{typedsocket.tags.d.ts → classes.typedsockettagpolicymanager.d.ts} +9 -2
  10. package/dist_ts/classes.typedsockettagpolicymanager.js +549 -0
  11. package/dist_ts/{nativebytes.constants.js → constants.nativebytes.js} +1 -1
  12. package/dist_ts/{nativebytes.codec.d.ts → helpers.nativebytecodec.d.ts} +1 -1
  13. package/dist_ts/helpers.nativebytecodec.js +328 -0
  14. package/dist_ts/helpers.websocket.d.ts +8 -0
  15. package/dist_ts/helpers.websocket.js +13 -0
  16. package/dist_ts/index.d.ts +9 -8
  17. package/dist_ts/index.js +6 -6
  18. package/dist_ts/interfaces.diagnostics.d.ts +73 -0
  19. package/dist_ts/interfaces.diagnostics.js +2 -0
  20. package/dist_ts/{nativebytes.types.d.ts → interfaces.nativebytes.d.ts} +2 -2
  21. package/dist_ts/interfaces.nativebytes.js +2 -0
  22. package/dist_ts/plugins.js +14 -0
  23. package/package.json +1 -1
  24. package/readme.hints.md +26 -1
  25. package/readme.md +120 -55
  26. package/dist_ts/nativebytes.codec.js +0 -328
  27. package/dist_ts/nativebytes.errors.js +0 -26
  28. package/dist_ts/nativebytes.manager.js +0 -2308
  29. package/dist_ts/nativebytes.types.js +0 -2
  30. package/dist_ts/typedsocket.plugins.js +0 -14
  31. package/dist_ts/typedsocket.tags.js +0 -521
  32. /package/dist_ts/{nativebytes.errors.d.ts → classes.nativebyteerror.d.ts} +0 -0
  33. /package/dist_ts/{nativebytes.constants.d.ts → constants.nativebytes.d.ts} +0 -0
  34. /package/dist_ts/{typedsocket.plugins.d.ts → plugins.d.ts} +0 -0
@@ -0,0 +1,328 @@
1
+ import { NATIVE_BYTE_ACK_HEADER_BYTES, NATIVE_BYTE_COMMON_HEADER_BYTES, NATIVE_BYTE_DATA_HEADER_BYTES, NATIVE_BYTE_FIN_ACK_HEADER_BYTES, NATIVE_BYTE_FIN_HEADER_BYTES, NATIVE_BYTE_FRAME_MAGIC, NATIVE_BYTE_FRAME_TYPES, NATIVE_BYTE_MAX_CONTENT_TYPE_BYTES, NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES, NATIVE_BYTE_MAX_FRAME_BYTES, NATIVE_BYTE_MAX_RESET_REASON_BYTES, NATIVE_BYTE_MAX_STREAM_BYTES, NATIVE_BYTE_MAX_WINDOW_BYTES, NATIVE_BYTE_OPEN_ACK_HEADER_BYTES, NATIVE_BYTE_OPEN_FIXED_HEADER_BYTES, NATIVE_BYTE_RESET_FIXED_HEADER_BYTES, } from './constants.nativebytes.js';
2
+ import { NativeByteProtocolError } from './classes.nativebyteerror.js';
3
+ const textEncoder = new TextEncoder();
4
+ const fatalTextDecoder = new TextDecoder('utf-8', { fatal: true });
5
+ const streamIdPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
6
+ const capabilityPattern = /^[0-9a-f]{64}$/;
7
+ const sha256Pattern = /^sha256:[0-9a-f]{64}$/;
8
+ const contentTypePattern = /^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+(?:;[\x20-\x7e]+)?$/;
9
+ function decodeUtf8(bytesArg, nameArg) {
10
+ try {
11
+ return fatalTextDecoder.decode(bytesArg);
12
+ }
13
+ catch (errorArg) {
14
+ throw new NativeByteProtocolError(`${nameArg} must contain valid UTF-8`, {
15
+ cause: errorArg,
16
+ });
17
+ }
18
+ }
19
+ function assertNativeByteWindow(valueArg, nameArg) {
20
+ if (!Number.isSafeInteger(valueArg)
21
+ || valueArg <= 0
22
+ || valueArg > NATIVE_BYTE_MAX_WINDOW_BYTES) {
23
+ throw new NativeByteProtocolError(`${nameArg} must be an integer from 1 through ${NATIVE_BYTE_MAX_WINDOW_BYTES}`);
24
+ }
25
+ return valueArg;
26
+ }
27
+ export function assertNativeByteLength(valueArg, nameArg = 'byteLength') {
28
+ if (typeof valueArg !== 'number'
29
+ || !Number.isSafeInteger(valueArg)
30
+ || valueArg < 0
31
+ || valueArg > NATIVE_BYTE_MAX_STREAM_BYTES) {
32
+ throw new NativeByteProtocolError(`${nameArg} must be an integer from 0 through ${NATIVE_BYTE_MAX_STREAM_BYTES}`);
33
+ }
34
+ return valueArg;
35
+ }
36
+ export function normalizeNativeByteSha256(valueArg) {
37
+ if (typeof valueArg !== 'string' || !sha256Pattern.test(valueArg)) {
38
+ throw new NativeByteProtocolError('sha256 must use sha256:<64 lowercase hex>');
39
+ }
40
+ return valueArg;
41
+ }
42
+ export function normalizeNativeByteContentType(valueArg) {
43
+ if (typeof valueArg !== 'string'
44
+ || valueArg.length === 0
45
+ || valueArg !== valueArg.trim()
46
+ || !contentTypePattern.test(valueArg)) {
47
+ throw new NativeByteProtocolError('contentType must be a normalized nonempty media type');
48
+ }
49
+ const bytes = textEncoder.encode(valueArg);
50
+ if (bytes.byteLength > NATIVE_BYTE_MAX_CONTENT_TYPE_BYTES) {
51
+ throw new NativeByteProtocolError(`contentType must not exceed ${NATIVE_BYTE_MAX_CONTENT_TYPE_BYTES} UTF-8 bytes`);
52
+ }
53
+ return valueArg;
54
+ }
55
+ export function normalizeNativeByteStreamId(valueArg) {
56
+ if (typeof valueArg !== 'string' || !streamIdPattern.test(valueArg)) {
57
+ throw new NativeByteProtocolError('streamId must be a canonical lowercase 128-bit UUID');
58
+ }
59
+ return valueArg;
60
+ }
61
+ export function normalizeNativeByteCapability(valueArg) {
62
+ if (typeof valueArg !== 'string' || !capabilityPattern.test(valueArg)) {
63
+ throw new NativeByteProtocolError('capability must be 256 bits of lowercase hexadecimal');
64
+ }
65
+ return valueArg;
66
+ }
67
+ function bytesToHex(bytesArg) {
68
+ let result = '';
69
+ for (const value of bytesArg)
70
+ result += value.toString(16).padStart(2, '0');
71
+ return result;
72
+ }
73
+ function hexToBytes(valueArg) {
74
+ const result = new Uint8Array(valueArg.length / 2);
75
+ for (let index = 0; index < result.length; index++) {
76
+ result[index] = Number.parseInt(valueArg.slice(index * 2, index * 2 + 2), 16);
77
+ }
78
+ return result;
79
+ }
80
+ function streamIdToBytes(streamIdArg) {
81
+ return hexToBytes(normalizeNativeByteStreamId(streamIdArg).replaceAll('-', ''));
82
+ }
83
+ function bytesToStreamId(bytesArg) {
84
+ const hex = bytesToHex(bytesArg);
85
+ return normalizeNativeByteStreamId(`${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`);
86
+ }
87
+ function writeSafeU64(viewArg, offsetArg, valueArg, nameArg) {
88
+ assertNativeByteLength(valueArg, nameArg);
89
+ viewArg.setBigUint64(offsetArg, BigInt(valueArg), false);
90
+ }
91
+ function readSafeU64(viewArg, offsetArg, nameArg) {
92
+ const value = viewArg.getBigUint64(offsetArg, false);
93
+ if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
94
+ throw new NativeByteProtocolError(`${nameArg} exceeds JavaScript safe integer range`);
95
+ }
96
+ return assertNativeByteLength(Number(value), nameArg);
97
+ }
98
+ function createHeader(typeArg, streamIdArg, headerLengthArg, payloadLengthArg) {
99
+ const totalLength = headerLengthArg + payloadLengthArg;
100
+ if (totalLength > NATIVE_BYTE_MAX_FRAME_BYTES) {
101
+ throw new NativeByteProtocolError(`native-byte-v1 frame exceeds ${NATIVE_BYTE_MAX_FRAME_BYTES} bytes`);
102
+ }
103
+ const bytes = new Uint8Array(totalLength);
104
+ bytes.set(textEncoder.encode(NATIVE_BYTE_FRAME_MAGIC), 0);
105
+ const view = new DataView(bytes.buffer);
106
+ view.setUint8(4, typeArg);
107
+ view.setUint8(5, 0);
108
+ view.setUint16(6, headerLengthArg, false);
109
+ bytes.set(streamIdToBytes(streamIdArg), 8);
110
+ view.setUint32(24, payloadLengthArg, false);
111
+ view.setUint32(28, 0, false);
112
+ return { bytes, view };
113
+ }
114
+ function digestToBytes(digestArg) {
115
+ return hexToBytes(normalizeNativeByteSha256(digestArg).slice('sha256:'.length));
116
+ }
117
+ function bytesToDigest(bytesArg) {
118
+ return normalizeNativeByteSha256(`sha256:${bytesToHex(bytesArg)}`);
119
+ }
120
+ export function encodeNativeByteFrame(frameArg) {
121
+ switch (frameArg.type) {
122
+ case NATIVE_BYTE_FRAME_TYPES.OPEN: {
123
+ const contentType = normalizeNativeByteContentType(frameArg.contentType);
124
+ const contentTypeBytes = textEncoder.encode(contentType);
125
+ const headerLength = NATIVE_BYTE_OPEN_FIXED_HEADER_BYTES + contentTypeBytes.byteLength;
126
+ const { bytes, view } = createHeader(frameArg.type, frameArg.streamId, headerLength, 0);
127
+ bytes.set(hexToBytes(normalizeNativeByteCapability(frameArg.capability)), 32);
128
+ writeSafeU64(view, 64, frameArg.byteLength, 'byteLength');
129
+ writeSafeU64(view, 72, assertNativeByteWindow(frameArg.initialWindowBytes, 'initialWindowBytes'), 'initialWindowBytes');
130
+ bytes.set(digestToBytes(frameArg.sha256), 80);
131
+ view.setUint16(112, contentTypeBytes.byteLength, false);
132
+ view.setUint16(114, 0, false);
133
+ bytes.set(contentTypeBytes, NATIVE_BYTE_OPEN_FIXED_HEADER_BYTES);
134
+ return bytes;
135
+ }
136
+ case NATIVE_BYTE_FRAME_TYPES.OPEN_ACK: {
137
+ const { bytes, view } = createHeader(frameArg.type, frameArg.streamId, NATIVE_BYTE_OPEN_ACK_HEADER_BYTES, 0);
138
+ writeSafeU64(view, 32, frameArg.receiveLimitOffset, 'receiveLimitOffset');
139
+ writeSafeU64(view, 40, 0, 'reserved');
140
+ return bytes;
141
+ }
142
+ case NATIVE_BYTE_FRAME_TYPES.DATA: {
143
+ if (!(frameArg.payload instanceof Uint8Array) || frameArg.payload.byteLength === 0) {
144
+ throw new NativeByteProtocolError('DATA payload must be a nonempty Uint8Array');
145
+ }
146
+ if (frameArg.payload.byteLength > NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES) {
147
+ throw new NativeByteProtocolError(`DATA payload exceeds ${NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES} bytes`);
148
+ }
149
+ if (!Number.isSafeInteger(frameArg.sequence) || frameArg.sequence < 0 || frameArg.sequence > 0xffffffff) {
150
+ throw new NativeByteProtocolError('DATA sequence must be an unsigned 32-bit integer');
151
+ }
152
+ const { bytes, view } = createHeader(frameArg.type, frameArg.streamId, NATIVE_BYTE_DATA_HEADER_BYTES, frameArg.payload.byteLength);
153
+ view.setUint32(32, frameArg.sequence, false);
154
+ view.setUint32(36, 0, false);
155
+ writeSafeU64(view, 40, frameArg.offset, 'offset');
156
+ bytes.set(frameArg.payload, NATIVE_BYTE_DATA_HEADER_BYTES);
157
+ return bytes;
158
+ }
159
+ case NATIVE_BYTE_FRAME_TYPES.ACK: {
160
+ const { bytes, view } = createHeader(frameArg.type, frameArg.streamId, NATIVE_BYTE_ACK_HEADER_BYTES, 0);
161
+ writeSafeU64(view, 32, frameArg.acknowledgedOffset, 'acknowledgedOffset');
162
+ writeSafeU64(view, 40, frameArg.receiveLimitOffset, 'receiveLimitOffset');
163
+ return bytes;
164
+ }
165
+ case NATIVE_BYTE_FRAME_TYPES.FIN:
166
+ case NATIVE_BYTE_FRAME_TYPES.FIN_ACK: {
167
+ const headerLength = frameArg.type === NATIVE_BYTE_FRAME_TYPES.FIN
168
+ ? NATIVE_BYTE_FIN_HEADER_BYTES
169
+ : NATIVE_BYTE_FIN_ACK_HEADER_BYTES;
170
+ const { bytes, view } = createHeader(frameArg.type, frameArg.streamId, headerLength, 0);
171
+ writeSafeU64(view, 32, frameArg.byteLength, 'byteLength');
172
+ bytes.set(digestToBytes(frameArg.sha256), 40);
173
+ return bytes;
174
+ }
175
+ case NATIVE_BYTE_FRAME_TYPES.RESET: {
176
+ if (!Number.isSafeInteger(frameArg.code) || frameArg.code <= 0 || frameArg.code > 0xffff) {
177
+ throw new NativeByteProtocolError('RESET code must be a nonzero unsigned 16-bit integer');
178
+ }
179
+ if (typeof frameArg.reason !== 'string') {
180
+ throw new NativeByteProtocolError('RESET reason must be a string');
181
+ }
182
+ const reasonBytes = textEncoder.encode(frameArg.reason);
183
+ if (reasonBytes.byteLength > NATIVE_BYTE_MAX_RESET_REASON_BYTES) {
184
+ throw new NativeByteProtocolError(`RESET reason exceeds ${NATIVE_BYTE_MAX_RESET_REASON_BYTES} UTF-8 bytes`);
185
+ }
186
+ const headerLength = NATIVE_BYTE_RESET_FIXED_HEADER_BYTES + reasonBytes.byteLength;
187
+ const { bytes, view } = createHeader(frameArg.type, frameArg.streamId, headerLength, 0);
188
+ view.setUint16(32, frameArg.code, false);
189
+ view.setUint16(34, reasonBytes.byteLength, false);
190
+ view.setUint32(36, 0, false);
191
+ bytes.set(reasonBytes, NATIVE_BYTE_RESET_FIXED_HEADER_BYTES);
192
+ return bytes;
193
+ }
194
+ }
195
+ }
196
+ function assertExactHeaderAndPayload(headerLengthArg, expectedHeaderLengthArg, payloadLengthArg, expectedPayloadLengthArg) {
197
+ if (headerLengthArg !== expectedHeaderLengthArg || payloadLengthArg !== expectedPayloadLengthArg) {
198
+ throw new NativeByteProtocolError('frame has an invalid header or payload length');
199
+ }
200
+ }
201
+ export function decodeNativeByteFrame(bytesArg) {
202
+ if (!(bytesArg instanceof Uint8Array)) {
203
+ throw new NativeByteProtocolError('frame must be a Uint8Array');
204
+ }
205
+ if (bytesArg.byteLength < NATIVE_BYTE_COMMON_HEADER_BYTES || bytesArg.byteLength > NATIVE_BYTE_MAX_FRAME_BYTES) {
206
+ throw new NativeByteProtocolError('frame length is outside native-byte-v1 bounds');
207
+ }
208
+ if (decodeUtf8(bytesArg.subarray(0, 4), 'frame magic') !== NATIVE_BYTE_FRAME_MAGIC) {
209
+ throw new NativeByteProtocolError('frame magic is not TSB1');
210
+ }
211
+ const view = new DataView(bytesArg.buffer, bytesArg.byteOffset, bytesArg.byteLength);
212
+ const type = view.getUint8(4);
213
+ if (view.getUint8(5) !== 0 || view.getUint32(28, false) !== 0) {
214
+ throw new NativeByteProtocolError('frame contains nonzero reserved flags or bytes');
215
+ }
216
+ const headerLength = view.getUint16(6, false);
217
+ const payloadLength = view.getUint32(24, false);
218
+ if (headerLength < NATIVE_BYTE_COMMON_HEADER_BYTES
219
+ || headerLength > bytesArg.byteLength
220
+ || headerLength + payloadLength !== bytesArg.byteLength) {
221
+ throw new NativeByteProtocolError('frame length fields do not match the WebSocket message');
222
+ }
223
+ const streamId = bytesToStreamId(bytesArg.subarray(8, 24));
224
+ switch (type) {
225
+ case NATIVE_BYTE_FRAME_TYPES.OPEN: {
226
+ if (headerLength < NATIVE_BYTE_OPEN_FIXED_HEADER_BYTES || payloadLength !== 0) {
227
+ throw new NativeByteProtocolError('OPEN frame has invalid lengths');
228
+ }
229
+ if (view.getUint16(114, false) !== 0) {
230
+ throw new NativeByteProtocolError('OPEN frame contains nonzero reserved bytes');
231
+ }
232
+ const contentTypeLength = view.getUint16(112, false);
233
+ if (contentTypeLength === 0
234
+ || contentTypeLength > NATIVE_BYTE_MAX_CONTENT_TYPE_BYTES
235
+ || headerLength !== NATIVE_BYTE_OPEN_FIXED_HEADER_BYTES + contentTypeLength) {
236
+ throw new NativeByteProtocolError('OPEN contentType length is invalid');
237
+ }
238
+ const frame = {
239
+ type,
240
+ streamId,
241
+ capability: normalizeNativeByteCapability(bytesToHex(bytesArg.subarray(32, 64))),
242
+ byteLength: readSafeU64(view, 64, 'byteLength'),
243
+ initialWindowBytes: assertNativeByteWindow(readSafeU64(view, 72, 'initialWindowBytes'), 'initialWindowBytes'),
244
+ sha256: bytesToDigest(bytesArg.subarray(80, 112)),
245
+ contentType: normalizeNativeByteContentType(decodeUtf8(bytesArg.subarray(NATIVE_BYTE_OPEN_FIXED_HEADER_BYTES, headerLength), 'OPEN contentType')),
246
+ };
247
+ return frame;
248
+ }
249
+ case NATIVE_BYTE_FRAME_TYPES.OPEN_ACK: {
250
+ assertExactHeaderAndPayload(headerLength, NATIVE_BYTE_OPEN_ACK_HEADER_BYTES, payloadLength, 0);
251
+ if (readSafeU64(view, 40, 'reserved') !== 0) {
252
+ throw new NativeByteProtocolError('OPEN_ACK contains nonzero reserved bytes');
253
+ }
254
+ const frame = {
255
+ type,
256
+ streamId,
257
+ receiveLimitOffset: readSafeU64(view, 32, 'receiveLimitOffset'),
258
+ };
259
+ return frame;
260
+ }
261
+ case NATIVE_BYTE_FRAME_TYPES.DATA: {
262
+ if (headerLength !== NATIVE_BYTE_DATA_HEADER_BYTES
263
+ || payloadLength === 0
264
+ || payloadLength > NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES) {
265
+ throw new NativeByteProtocolError('DATA frame has invalid lengths');
266
+ }
267
+ if (view.getUint32(36, false) !== 0) {
268
+ throw new NativeByteProtocolError('DATA contains nonzero reserved bytes');
269
+ }
270
+ const frame = {
271
+ type,
272
+ streamId,
273
+ sequence: view.getUint32(32, false),
274
+ offset: readSafeU64(view, 40, 'offset'),
275
+ payload: bytesArg.subarray(headerLength),
276
+ };
277
+ return frame;
278
+ }
279
+ case NATIVE_BYTE_FRAME_TYPES.ACK: {
280
+ assertExactHeaderAndPayload(headerLength, NATIVE_BYTE_ACK_HEADER_BYTES, payloadLength, 0);
281
+ const frame = {
282
+ type,
283
+ streamId,
284
+ acknowledgedOffset: readSafeU64(view, 32, 'acknowledgedOffset'),
285
+ receiveLimitOffset: readSafeU64(view, 40, 'receiveLimitOffset'),
286
+ };
287
+ return frame;
288
+ }
289
+ case NATIVE_BYTE_FRAME_TYPES.FIN:
290
+ case NATIVE_BYTE_FRAME_TYPES.FIN_ACK: {
291
+ const expectedHeader = type === NATIVE_BYTE_FRAME_TYPES.FIN
292
+ ? NATIVE_BYTE_FIN_HEADER_BYTES
293
+ : NATIVE_BYTE_FIN_ACK_HEADER_BYTES;
294
+ assertExactHeaderAndPayload(headerLength, expectedHeader, payloadLength, 0);
295
+ const byteLength = readSafeU64(view, 32, 'byteLength');
296
+ const sha256 = bytesToDigest(bytesArg.subarray(40, 72));
297
+ if (type === NATIVE_BYTE_FRAME_TYPES.FIN) {
298
+ const frame = { type, streamId, byteLength, sha256 };
299
+ return frame;
300
+ }
301
+ const frame = { type, streamId, byteLength, sha256 };
302
+ return frame;
303
+ }
304
+ case NATIVE_BYTE_FRAME_TYPES.RESET: {
305
+ if (headerLength < NATIVE_BYTE_RESET_FIXED_HEADER_BYTES || payloadLength !== 0) {
306
+ throw new NativeByteProtocolError('RESET frame has invalid lengths');
307
+ }
308
+ const code = view.getUint16(32, false);
309
+ const reasonLength = view.getUint16(34, false);
310
+ if (code === 0
311
+ || view.getUint32(36, false) !== 0
312
+ || reasonLength > NATIVE_BYTE_MAX_RESET_REASON_BYTES
313
+ || headerLength !== NATIVE_BYTE_RESET_FIXED_HEADER_BYTES + reasonLength) {
314
+ throw new NativeByteProtocolError('RESET frame has invalid code, reserved bytes, or reason length');
315
+ }
316
+ const frame = {
317
+ type,
318
+ streamId,
319
+ code,
320
+ reason: decodeUtf8(bytesArg.subarray(NATIVE_BYTE_RESET_FIXED_HEADER_BYTES, headerLength), 'RESET reason'),
321
+ };
322
+ return frame;
323
+ }
324
+ default:
325
+ throw new NativeByteProtocolError(`unknown native-byte-v1 frame type ${type}`);
326
+ }
327
+ }
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5uYXRpdmVieXRlY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9oZWxwZXJzLm5hdGl2ZWJ5dGVjb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQiw2QkFBNkIsRUFDN0IsZ0NBQWdDLEVBQ2hDLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGlDQUFpQyxFQUNqQyxtQ0FBbUMsRUFDbkMsb0NBQW9DLEdBQ3JDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFZdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUN0QyxNQUFNLGdCQUFnQixHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sZUFBZSxHQUFHLGdFQUFnRSxDQUFDO0FBQ3pGLE1BQU0saUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7QUFDM0MsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyw0REFBNEQsQ0FBQztBQUV4RixTQUFTLFVBQVUsQ0FBQyxRQUFvQixFQUFFLE9BQWU7SUFDdkQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUFDLE9BQU8sUUFBUSxFQUFFLENBQUM7UUFDbEIsTUFBTSxJQUFJLHVCQUF1QixDQUFDLEdBQUcsT0FBTywyQkFBMkIsRUFBRTtZQUN2RSxLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDLENB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
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The WebSocket JS API only permits close codes 1000 and 3000-4999 from
3
+ * close(); protocol-range invariant codes are mirrored into the application
4
+ * range (1009 -> 4009) so client-initiated closes cannot throw. Server-side
5
+ * peer closes keep the protocol codes, and diagnostics always report the
6
+ * semantic protocol code.
7
+ */
8
+ export declare function toClientWebSocketCloseCode(codeArg: number): number;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The WebSocket JS API only permits close codes 1000 and 3000-4999 from
3
+ * close(); protocol-range invariant codes are mirrored into the application
4
+ * range (1009 -> 4009) so client-initiated closes cannot throw. Server-side
5
+ * peer closes keep the protocol codes, and diagnostics always report the
6
+ * semantic protocol code.
7
+ */
8
+ export function toClientWebSocketCloseCode(codeArg) {
9
+ return codeArg === 1000 || (codeArg >= 3000 && codeArg <= 4999)
10
+ ? codeArg
11
+ : 3000 + codeArg;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy53ZWJzb2NrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9oZWxwZXJzLndlYnNvY2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsT0FBZTtJQUN4RCxPQUFPLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFDN0QsQ0FBQyxDQUFDLE9BQU87UUFDVCxDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUNyQixDQUFDIn0=
@@ -1,8 +1,9 @@
1
- export * from './typedsocket.classes.typedsocket.js';
2
- export { NATIVE_BYTE_PROTOCOL, NATIVE_BYTE_PROTOCOL_MAJOR, NATIVE_BYTE_MAX_FRAME_BYTES, NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES, NATIVE_BYTE_MAX_STREAM_BYTES, NATIVE_BYTE_DEFAULT_INITIAL_WINDOW_BYTES, NATIVE_BYTE_MAX_WINDOW_BYTES, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_STREAM, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_CONNECTION, NATIVE_BYTE_MAX_RECEIVE_QUEUE_CHUNKS, NATIVE_BYTE_MAX_STREAMS_PER_CONNECTION, NATIVE_BYTE_MAX_PENDING_DATA_OPERATIONS_PER_CONNECTION, NATIVE_BYTE_MAX_RAW_QUEUE_FRAMES, NATIVE_BYTE_MAX_RAW_QUEUE_BYTES, NATIVE_BYTE_GRANT_OPEN_TIMEOUT_MS, NATIVE_BYTE_PROGRESS_TIMEOUT_MS, NATIVE_BYTE_TOMBSTONE_RETENTION_MS, NATIVE_BYTE_MAX_TOMBSTONES, NATIVE_BYTE_MAX_PRINCIPAL_ID_BYTES, NATIVE_BYTE_MAX_AUTHORITY_REVISION_BYTES, NATIVE_BYTE_REVALIDATION_TIMEOUT_MS, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PEER, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PRINCIPAL, NATIVE_BYTE_MAX_REVALIDATIONS_PER_SERVER, NATIVE_BYTE_MAX_CONNECTIONS_PER_SERVER, NATIVE_BYTE_MAX_STREAMS_PER_SERVER, NATIVE_BYTE_MAX_RETAINED_BYTES_PER_SERVER, } from './nativebytes.constants.js';
3
- export type { TNativeByteCapabilityMode, TNativeByteRole, TNativeByteAuthorityOperation, INativeByteDescriptorTransport, INativeByteDescriptor, INativeByteReceipt, INativeByteAuthorizationBinding, INativeByteAuthorizationContext, INativeByteAuthorizationAdapter, INativeByteCreateVirtualStreamOptions, INativeByteAuthorityRevisions, TNativeByteConnectionBinding, INativeByteRevalidationContext, TNativeByteRevalidate, INativeByteCreateReceiveGrantOptions, INativeByteOpenSenderOptions, INativeByteReceiveGrant, INativeByteReceiverLike, INativeByteSenderLike, INativeByteCapabilityStatus, INativeByteStats, INativeByteRuntime, } from './nativebytes.types.js';
4
- export * from './nativebytes.errors.js';
5
- export { NativeByteManager, NativeByteReceiver, NativeByteSender, } from './nativebytes.manager.js';
6
- export type { INativeByteManagerOptions } from './nativebytes.manager.js';
7
- export { TYPEDSOCKET_MAX_TAG_NAME_BYTES, TYPEDSOCKET_MAX_TAG_PAYLOAD_BYTES, TYPEDSOCKET_MAX_CLIENT_TAGS_PER_PEER, TYPEDSOCKET_MAX_CLIENT_TAG_RETAINED_BYTES_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_RULE, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_SERVER, TYPEDSOCKET_MAX_TAG_AUTHORIZATION_TIMEOUT_MS, TYPEDSOCKET_MAX_SERVER_TAG_NAMES_PER_PEER, TYPEDSOCKET_MAX_SERVER_TAG_RETAINED_BYTES_PER_PEER, TypedSocketClientTagDeniedError, } from './typedsocket.tags.js';
8
- export type { TTypedSocketTagOwner, TTypedSocketTagMutationOperation, TTypedSocketTagDenialCode, ITypedSocketTagConnectionAuthority, ITypedSocketClientTagExistingState, ITypedSocketClientTagValidationContext, ITypedSocketClientTagRule, ITypedSocketClientTagPolicy, ITypedSocketTagMutationSuccess, ITypedSocketTagMutationDenial, TTypedSocketTagMutationResponse, } from './typedsocket.tags.js';
1
+ export * from './classes.typedsocket.js';
2
+ export { NATIVE_BYTE_PROTOCOL, NATIVE_BYTE_PROTOCOL_MAJOR, NATIVE_BYTE_MAX_FRAME_BYTES, NATIVE_BYTE_MAX_CONTENT_TYPE_BYTES, NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES, NATIVE_BYTE_MAX_STREAM_BYTES, NATIVE_BYTE_DEFAULT_INITIAL_WINDOW_BYTES, NATIVE_BYTE_MAX_WINDOW_BYTES, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_STREAM, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_CONNECTION, NATIVE_BYTE_MAX_RECEIVE_QUEUE_CHUNKS, NATIVE_BYTE_MAX_STREAMS_PER_CONNECTION, NATIVE_BYTE_MAX_PENDING_DATA_OPERATIONS_PER_CONNECTION, NATIVE_BYTE_MAX_RAW_QUEUE_FRAMES, NATIVE_BYTE_MAX_RAW_QUEUE_BYTES, NATIVE_BYTE_GRANT_OPEN_TIMEOUT_MS, NATIVE_BYTE_PROGRESS_TIMEOUT_MS, NATIVE_BYTE_TOMBSTONE_RETENTION_MS, NATIVE_BYTE_MAX_TOMBSTONES, NATIVE_BYTE_MAX_PRINCIPAL_ID_BYTES, NATIVE_BYTE_MAX_AUTHORITY_REVISION_BYTES, NATIVE_BYTE_REVALIDATION_TIMEOUT_MS, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PEER, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PRINCIPAL, NATIVE_BYTE_MAX_REVALIDATIONS_PER_SERVER, NATIVE_BYTE_MAX_CONNECTIONS_PER_SERVER, NATIVE_BYTE_MAX_STREAMS_PER_SERVER, NATIVE_BYTE_MAX_RETAINED_BYTES_PER_SERVER, } from './constants.nativebytes.js';
3
+ export type { TNativeByteCapabilityMode, TNativeByteRole, TNativeByteAuthorityOperation, INativeByteDescriptorTransport, INativeByteDescriptor, INativeByteReceipt, INativeByteAuthorizationBinding, INativeByteAuthorizationContext, INativeByteAuthorizationAdapter, INativeByteCreateVirtualStreamOptions, INativeByteAuthorityRevisions, TNativeByteConnectionBinding, INativeByteRevalidationContext, TNativeByteRevalidate, INativeByteCreateReceiveGrantOptions, INativeByteOpenSenderOptions, INativeByteReceiveGrant, INativeByteReceiverLike, INativeByteSenderLike, INativeByteCapabilityStatus, INativeByteStats, INativeByteRuntime, } from './interfaces.nativebytes.js';
4
+ export * from './classes.nativebyteerror.js';
5
+ export { NativeByteManager, NativeByteReceiver, NativeByteSender, } from './classes.nativebytemanager.js';
6
+ export type { INativeByteManagerOptions } from './classes.nativebytemanager.js';
7
+ export { TYPEDSOCKET_MAX_TAG_NAME_BYTES, TYPEDSOCKET_MAX_TAG_PAYLOAD_BYTES, TYPEDSOCKET_MAX_CLIENT_TAGS_PER_PEER, TYPEDSOCKET_MAX_CLIENT_TAG_RETAINED_BYTES_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_RULE, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_SERVER, TYPEDSOCKET_MAX_TAG_AUTHORIZATION_TIMEOUT_MS, TYPEDSOCKET_MAX_SERVER_TAG_NAMES_PER_PEER, TYPEDSOCKET_MAX_SERVER_TAG_RETAINED_BYTES_PER_PEER, TYPEDSOCKET_TAG_DENIAL_CODES, TypedSocketClientTagDeniedError, } from './classes.typedsockettagpolicymanager.js';
8
+ export type { TTypedSocketDiagnosticSide, TTypedSocketDiagnosticEvent, TNativeByteDiagnosticEvent, ITypedSocketConnectionClosedDiagnostic, ITypedSocketPeerRejectedDiagnostic, ITypedSocketReconnectScheduledDiagnostic, ITypedSocketReconnectExhaustedDiagnostic, ITypedSocketTagMutationDeniedDiagnostic, ITypedSocketImplicitTargetingDiagnostic, } from './interfaces.diagnostics.js';
9
+ export type { TTypedSocketTagOwner, TTypedSocketTagMutationOperation, TTypedSocketTagDenialCode, ITypedSocketTagConnectionAuthority, ITypedSocketClientTagExistingState, ITypedSocketClientTagValidationContext, ITypedSocketClientTagRule, ITypedSocketClientTagPolicy, ITypedSocketTagMutationSuccess, ITypedSocketTagMutationDenial, TTypedSocketTagMutationResponse, } from './classes.typedsockettagpolicymanager.js';
package/dist_ts/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export * from './typedsocket.classes.typedsocket.js';
2
- export { NATIVE_BYTE_PROTOCOL, NATIVE_BYTE_PROTOCOL_MAJOR, NATIVE_BYTE_MAX_FRAME_BYTES, NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES, NATIVE_BYTE_MAX_STREAM_BYTES, NATIVE_BYTE_DEFAULT_INITIAL_WINDOW_BYTES, NATIVE_BYTE_MAX_WINDOW_BYTES, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_STREAM, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_CONNECTION, NATIVE_BYTE_MAX_RECEIVE_QUEUE_CHUNKS, NATIVE_BYTE_MAX_STREAMS_PER_CONNECTION, NATIVE_BYTE_MAX_PENDING_DATA_OPERATIONS_PER_CONNECTION, NATIVE_BYTE_MAX_RAW_QUEUE_FRAMES, NATIVE_BYTE_MAX_RAW_QUEUE_BYTES, NATIVE_BYTE_GRANT_OPEN_TIMEOUT_MS, NATIVE_BYTE_PROGRESS_TIMEOUT_MS, NATIVE_BYTE_TOMBSTONE_RETENTION_MS, NATIVE_BYTE_MAX_TOMBSTONES, NATIVE_BYTE_MAX_PRINCIPAL_ID_BYTES, NATIVE_BYTE_MAX_AUTHORITY_REVISION_BYTES, NATIVE_BYTE_REVALIDATION_TIMEOUT_MS, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PEER, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PRINCIPAL, NATIVE_BYTE_MAX_REVALIDATIONS_PER_SERVER, NATIVE_BYTE_MAX_CONNECTIONS_PER_SERVER, NATIVE_BYTE_MAX_STREAMS_PER_SERVER, NATIVE_BYTE_MAX_RETAINED_BYTES_PER_SERVER, } from './nativebytes.constants.js';
3
- export * from './nativebytes.errors.js';
4
- export { NativeByteManager, NativeByteReceiver, NativeByteSender, } from './nativebytes.manager.js';
5
- export { TYPEDSOCKET_MAX_TAG_NAME_BYTES, TYPEDSOCKET_MAX_TAG_PAYLOAD_BYTES, TYPEDSOCKET_MAX_CLIENT_TAGS_PER_PEER, TYPEDSOCKET_MAX_CLIENT_TAG_RETAINED_BYTES_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_RULE, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_SERVER, TYPEDSOCKET_MAX_TAG_AUTHORIZATION_TIMEOUT_MS, TYPEDSOCKET_MAX_SERVER_TAG_NAMES_PER_PEER, TYPEDSOCKET_MAX_SERVER_TAG_RETAINED_BYTES_PER_PEER, TypedSocketClientTagDeniedError, } from './typedsocket.tags.js';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsNEJBQTRCLEVBQzVCLHdDQUF3QyxFQUN4Qyw0QkFBNEIsRUFDNUIsK0NBQStDLEVBQy9DLG1EQUFtRCxFQUNuRCxvQ0FBb0MsRUFDcEMsc0NBQXNDLEVBQ3RDLHNEQUFzRCxFQUN0RCxnQ0FBZ0MsRUFDaEMsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDL0Isa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMxQixrQ0FBa0MsRUFDbEMsd0NBQXdDLEVBQ3hDLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsMkNBQTJDLEVBQzNDLHdDQUF3QyxFQUN4QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHlDQUF5QyxHQUMxQyxNQUFNLDRCQUE0QixDQUFDO0FBeUJwQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGdCQUFnQixHQUNqQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsaUNBQWlDLEVBQ2pDLG9DQUFvQyxFQUNwQyxrREFBa0QsRUFDbEQsK0NBQStDLEVBQy9DLCtDQUErQyxFQUMvQyxpREFBaUQsRUFDakQsNENBQTRDLEVBQzVDLHlDQUF5QyxFQUN6QyxrREFBa0QsRUFDbEQsK0JBQStCLEdBQ2hDLE1BQU0sdUJBQXVCLENBQUMifQ==
1
+ export * from './classes.typedsocket.js';
2
+ export { NATIVE_BYTE_PROTOCOL, NATIVE_BYTE_PROTOCOL_MAJOR, NATIVE_BYTE_MAX_FRAME_BYTES, NATIVE_BYTE_MAX_CONTENT_TYPE_BYTES, NATIVE_BYTE_MAX_DATA_PAYLOAD_BYTES, NATIVE_BYTE_MAX_STREAM_BYTES, NATIVE_BYTE_DEFAULT_INITIAL_WINDOW_BYTES, NATIVE_BYTE_MAX_WINDOW_BYTES, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_STREAM, NATIVE_BYTE_MAX_QUEUED_PAYLOAD_BYTES_PER_CONNECTION, NATIVE_BYTE_MAX_RECEIVE_QUEUE_CHUNKS, NATIVE_BYTE_MAX_STREAMS_PER_CONNECTION, NATIVE_BYTE_MAX_PENDING_DATA_OPERATIONS_PER_CONNECTION, NATIVE_BYTE_MAX_RAW_QUEUE_FRAMES, NATIVE_BYTE_MAX_RAW_QUEUE_BYTES, NATIVE_BYTE_GRANT_OPEN_TIMEOUT_MS, NATIVE_BYTE_PROGRESS_TIMEOUT_MS, NATIVE_BYTE_TOMBSTONE_RETENTION_MS, NATIVE_BYTE_MAX_TOMBSTONES, NATIVE_BYTE_MAX_PRINCIPAL_ID_BYTES, NATIVE_BYTE_MAX_AUTHORITY_REVISION_BYTES, NATIVE_BYTE_REVALIDATION_TIMEOUT_MS, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PEER, NATIVE_BYTE_MAX_REVALIDATIONS_PER_PRINCIPAL, NATIVE_BYTE_MAX_REVALIDATIONS_PER_SERVER, NATIVE_BYTE_MAX_CONNECTIONS_PER_SERVER, NATIVE_BYTE_MAX_STREAMS_PER_SERVER, NATIVE_BYTE_MAX_RETAINED_BYTES_PER_SERVER, } from './constants.nativebytes.js';
3
+ export * from './classes.nativebyteerror.js';
4
+ export { NativeByteManager, NativeByteReceiver, NativeByteSender, } from './classes.nativebytemanager.js';
5
+ export { TYPEDSOCKET_MAX_TAG_NAME_BYTES, TYPEDSOCKET_MAX_TAG_PAYLOAD_BYTES, TYPEDSOCKET_MAX_CLIENT_TAGS_PER_PEER, TYPEDSOCKET_MAX_CLIENT_TAG_RETAINED_BYTES_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_PEER, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_RULE, TYPEDSOCKET_MAX_RETAINED_TAG_MUTATIONS_PER_SERVER, TYPEDSOCKET_MAX_TAG_AUTHORIZATION_TIMEOUT_MS, TYPEDSOCKET_MAX_SERVER_TAG_NAMES_PER_PEER, TYPEDSOCKET_MAX_SERVER_TAG_RETAINED_BYTES_PER_PEER, TYPEDSOCKET_TAG_DENIAL_CODES, TypedSocketClientTagDeniedError, } from './classes.typedsockettagpolicymanager.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLDRCQUE0QixFQUM1Qix3Q0FBd0MsRUFDeEMsNEJBQTRCLEVBQzVCLCtDQUErQyxFQUMvQyxtREFBbUQsRUFDbkQsb0NBQW9DLEVBQ3BDLHNDQUFzQyxFQUN0QyxzREFBc0QsRUFDdEQsZ0NBQWdDLEVBQ2hDLCtCQUErQixFQUMvQixpQ0FBaUMsRUFDakMsK0JBQStCLEVBQy9CLGtDQUFrQyxFQUNsQywwQkFBMEIsRUFDMUIsa0NBQWtDLEVBQ2xDLHdDQUF3QyxFQUN4QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLDJDQUEyQyxFQUMzQyx3Q0FBd0MsRUFDeEMsc0NBQXNDLEVBQ3RDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsR0FDMUMsTUFBTSw0QkFBNEIsQ0FBQztBQXlCcEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLGlDQUFpQyxFQUNqQyxvQ0FBb0MsRUFDcEMsa0RBQWtELEVBQ2xELCtDQUErQyxFQUMvQywrQ0FBK0MsRUFDL0MsaURBQWlELEVBQ2pELDRDQUE0QyxFQUM1Qyx5Q0FBeUMsRUFDekMsa0RBQWtELEVBQ2xELDRCQUE0QixFQUM1QiwrQkFBK0IsR0FDaEMsTUFBTSwwQ0FBMEMsQ0FBQyJ9
@@ -0,0 +1,73 @@
1
+ import type { TTypedSocketTagDenialCode } from './classes.typedsockettagpolicymanager.js';
2
+ export type TTypedSocketDiagnosticSide = 'client' | 'server';
3
+ /**
4
+ * A transport connection was closed by this package because a bounded
5
+ * invariant was violated. `reason` is always a static package-defined string;
6
+ * `errorCode` carries the bounded NativeByteError code on 1011 failures.
7
+ */
8
+ export interface ITypedSocketConnectionClosedDiagnostic {
9
+ readonly kind: 'connectionClosed';
10
+ readonly side: TTypedSocketDiagnosticSide;
11
+ readonly scope: 'text' | 'nativeByte';
12
+ readonly closeCode: number;
13
+ readonly reason: string;
14
+ readonly errorCode?: string;
15
+ }
16
+ /**
17
+ * A server peer was rejected before any native-byte connection state existed
18
+ * for it (admission capacity, or a post-negotiation capability race).
19
+ */
20
+ export interface ITypedSocketPeerRejectedDiagnostic {
21
+ readonly kind: 'peerRejected';
22
+ readonly side: 'server';
23
+ readonly closeCode: number;
24
+ readonly reason: string;
25
+ }
26
+ /**
27
+ * A client reconnect attempt was scheduled. `endpoint` is redacted to
28
+ * protocol and host; paths, queries, and credentials never appear.
29
+ */
30
+ export interface ITypedSocketReconnectScheduledDiagnostic {
31
+ readonly kind: 'reconnectScheduled';
32
+ readonly side: 'client';
33
+ readonly attempt: number;
34
+ readonly maxRetries: number;
35
+ readonly delayMs: number;
36
+ readonly endpoint: string;
37
+ }
38
+ /**
39
+ * Automatic reconnection gave up while the socket was neither stopped nor
40
+ * aborted. Emitted at most once per exhausted reconnect sequence; the flag
41
+ * resets when a later connection succeeds.
42
+ */
43
+ export interface ITypedSocketReconnectExhaustedDiagnostic {
44
+ readonly kind: 'reconnectExhausted';
45
+ readonly side: 'client';
46
+ readonly attempts: number;
47
+ readonly endpoint: string;
48
+ }
49
+ /**
50
+ * A client tag mutation was denied. On servers this reports denials issued to
51
+ * remote clients; on clients it reports denials received or raised locally.
52
+ * `name` is included only when it is a valid bounded tag name, otherwise ''.
53
+ */
54
+ export interface ITypedSocketTagMutationDeniedDiagnostic {
55
+ readonly kind: 'tagMutationDenied';
56
+ readonly side: TTypedSocketDiagnosticSide;
57
+ readonly operation: 'set' | 'remove';
58
+ readonly name: string;
59
+ readonly code: TTypedSocketTagDenialCode;
60
+ }
61
+ /**
62
+ * A server-side TypedRequest resolved its target implicitly because exactly
63
+ * one connection was attached. Deprecated behavior slated for removal in the
64
+ * next major; emitted at most once per TypedRequest object.
65
+ */
66
+ export interface ITypedSocketImplicitTargetingDiagnostic {
67
+ readonly kind: 'implicitTargetingUsed';
68
+ readonly side: 'server';
69
+ readonly method: string;
70
+ }
71
+ export type TTypedSocketDiagnosticEvent = ITypedSocketConnectionClosedDiagnostic | ITypedSocketPeerRejectedDiagnostic | ITypedSocketReconnectScheduledDiagnostic | ITypedSocketReconnectExhaustedDiagnostic | ITypedSocketTagMutationDeniedDiagnostic | ITypedSocketImplicitTargetingDiagnostic;
72
+ /** The subset of diagnostic events a NativeByteManager can emit. */
73
+ export type TNativeByteDiagnosticEvent = ITypedSocketConnectionClosedDiagnostic | ITypedSocketPeerRejectedDiagnostic;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kaWFnbm9zdGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2ludGVyZmFjZXMuZGlhZ25vc3RpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,5 +1,5 @@
1
- import type * as plugins from './typedsocket.plugins.js';
2
- import type { NATIVE_BYTE_FRAME_TYPES, NATIVE_BYTE_PROTOCOL } from './nativebytes.constants.js';
1
+ import type * as plugins from './plugins.js';
2
+ import type { NATIVE_BYTE_FRAME_TYPES, NATIVE_BYTE_PROTOCOL } from './constants.nativebytes.js';
3
3
  export type TNativeByteCapabilityMode = 'disabled' | 'optional' | 'required';
4
4
  export type TNativeByteRole = 'producer' | 'consumer';
5
5
  export type TNativeByteAuthorityOperation = 'open' | 'data' | 'fin' | 'confirm' | 'reject';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5uYXRpdmVieXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2ludGVyZmFjZXMubmF0aXZlYnl0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,14 @@
1
+ // @apiglobal scope
2
+ import * as typedrequest from '@api.global/typedrequest';
3
+ import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
4
+ export { typedrequest, typedrequestInterfaces };
5
+ // @pushrocks scope
6
+ import * as smartdelay from '@push.rocks/smartdelay';
7
+ import * as smarthash from '@push.rocks/smarthash/web';
8
+ import * as smartjson from '@push.rocks/smartjson';
9
+ import * as smartpromise from '@push.rocks/smartpromise';
10
+ import * as smartrx from '@push.rocks/smartrx';
11
+ import * as smartstring from '@push.rocks/smartstring';
12
+ import * as smarturl from '@push.rocks/smarturl';
13
+ export { smartdelay, smarthash, smartjson, smartpromise, smartrx, smartstring, smarturl };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxZQUFZLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxLQUFLLHNCQUFzQixNQUFNLHFDQUFxQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztBQUVoRCxtQkFBbUI7QUFDbkIsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssU0FBUyxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@api.global/typedsocket",
3
- "version": "6.0.0",
3
+ "version": "6.2.0",
4
4
  "private": false,
5
5
  "description": "A library for creating typed WebSocket connections, supporting bi-directional communication with type safety.",
6
6
  "main": "dist_ts/index.js",
package/readme.hints.md CHANGED
@@ -30,8 +30,33 @@ is selected for the physical peer at upgrade time.
30
30
  `context.createTypedRequest()` for authenticated restoration RPCs; it inherits
31
31
  the restoration deadline and abort signal and becomes invalid afterward.
32
32
 
33
+ ### Diagnostics and Close Codes
34
+
35
+ `diagnosticsSubject` (and `onDiagnostic` on a standalone `NativeByteManager`)
36
+ publishes structured invariant-close, peer-rejection, reconnect, tag-denial,
37
+ and implicit-targeting events. Emission must never disturb transport paths:
38
+ every sink call is try/catch-wrapped.
39
+
40
+ The WebSocket JS `close()` API only permits codes 1000 and 3000-4999. All
41
+ client-initiated invariant closes therefore go through
42
+ `toClientWebSocketCloseCode()` (1009 -> 4009). Calling `close(1008)` on a real
43
+ client WebSocket throws `InvalidAccessError` — under Node/undici that escapes
44
+ `onmessage` as an uncaught exception and kills the process, and inside
45
+ `NativeByteManager`'s try/catch it silently left the socket open. Server-side
46
+ `peer.close()` keeps protocol codes; diagnostics always report the semantic
47
+ protocol code.
48
+
49
+ ### Source Layout
50
+
51
+ Files are named after their main class: `classes.typedsocket.ts`,
52
+ `classes.typedsockettagpolicymanager.ts`, `classes.clienttagreconciler.ts`
53
+ (client desired/acknowledged tag state machine behind a transport adapter),
54
+ `classes.nativebytemanager.ts`, `classes.nativebyteerror.ts`, plus
55
+ `helpers.*`, `interfaces.*`, `constants.*`, and `plugins.ts`.
56
+
33
57
  ### Release Artifact
34
58
 
35
59
  Only compiled `dist_ts` JavaScript/declarations, package metadata, documentation,
36
60
  and the license are published. `pnpm run verify:package` performs the deterministic
37
- two-pack entry, hash, metadata, and smoke-import gate.
61
+ two-pack entry, hash, metadata, and smoke-import gate (exact artifact count is
62
+ asserted in `verify.package.ts` — update it when adding source files).