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
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # SikioPipe
2
+
3
+ ![NPM Version](https://img.shields.io/npm/v/sikiopipe?style=flat-square&color=blue) ![License](https://img.shields.io/github/license/leiko57/SikioPipe?style=flat-square) ![TypeScript](https://img.shields.io/badge/built_with-TypeScript-3178c6?style=flat-square) ![Targets](https://img.shields.io/badge/targets-web%20workers%20%7C%20worker_threads-purple?style=flat-square) ![Size](https://img.shields.io/bundlephobia/minzip/sikiopipe?style=flat-square&label=minzipped)
4
+
5
+ Zero‑copy‑ish IPC & RPC between Web Workers and Node.js `worker_threads` with a SharedArrayBuffer + Atomics fast path and `postMessage` fallback.
6
+
7
+ ## Features
8
+
9
+ - **SAB + Atomics fast path**: Uses SharedArrayBuffer-backed SPSC rings with a pooled block allocator when eligible.
10
+ - **Fallback transport**: Falls back to `postMessage` when SAB isn’t available or allowed.
11
+ - **Channels**: Send raw `Uint8Array` frames, with borrowed receives for low-copy hot paths.
12
+ - **RPC**: Type-safe-ish remote proxies (`rpc(conn).wrap<T>()`) with a tiny server (`rpc(conn).expose(...)`).
13
+ - **Streaming RPC**: `AsyncIterable<Uint8Array>` arguments and return values are streamed with backpressure.
14
+ - **Configurable**: `mode`, `blockSize`, `blockCount`, handshake timeout, ping intervals.
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ npm i sikiopipe
20
+ ```
21
+
22
+ or
23
+
24
+ ```bash
25
+ pnpm add sikiopipe
26
+ ```
27
+
28
+ or
29
+
30
+ ```bash
31
+ yarn add sikiopipe
32
+ ```
33
+
34
+ ## Quick Start
35
+
36
+ ### Node.js (`worker_threads`)
37
+
38
+ `main.ts`
39
+
40
+ ```ts
41
+ import { spawnWorker, rpc } from "sikiopipe/node";
42
+
43
+ type Api = {
44
+ add(a: number, b: number): number;
45
+ };
46
+
47
+ const conn = await spawnWorker(new URL("./worker.js", import.meta.url));
48
+ const api = rpc(conn).wrap<Api>();
49
+
50
+ console.log(await api.add(1, 2));
51
+
52
+ conn.close();
53
+ await conn.terminate();
54
+ ```
55
+
56
+ `worker.js`
57
+
58
+ ```ts
59
+ import { acceptConnection, rpc } from "sikiopipe/node";
60
+
61
+ const conn = await acceptConnection();
62
+ rpc(conn).expose({
63
+ add(a: number, b: number) {
64
+ return a + b;
65
+ },
66
+ });
67
+ ```
68
+
69
+ ### Browser (Web Workers)
70
+
71
+ `main.ts`
72
+
73
+ ```ts
74
+ import { getSabEligibility, rpc, spawnWorker } from "sikiopipe/browser";
75
+
76
+ console.log(getSabEligibility());
77
+
78
+ type Api = {
79
+ ping(): string;
80
+ };
81
+
82
+ const conn = await spawnWorker(new URL("./worker.js", import.meta.url));
83
+ const api = rpc(conn).wrap<Api>();
84
+
85
+ console.log(await api.ping());
86
+
87
+ conn.close();
88
+ await conn.terminate();
89
+ ```
90
+
91
+ `worker.js`
92
+
93
+ ```ts
94
+ import { acceptConnection, rpc } from "sikiopipe/browser";
95
+
96
+ const conn = await acceptConnection();
97
+ rpc(conn).expose({
98
+ ping() {
99
+ return "pong";
100
+ },
101
+ });
102
+ ```
103
+
104
+ ## Transports
105
+
106
+ | Mode | Behavior | Notes |
107
+ |------|----------|-------|
108
+ | `auto` | Selects SAB when eligible, otherwise `postMessage` | Default |
109
+ | `sab` | Forces SAB transport | In browsers requires COOP/COEP (cross-origin isolation) |
110
+ | `postMessage` | Forces `postMessage` transport | Always available |
111
+
112
+ ## Zero-copy-ish data path
113
+
114
+ Borrowed receive (avoid per-message `slice()` allocations):
115
+
116
+ ```ts
117
+ import { channel } from "sikiopipe";
118
+
119
+ const ch = channel(conn);
120
+
121
+ for await (const chunk of ch.recvBorrowed()) {
122
+ try {
123
+ onBytes(chunk.bytes);
124
+ } finally {
125
+ chunk.release();
126
+ }
127
+ }
128
+ ```
129
+
130
+ Transfer-backed send (only on `postMessage` transport):
131
+
132
+ ```ts
133
+ import { channel, createTransferPayload } from "sikiopipe";
134
+
135
+ const ch = channel(conn);
136
+
137
+ const data = new Uint8Array([1, 2, 3]);
138
+ const { payload } = createTransferPayload(data.byteLength);
139
+ payload.set(data);
140
+
141
+ await ch.sendTransfer(payload);
142
+ ```
143
+
144
+ ## Building from Source
145
+
146
+ ```bash
147
+ npm install
148
+ npm run build
149
+ ```
150
+
151
+ ## Contributing
152
+
153
+ Found a bug or have a feature request? Open an [Issue](https://github.com/leiko57/SikioPipe/issues/new).
154
+ PRs are welcome!
155
+
156
+ ## License
157
+
158
+ This project is licensed under AGPLv3 (`AGPL-3.0-only`).
159
+
160
+
@@ -0,0 +1,27 @@
1
+ import type { Connection } from "../endpoint/connection.js";
2
+ export type BorrowedChunk = {
3
+ readonly bytes: Uint8Array;
4
+ release(): void;
5
+ };
6
+ export type TransferPayload = {
7
+ readonly buffer: ArrayBuffer;
8
+ readonly payload: Uint8Array;
9
+ };
10
+ export type ChannelOptions = {};
11
+ export type Channel = {
12
+ send(bytes: Uint8Array, opts?: {
13
+ signal?: AbortSignal;
14
+ }): Promise<void>;
15
+ sendTransfer(bytes: Uint8Array, opts?: {
16
+ signal?: AbortSignal;
17
+ }): Promise<void>;
18
+ recv(opts?: {
19
+ signal?: AbortSignal;
20
+ }): AsyncIterable<Uint8Array>;
21
+ recvBorrowed(opts?: {
22
+ signal?: AbortSignal;
23
+ }): AsyncIterable<BorrowedChunk>;
24
+ };
25
+ export declare function createTransferPayload(byteLength: number): TransferPayload;
26
+ export declare function channel(_conn: Connection, _opts?: ChannelOptions): Channel;
27
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel/channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACjE,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;CAC7E,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAKzE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,GAAE,cAAmB,GAAG,OAAO,CAqD9E"}
@@ -0,0 +1,63 @@
1
+ import { HEADER_BYTES } from "../protocol/header.js";
2
+ import { MessageKind } from "../protocol/kinds.js";
3
+ export function createTransferPayload(byteLength) {
4
+ if (!Number.isInteger(byteLength) || byteLength < 0)
5
+ throw new RangeError("Invalid byteLength");
6
+ const buffer = new ArrayBuffer(HEADER_BYTES + byteLength);
7
+ const payload = new Uint8Array(buffer, HEADER_BYTES, byteLength);
8
+ return { buffer, payload };
9
+ }
10
+ export function channel(_conn, _opts = {}) {
11
+ return {
12
+ async send(bytes, opts) {
13
+ await _conn.router.send({
14
+ kind: MessageKind.Data,
15
+ id: 0,
16
+ streamId: 0,
17
+ flags: 0,
18
+ aux: 0,
19
+ payload: bytes,
20
+ }, opts);
21
+ },
22
+ async sendTransfer(bytes, opts) {
23
+ const transport = _conn.transport;
24
+ if (typeof transport.sendTransfer !== "function")
25
+ throw new Error("sendTransfer is not supported");
26
+ if (!(bytes.buffer instanceof ArrayBuffer))
27
+ throw new RangeError("Transfer payload must use ArrayBuffer");
28
+ if (bytes.byteOffset !== HEADER_BYTES)
29
+ throw new RangeError("Invalid transfer payload offset");
30
+ if (bytes.byteLength > transport.payloadCapacity)
31
+ throw new RangeError("Frame too large");
32
+ if (bytes.buffer.byteLength < HEADER_BYTES + bytes.byteLength)
33
+ throw new RangeError("Invalid transfer buffer");
34
+ await transport.sendTransfer({
35
+ kind: MessageKind.Data,
36
+ id: 0,
37
+ streamId: 0,
38
+ flags: 0,
39
+ aux: 0,
40
+ payload: bytes,
41
+ }, bytes.buffer, opts);
42
+ },
43
+ async *recv(opts) {
44
+ for await (const frame of _conn.router.recv(MessageKind.Data, opts)) {
45
+ try {
46
+ yield frame.payload.slice();
47
+ }
48
+ finally {
49
+ frame.release();
50
+ }
51
+ }
52
+ },
53
+ async *recvBorrowed(opts) {
54
+ for await (const frame of _conn.router.recv(MessageKind.Data, opts)) {
55
+ yield {
56
+ bytes: frame.payload,
57
+ release: frame.release,
58
+ };
59
+ }
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/channel/channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type Transport, type TransportKind } from "../transport/createTransport.js";
2
+ import { FrameRouter } from "./router.js";
3
+ export type ConnectOptions = {
4
+ mode?: "auto" | "sab" | "postMessage";
5
+ blockSize?: number;
6
+ blockCount?: number;
7
+ handshakeTimeoutMs?: number;
8
+ pingIntervalMs?: number;
9
+ pingTimeoutMs?: number;
10
+ };
11
+ export type Connection = {
12
+ readonly role: "client" | "server";
13
+ readonly transportKind: TransportKind;
14
+ readonly transport: Transport;
15
+ readonly router: FrameRouter;
16
+ close(reason?: string): void;
17
+ };
18
+ export declare function isNodeLike(): boolean;
19
+ export declare function isBrowser(): boolean;
20
+ type WorkerLike = {
21
+ postMessage(value: unknown, transfer?: readonly unknown[]): void;
22
+ addEventListener?: (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void;
23
+ removeEventListener?: (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void;
24
+ on?: (event: "message", listener: (value: unknown) => void) => void;
25
+ off?: (event: "message", listener: (value: unknown) => void) => void;
26
+ };
27
+ type PortLike = {
28
+ postMessage(value: unknown, transfer?: readonly unknown[]): void;
29
+ start?: () => void;
30
+ close?: () => void;
31
+ ref?: () => void;
32
+ unref?: () => void;
33
+ addEventListener?: (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void;
34
+ removeEventListener?: (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void;
35
+ on?: (event: "message", listener: (value: unknown) => void) => void;
36
+ off?: (event: "message", listener: (value: unknown) => void) => void;
37
+ };
38
+ export declare function connectToWorkerLike(worker: WorkerLike, opts: ConnectOptions): Promise<Connection>;
39
+ export declare function acceptConnection(opts?: ConnectOptions): Promise<Connection>;
40
+ export declare function connect(port: PortLike, opts?: ConnectOptions): Promise<Connection>;
41
+ export {};
42
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/endpoint/connection.ts"],"names":[],"mappings":"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"}