sikiopipe 0.1.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 (103) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +160 -0
  3. package/dist/channel/channel.d.ts +27 -0
  4. package/dist/channel/channel.d.ts.map +1 -0
  5. package/dist/channel/channel.js +63 -0
  6. package/dist/channel/channel.js.map +1 -0
  7. package/dist/endpoint/connection.d.ts +42 -0
  8. package/dist/endpoint/connection.d.ts.map +1 -0
  9. package/dist/endpoint/connection.js +408 -0
  10. package/dist/endpoint/connection.js.map +1 -0
  11. package/dist/endpoint/router.d.ts +52 -0
  12. package/dist/endpoint/router.d.ts.map +1 -0
  13. package/dist/endpoint/router.js +244 -0
  14. package/dist/endpoint/router.js.map +1 -0
  15. package/dist/index.browser.d.ts +3 -0
  16. package/dist/index.browser.d.ts.map +1 -0
  17. package/dist/index.browser.js +3 -0
  18. package/dist/index.browser.js.map +1 -0
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +2 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/index.node.d.ts +3 -0
  24. package/dist/index.node.d.ts.map +1 -0
  25. package/dist/index.node.js +3 -0
  26. package/dist/index.node.js.map +1 -0
  27. package/dist/internal/abort.d.ts +4 -0
  28. package/dist/internal/abort.d.ts.map +1 -0
  29. package/dist/internal/abort.js +18 -0
  30. package/dist/internal/abort.js.map +1 -0
  31. package/dist/internal/asyncQueue.d.ts +16 -0
  32. package/dist/internal/asyncQueue.d.ts.map +1 -0
  33. package/dist/internal/asyncQueue.js +69 -0
  34. package/dist/internal/asyncQueue.js.map +1 -0
  35. package/dist/internal/messageChannel.d.ts +11 -0
  36. package/dist/internal/messageChannel.d.ts.map +1 -0
  37. package/dist/internal/messageChannel.js +8 -0
  38. package/dist/internal/messageChannel.js.map +1 -0
  39. package/dist/protocol/header.d.ts +29 -0
  40. package/dist/protocol/header.d.ts.map +1 -0
  41. package/dist/protocol/header.js +36 -0
  42. package/dist/protocol/header.js.map +1 -0
  43. package/dist/protocol/kinds.d.ts +17 -0
  44. package/dist/protocol/kinds.d.ts.map +1 -0
  45. package/dist/protocol/kinds.js +16 -0
  46. package/dist/protocol/kinds.js.map +1 -0
  47. package/dist/public/index.shared.d.ts +17 -0
  48. package/dist/public/index.shared.d.ts.map +1 -0
  49. package/dist/public/index.shared.js +9 -0
  50. package/dist/public/index.shared.js.map +1 -0
  51. package/dist/public/spawnWorker.browser.d.ts +7 -0
  52. package/dist/public/spawnWorker.browser.d.ts.map +1 -0
  53. package/dist/public/spawnWorker.browser.js +10 -0
  54. package/dist/public/spawnWorker.browser.js.map +1 -0
  55. package/dist/public/spawnWorker.node.d.ts +8 -0
  56. package/dist/public/spawnWorker.node.d.ts.map +1 -0
  57. package/dist/public/spawnWorker.node.js +11 -0
  58. package/dist/public/spawnWorker.node.js.map +1 -0
  59. package/dist/public/spawnWorker.shared.d.ts +9 -0
  60. package/dist/public/spawnWorker.shared.d.ts.map +1 -0
  61. package/dist/public/spawnWorker.shared.js +2 -0
  62. package/dist/public/spawnWorker.shared.js.map +1 -0
  63. package/dist/public/streams.d.ts +3 -0
  64. package/dist/public/streams.d.ts.map +1 -0
  65. package/dist/public/streams.js +54 -0
  66. package/dist/public/streams.js.map +1 -0
  67. package/dist/rpc/codec.d.ts +6 -0
  68. package/dist/rpc/codec.d.ts.map +1 -0
  69. package/dist/rpc/codec.js +12 -0
  70. package/dist/rpc/codec.js.map +1 -0
  71. package/dist/rpc/rpc.d.ts +27 -0
  72. package/dist/rpc/rpc.d.ts.map +1 -0
  73. package/dist/rpc/rpc.js +580 -0
  74. package/dist/rpc/rpc.js.map +1 -0
  75. package/dist/rpc/stream.d.ts +41 -0
  76. package/dist/rpc/stream.d.ts.map +1 -0
  77. package/dist/rpc/stream.js +233 -0
  78. package/dist/rpc/stream.js.map +1 -0
  79. package/dist/sab/blockPool.d.ts +14 -0
  80. package/dist/sab/blockPool.d.ts.map +1 -0
  81. package/dist/sab/blockPool.js +53 -0
  82. package/dist/sab/blockPool.js.map +1 -0
  83. package/dist/sab/spscRing.d.ts +16 -0
  84. package/dist/sab/spscRing.d.ts.map +1 -0
  85. package/dist/sab/spscRing.js +97 -0
  86. package/dist/sab/spscRing.js.map +1 -0
  87. package/dist/transport/createTransport.d.ts +43 -0
  88. package/dist/transport/createTransport.d.ts.map +1 -0
  89. package/dist/transport/createTransport.js +95 -0
  90. package/dist/transport/createTransport.js.map +1 -0
  91. package/dist/transport/postMessage.d.ts +51 -0
  92. package/dist/transport/postMessage.d.ts.map +1 -0
  93. package/dist/transport/postMessage.js +174 -0
  94. package/dist/transport/postMessage.js.map +1 -0
  95. package/dist/transport/sab.d.ts +54 -0
  96. package/dist/transport/sab.d.ts.map +1 -0
  97. package/dist/transport/sab.js +190 -0
  98. package/dist/transport/sab.js.map +1 -0
  99. package/dist/transport/sabEligibility.d.ts +11 -0
  100. package/dist/transport/sabEligibility.d.ts.map +1 -0
  101. package/dist/transport/sabEligibility.js +31 -0
  102. package/dist/transport/sabEligibility.js.map +1 -0
  103. package/package.json +50 -0
@@ -0,0 +1,244 @@
1
+ import { AsyncQueue } from "../internal/asyncQueue.js";
2
+ import { FrameFlags } from "../protocol/header.js";
3
+ import { MessageKind } from "../protocol/kinds.js";
4
+ const CHUNK_HEADER_WORDS = 6;
5
+ const CHUNK_HEADER_BYTES = CHUNK_HEADER_WORDS * 4;
6
+ const CHUNK_STREAM_BIT = 0x80000000;
7
+ const EMPTY_PAYLOAD = new Uint8Array(0);
8
+ export class FrameRouter {
9
+ transport;
10
+ queues = new Map();
11
+ chunkStreams = new Map();
12
+ chunkSeq = 1;
13
+ latencyLast = 0;
14
+ latencyMin = 0;
15
+ latencyMax = 0;
16
+ latencySum = 0;
17
+ latencySamples = 0;
18
+ closed = false;
19
+ constructor(transport) {
20
+ this.transport = transport;
21
+ void this.pump();
22
+ }
23
+ async send(frame, opts) {
24
+ if (this.closed)
25
+ throw new Error("Closed");
26
+ const capacity = this.transport.payloadCapacity;
27
+ if (capacity > 0 && frame.payload.byteLength > capacity && (frame.flags & FrameFlags.Chunked) === 0) {
28
+ await this.sendChunked(frame, capacity, opts);
29
+ return;
30
+ }
31
+ await this.transport.send(frame, opts);
32
+ }
33
+ async *recv(kind, opts) {
34
+ const q = this.getQueue(kind);
35
+ while (true) {
36
+ const frame = await q.shift(opts?.signal);
37
+ yield frame;
38
+ }
39
+ }
40
+ getStats() {
41
+ const transportStats = this.transport.getStats();
42
+ const queues = {};
43
+ for (const [kind, q] of this.queues) {
44
+ queues[kind] = q.stats();
45
+ }
46
+ const latencyMs = this.latencySamples > 0
47
+ ? {
48
+ last: this.latencyLast,
49
+ avg: this.latencySum / this.latencySamples,
50
+ min: this.latencyMin,
51
+ max: this.latencyMax,
52
+ samples: this.latencySamples,
53
+ }
54
+ : undefined;
55
+ return {
56
+ ...transportStats,
57
+ queues,
58
+ chunked: { active: this.chunkStreams.size },
59
+ ...(latencyMs ? { latencyMs } : {}),
60
+ };
61
+ }
62
+ close(err) {
63
+ if (this.closed)
64
+ return;
65
+ this.closed = true;
66
+ const e = err ?? new Error("Closed");
67
+ this.chunkStreams.clear();
68
+ for (const q of this.queues.values()) {
69
+ for (const frame of q.drain())
70
+ frame.release();
71
+ q.close(e);
72
+ }
73
+ this.transport.close();
74
+ }
75
+ getQueue(kind) {
76
+ const existing = this.queues.get(kind);
77
+ if (existing)
78
+ return existing;
79
+ const q = new AsyncQueue();
80
+ this.queues.set(kind, q);
81
+ return q;
82
+ }
83
+ async pump() {
84
+ try {
85
+ for await (const frame of this.transport.recv()) {
86
+ if (this.closed) {
87
+ frame.release();
88
+ continue;
89
+ }
90
+ if (this.handleChunkFrame(frame))
91
+ continue;
92
+ this.getQueue(frame.kind).push(frame);
93
+ }
94
+ this.close();
95
+ }
96
+ catch (e) {
97
+ this.close(e instanceof Error ? e : new Error(String(e)));
98
+ }
99
+ }
100
+ recordLatency(ms) {
101
+ if (!Number.isFinite(ms) || ms < 0)
102
+ return;
103
+ this.latencyLast = ms;
104
+ if (this.latencySamples === 0 || ms < this.latencyMin)
105
+ this.latencyMin = ms;
106
+ if (this.latencySamples === 0 || ms > this.latencyMax)
107
+ this.latencyMax = ms;
108
+ this.latencySum += ms;
109
+ this.latencySamples += 1;
110
+ }
111
+ nextChunkStreamId() {
112
+ const id = (this.chunkSeq++ & 0x7fffffff) | CHUNK_STREAM_BIT;
113
+ return id >>> 0;
114
+ }
115
+ async sendChunked(frame, capacity, opts) {
116
+ if (capacity <= CHUNK_HEADER_BYTES)
117
+ throw new RangeError("Chunk header exceeds payload capacity");
118
+ const total = frame.payload.byteLength >>> 0;
119
+ const streamId = this.nextChunkStreamId();
120
+ const firstData = Math.min(total, capacity - CHUNK_HEADER_BYTES);
121
+ const firstPayload = new Uint8Array(CHUNK_HEADER_BYTES + firstData);
122
+ const headerView = new Uint32Array(firstPayload.buffer, firstPayload.byteOffset, CHUNK_HEADER_WORDS);
123
+ headerView[0] = frame.kind;
124
+ headerView[1] = frame.id >>> 0;
125
+ headerView[2] = frame.streamId >>> 0;
126
+ headerView[3] = frame.flags >>> 0;
127
+ headerView[4] = frame.aux >>> 0;
128
+ headerView[5] = total;
129
+ firstPayload.set(frame.payload.subarray(0, firstData), CHUNK_HEADER_BYTES);
130
+ await this.transport.send({
131
+ kind: MessageKind.StreamPush,
132
+ id: 0,
133
+ streamId,
134
+ flags: FrameFlags.Chunked,
135
+ aux: 0,
136
+ payload: firstPayload,
137
+ }, opts);
138
+ let offset = firstData;
139
+ while (offset < total) {
140
+ const len = Math.min(capacity, total - offset);
141
+ const payload = frame.payload.subarray(offset, offset + len);
142
+ await this.transport.send({
143
+ kind: MessageKind.StreamPush,
144
+ id: 0,
145
+ streamId,
146
+ flags: FrameFlags.Chunked,
147
+ aux: 0,
148
+ payload,
149
+ }, opts);
150
+ offset += len;
151
+ }
152
+ await this.transport.send({
153
+ kind: MessageKind.StreamEnd,
154
+ id: 0,
155
+ streamId,
156
+ flags: FrameFlags.Chunked,
157
+ aux: 0,
158
+ payload: EMPTY_PAYLOAD,
159
+ }, opts);
160
+ }
161
+ handleChunkFrame(frame) {
162
+ if ((frame.flags & FrameFlags.Chunked) === 0)
163
+ return false;
164
+ if (frame.kind === MessageKind.StreamPush) {
165
+ this.handleChunkPush(frame);
166
+ return true;
167
+ }
168
+ if (frame.kind === MessageKind.StreamEnd) {
169
+ this.handleChunkEnd(frame);
170
+ return true;
171
+ }
172
+ return false;
173
+ }
174
+ handleChunkPush(frame) {
175
+ const streamId = frame.streamId >>> 0;
176
+ const payload = frame.payload;
177
+ const existing = this.chunkStreams.get(streamId);
178
+ if (!existing) {
179
+ if (payload.byteLength < CHUNK_HEADER_BYTES) {
180
+ frame.release();
181
+ return;
182
+ }
183
+ const headerView = new Uint32Array(payload.buffer, payload.byteOffset, CHUNK_HEADER_WORDS);
184
+ const kind = headerView[0] ?? 0;
185
+ const id = headerView[1] ?? 0;
186
+ const originalStreamId = headerView[2] ?? 0;
187
+ const flags = headerView[3] ?? 0;
188
+ const aux = headerView[4] ?? 0;
189
+ const total = (headerView[5] ?? 0) >>> 0;
190
+ const buffer = new Uint8Array(total);
191
+ const available = payload.byteLength - CHUNK_HEADER_BYTES;
192
+ let received = 0;
193
+ if (available > 0) {
194
+ const toCopy = Math.min(available, total);
195
+ buffer.set(payload.subarray(CHUNK_HEADER_BYTES, CHUNK_HEADER_BYTES + toCopy), 0);
196
+ received = toCopy;
197
+ }
198
+ this.chunkStreams.set(streamId, {
199
+ kind: kind,
200
+ id: id >>> 0,
201
+ streamId: originalStreamId >>> 0,
202
+ flags: flags >>> 0,
203
+ aux: aux >>> 0,
204
+ total,
205
+ received,
206
+ buffer,
207
+ });
208
+ frame.release();
209
+ return;
210
+ }
211
+ const remaining = existing.total - existing.received;
212
+ if (remaining <= 0) {
213
+ frame.release();
214
+ return;
215
+ }
216
+ const toCopy = Math.min(payload.byteLength, remaining);
217
+ existing.buffer.set(payload.subarray(0, toCopy), existing.received);
218
+ existing.received += toCopy;
219
+ frame.release();
220
+ }
221
+ handleChunkEnd(frame) {
222
+ const streamId = frame.streamId >>> 0;
223
+ const state = this.chunkStreams.get(streamId);
224
+ if (!state) {
225
+ frame.release();
226
+ return;
227
+ }
228
+ this.chunkStreams.delete(streamId);
229
+ frame.release();
230
+ if (state.received < state.total)
231
+ return;
232
+ const outFrame = {
233
+ kind: state.kind,
234
+ id: state.id,
235
+ streamId: state.streamId,
236
+ flags: state.flags,
237
+ aux: state.aux,
238
+ payload: state.buffer,
239
+ release: () => { },
240
+ };
241
+ this.getQueue(outFrame.kind).push(outFrame);
242
+ }
243
+ }
244
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/endpoint/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,CAAC,CAAC;AAClD,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAaxC,MAAM,OAAO,WAAW;IACL,SAAS,CAAY;IACrB,MAAM,GAAG,IAAI,GAAG,EAA0C,CAAC;IAC3D,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;IACtD,QAAQ,GAAG,CAAC,CAAC;IACb,WAAW,GAAG,CAAC,CAAC;IAChB,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,GAAG,CAAC,CAAC;IACf,UAAU,GAAG,CAAC,CAAC;IACf,cAAc,GAAG,CAAC,CAAC;IACnB,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAoB,EAAE,IAA+B;QAC9D,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QAChD,IAAI,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,CAAC,IAAI,CAAC,IAAiB,EAAE,IAA+B;QAC5D,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,QAAQ;QACN,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,MAAM,GAAsD,EAAE,CAAC;QACrE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,GAAG,CAAC;YACrB,CAAC,CAAC;gBACE,IAAI,EAAE,IAAI,CAAC,WAAW;gBACtB,GAAG,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc;gBAC1C,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO;YACL,GAAG,cAAc;YACjB,MAAM;YACN,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC3C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;gBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,QAAQ,CAAC,IAAiB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,UAAU,EAAiB,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,KAAK,CAAC,OAAO,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;oBAAE,SAAS;gBAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO;QAC3C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAC5E,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAC5E,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEO,iBAAiB;QACvB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG,gBAAgB,CAAC;QAC7D,OAAO,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAoB,EAAE,QAAgB,EAAE,IAA+B;QAC/F,IAAI,QAAQ,IAAI,kBAAkB;YAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,kBAAkB,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,IAAI,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACrG,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/B,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;QACrC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;QAClC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;QAChC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACtB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC3E,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CACvB;YACE,IAAI,EAAE,WAAW,CAAC,UAAU;YAC5B,EAAE,EAAE,CAAC;YACL,QAAQ;YACR,KAAK,EAAE,UAAU,CAAC,OAAO;YACzB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,YAAY;SACtB,EACD,IAAI,CACL,CAAC;QACF,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,OAAO,MAAM,GAAG,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CACvB;gBACE,IAAI,EAAE,WAAW,CAAC,UAAU;gBAC5B,EAAE,EAAE,CAAC;gBACL,QAAQ;gBACR,KAAK,EAAE,UAAU,CAAC,OAAO;gBACzB,GAAG,EAAE,CAAC;gBACN,OAAO;aACR,EACD,IAAI,CACL,CAAC;YACF,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CACvB;YACE,IAAI,EAAE,WAAW,CAAC,SAAS;YAC3B,EAAE,EAAE,CAAC;YACL,QAAQ;YACR,KAAK,EAAE,UAAU,CAAC,OAAO;YACzB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,aAAa;SACvB,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,KAAoB;QAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,eAAe,CAAC,KAAoB;QAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,OAAO,CAAC,UAAU,GAAG,kBAAkB,EAAE,CAAC;gBAC5C,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAC3F,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC;YAC1D,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,QAAQ,GAAG,MAAM,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE;gBAC9B,IAAI,EAAE,IAAmB;gBACzB,EAAE,EAAE,EAAE,KAAK,CAAC;gBACZ,QAAQ,EAAE,gBAAgB,KAAK,CAAC;gBAChC,KAAK,EAAE,KAAK,KAAK,CAAC;gBAClB,GAAG,EAAE,GAAG,KAAK,CAAC;gBACd,KAAK;gBACL,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACrD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACvD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpE,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC;QAC5B,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;IAEO,cAAc,CAAC,KAAoB;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK;YAAE,OAAO;QACzC,MAAM,QAAQ,GAAkB;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export * from "./public/index.shared.js";
2
+ export * from "./public/spawnWorker.browser.js";
3
+ //# sourceMappingURL=index.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./public/index.shared.js";
2
+ export * from "./public/spawnWorker.browser.js";
3
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./public/index.shared.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./public/index.shared.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./public/index.shared.js";
2
+ export * from "./public/spawnWorker.node.js";
3
+ //# sourceMappingURL=index.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./public/index.shared.js";
2
+ export * from "./public/spawnWorker.node.js";
3
+ //# sourceMappingURL=index.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function throwIfAborted(signal?: AbortSignal): void;
2
+ export declare function abortPromise(signal: AbortSignal): Promise<never>;
3
+ export declare function abortError(): DOMException;
4
+ //# sourceMappingURL=abort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/internal/abort.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,QAIlD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAShE;AAED,wBAAgB,UAAU,IAAI,YAAY,CAEzC"}
@@ -0,0 +1,18 @@
1
+ export function throwIfAborted(signal) {
2
+ if (!signal)
3
+ return;
4
+ if (!signal.aborted)
5
+ return;
6
+ throw abortError();
7
+ }
8
+ export function abortPromise(signal) {
9
+ if (signal.aborted)
10
+ return Promise.reject(abortError());
11
+ return new Promise((_, reject) => {
12
+ signal.addEventListener("abort", () => reject(abortError()), { once: true });
13
+ });
14
+ }
15
+ export function abortError() {
16
+ return new DOMException("Aborted", "AbortError");
17
+ }
18
+ //# sourceMappingURL=abort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/internal/abort.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAC5B,MAAM,UAAU,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/B,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAC1B,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare class AsyncQueue<T> {
2
+ private readonly values;
3
+ private readonly waiters;
4
+ private closedErr;
5
+ push(value: T): void;
6
+ shift(signal?: AbortSignal): Promise<T>;
7
+ close(err?: Error): void;
8
+ size(): number;
9
+ stats(): {
10
+ size: number;
11
+ waiters: number;
12
+ };
13
+ drain(): T[];
14
+ private removeWaiter;
15
+ }
16
+ //# sourceMappingURL=asyncQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncQueue.d.ts","sourceRoot":"","sources":["../../src/internal/asyncQueue.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAKhB;IACR,OAAO,CAAC,SAAS,CAAsB;IAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;IAWb,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBvC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAUjB,IAAI;IAIJ,KAAK;;;;IAOL,KAAK,IAAI,CAAC,EAAE;IAIZ,OAAO,CAAC,YAAY;CAKrB"}
@@ -0,0 +1,69 @@
1
+ export class AsyncQueue {
2
+ values = [];
3
+ waiters = [];
4
+ closedErr = null;
5
+ push(value) {
6
+ if (this.closedErr)
7
+ return;
8
+ const waiter = this.waiters.shift();
9
+ if (waiter) {
10
+ if (waiter.abortListener && waiter.signal)
11
+ waiter.signal.removeEventListener("abort", waiter.abortListener);
12
+ waiter.resolve(value);
13
+ return;
14
+ }
15
+ this.values.push(value);
16
+ }
17
+ shift(signal) {
18
+ if (signal?.aborted)
19
+ return Promise.reject(new DOMException("Aborted", "AbortError"));
20
+ const value = this.values.shift();
21
+ if (value !== undefined)
22
+ return Promise.resolve(value);
23
+ if (this.closedErr)
24
+ return Promise.reject(this.closedErr);
25
+ return new Promise((resolve, reject) => {
26
+ const waiter = { resolve, reject, signal };
27
+ if (signal) {
28
+ const abortListener = () => {
29
+ this.removeWaiter(waiter);
30
+ reject(new DOMException("Aborted", "AbortError"));
31
+ };
32
+ waiter.abortListener = abortListener;
33
+ signal.addEventListener("abort", abortListener, { once: true });
34
+ }
35
+ this.waiters.push(waiter);
36
+ });
37
+ }
38
+ close(err) {
39
+ if (this.closedErr)
40
+ return;
41
+ this.closedErr = err ?? new Error("Closed");
42
+ for (const waiter of this.waiters.splice(0)) {
43
+ if (waiter.abortListener && waiter.signal)
44
+ waiter.signal.removeEventListener("abort", waiter.abortListener);
45
+ waiter.reject(this.closedErr);
46
+ }
47
+ this.values.length = 0;
48
+ }
49
+ size() {
50
+ return this.values.length;
51
+ }
52
+ stats() {
53
+ return {
54
+ size: this.values.length,
55
+ waiters: this.waiters.length,
56
+ };
57
+ }
58
+ drain() {
59
+ return this.values.splice(0);
60
+ }
61
+ removeWaiter(waiter) {
62
+ const idx = this.waiters.indexOf(waiter);
63
+ if (idx >= 0)
64
+ this.waiters.splice(idx, 1);
65
+ if (waiter.abortListener && waiter.signal)
66
+ waiter.signal.removeEventListener("abort", waiter.abortListener);
67
+ }
68
+ }
69
+ //# sourceMappingURL=asyncQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncQueue.js","sourceRoot":"","sources":["../../src/internal/asyncQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type MessagePortLike = {
2
+ postMessage(value: unknown, transfer?: readonly unknown[]): void;
3
+ start?: () => void;
4
+ close?: () => void;
5
+ };
6
+ export type MessageChannelLike = {
7
+ port1: MessagePortLike;
8
+ port2: MessagePortLike;
9
+ };
10
+ export declare function createMessageChannel(): Promise<MessageChannelLike>;
11
+ //# sourceMappingURL=messageChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageChannel.d.ts","sourceRoot":"","sources":["../../src/internal/messageChannel.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,eAAe,CAAC;CACxB,CAAC;AAEF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAMxE"}
@@ -0,0 +1,8 @@
1
+ export async function createMessageChannel() {
2
+ if (typeof MessageChannel === "function") {
3
+ return new MessageChannel();
4
+ }
5
+ const mod = await import("node:worker_threads");
6
+ return new mod.MessageChannel();
7
+ }
8
+ //# sourceMappingURL=messageChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageChannel.js","sourceRoot":"","sources":["../../src/internal/messageChannel.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QACzC,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAChD,OAAO,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { MessageKind } from "./kinds.js";
2
+ export declare const HEADER_WORDS = 6;
3
+ export declare const HEADER_BYTES: number;
4
+ export declare const FrameFlags: {
5
+ readonly None: 0;
6
+ readonly Chunked: 1;
7
+ };
8
+ export type FrameHeader = {
9
+ kind: MessageKind;
10
+ id: number;
11
+ streamId: number;
12
+ flags: number;
13
+ payloadLength: number;
14
+ aux: number;
15
+ };
16
+ export type FrameHeaderOut = {
17
+ kind: MessageKind;
18
+ id: number;
19
+ streamId: number;
20
+ flags: number;
21
+ payloadLength: number;
22
+ aux: number;
23
+ };
24
+ export declare function writeHeader(view: Uint32Array, wordOffset: number, h: FrameHeader): void;
25
+ export declare function readHeader(view: Uint32Array, wordOffset: number, out: FrameHeaderOut): FrameHeaderOut;
26
+ export declare function getBlockStride(blockSize: number): number;
27
+ export declare function getPayloadCapacity(blockSize: number): number;
28
+ export declare function getPayloadByteOffsetInBlock(): number;
29
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/protocol/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,YAAY,QAAmB,CAAC;AAE7C,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,QAOhF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,cAAc,CAQrG;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,UAK/C;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,UAEnD;AAED,wBAAgB,2BAA2B,WAE1C"}
@@ -0,0 +1,36 @@
1
+ export const HEADER_WORDS = 6;
2
+ export const HEADER_BYTES = HEADER_WORDS * 4;
3
+ export const FrameFlags = {
4
+ None: 0,
5
+ Chunked: 1,
6
+ };
7
+ export function writeHeader(view, wordOffset, h) {
8
+ view[wordOffset + 0] = h.kind;
9
+ view[wordOffset + 1] = h.id >>> 0;
10
+ view[wordOffset + 2] = h.streamId >>> 0;
11
+ view[wordOffset + 3] = h.flags >>> 0;
12
+ view[wordOffset + 4] = h.payloadLength >>> 0;
13
+ view[wordOffset + 5] = h.aux >>> 0;
14
+ }
15
+ export function readHeader(view, wordOffset, out) {
16
+ out.kind = view[wordOffset + 0];
17
+ out.id = view[wordOffset + 1] >>> 0;
18
+ out.streamId = view[wordOffset + 2] >>> 0;
19
+ out.flags = view[wordOffset + 3] >>> 0;
20
+ out.payloadLength = view[wordOffset + 4] >>> 0;
21
+ out.aux = view[wordOffset + 5] >>> 0;
22
+ return out;
23
+ }
24
+ export function getBlockStride(blockSize) {
25
+ if (!Number.isInteger(blockSize) || blockSize <= HEADER_BYTES) {
26
+ throw new RangeError("Invalid blockSize");
27
+ }
28
+ return blockSize;
29
+ }
30
+ export function getPayloadCapacity(blockSize) {
31
+ return getBlockStride(blockSize) - HEADER_BYTES;
32
+ }
33
+ export function getPayloadByteOffsetInBlock() {
34
+ return HEADER_BYTES;
35
+ }
36
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/protocol/header.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;CACF,CAAC;AAoBX,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,UAAkB,EAAE,CAAc;IAC/E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAiB,EAAE,UAAkB,EAAE,GAAmB;IACnF,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAiB,CAAC;IAChD,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,KAAK,CAAC,CAAC;IACrC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,KAAK,CAAC,CAAC;IAC3C,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,KAAK,CAAC,CAAC;IACxC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,KAAK,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,KAAK,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;QAC9D,MAAM,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare const MessageKind: {
2
+ readonly Data: 1;
3
+ readonly RpcCall: 2;
4
+ readonly RpcResolve: 3;
5
+ readonly RpcReject: 4;
6
+ readonly RpcCancel: 10;
7
+ readonly StreamPush: 5;
8
+ readonly StreamEnd: 6;
9
+ readonly StreamCredit: 7;
10
+ readonly StreamCancel: 8;
11
+ readonly TransportReturnBuffer: 9;
12
+ readonly ControlPing: 11;
13
+ readonly ControlPong: 12;
14
+ readonly ControlClose: 13;
15
+ };
16
+ export type MessageKind = (typeof MessageKind)[keyof typeof MessageKind];
17
+ //# sourceMappingURL=kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.d.ts","sourceRoot":"","sources":["../../src/protocol/kinds.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const MessageKind = {
2
+ Data: 1,
3
+ RpcCall: 2,
4
+ RpcResolve: 3,
5
+ RpcReject: 4,
6
+ RpcCancel: 10,
7
+ StreamPush: 5,
8
+ StreamEnd: 6,
9
+ StreamCredit: 7,
10
+ StreamCancel: 8,
11
+ TransportReturnBuffer: 9,
12
+ ControlPing: 11,
13
+ ControlPong: 12,
14
+ ControlClose: 13,
15
+ };
16
+ //# sourceMappingURL=kinds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../src/protocol/kinds.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,qBAAqB,EAAE,CAAC;IACxB,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;CACR,CAAC"}
@@ -0,0 +1,17 @@
1
+ export type { Codec } from "../rpc/codec.js";
2
+ export { defaultCodec } from "../rpc/codec.js";
3
+ export type { Connection, ConnectOptions } from "../endpoint/connection.js";
4
+ export { acceptConnection, connect, isBrowser, isNodeLike } from "../endpoint/connection.js";
5
+ export type { Transport, TransportKind, IncomingFrame, OutgoingFrame } from "../transport/createTransport.js";
6
+ export { MessageKind } from "../protocol/kinds.js";
7
+ export type { FrameHeader, FrameHeaderOut } from "../protocol/header.js";
8
+ export { FrameFlags } from "../protocol/header.js";
9
+ export type { SabEligibility } from "../transport/sabEligibility.js";
10
+ export { getSabEligibility, isSabEligible } from "../transport/sabEligibility.js";
11
+ export type { Channel, BorrowedChunk, ChannelOptions, TransferPayload } from "../channel/channel.js";
12
+ export { channel, createTransferPayload } from "../channel/channel.js";
13
+ export { asyncIterableFromReadableStream, readableStreamFromAsyncIterable } from "./streams.js";
14
+ export type { RpcClient, RpcServer, RpcOptions, RpcStats, Remote } from "../rpc/rpc.js";
15
+ export { rpc } from "../rpc/rpc.js";
16
+ export type { StreamRef } from "../rpc/stream.js";
17
+ //# sourceMappingURL=index.shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.shared.d.ts","sourceRoot":"","sources":["../../src/public/index.shared.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE7F,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAElF,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAEhG,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { defaultCodec } from "../rpc/codec.js";
2
+ export { acceptConnection, connect, isBrowser, isNodeLike } from "../endpoint/connection.js";
3
+ export { MessageKind } from "../protocol/kinds.js";
4
+ export { FrameFlags } from "../protocol/header.js";
5
+ export { getSabEligibility, isSabEligible } from "../transport/sabEligibility.js";
6
+ export { channel, createTransferPayload } from "../channel/channel.js";
7
+ export { asyncIterableFromReadableStream, readableStreamFromAsyncIterable } from "./streams.js";
8
+ export { rpc } from "../rpc/rpc.js";
9
+ //# sourceMappingURL=index.shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.shared.js","sourceRoot":"","sources":["../../src/public/index.shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG7F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAGlF,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAGhG,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SpawnWorkerOptions } from "./spawnWorker.shared.js";
2
+ export type { SpawnWorkerOptions } from "./spawnWorker.shared.js";
3
+ export declare function spawnWorker(url: URL, opts?: SpawnWorkerOptions): Promise<import("./index.shared.js").Connection & {
4
+ worker: Worker;
5
+ terminate: () => void;
6
+ }>;
7
+ //# sourceMappingURL=spawnWorker.browser.d.ts.map