{"_id":"@andyfischer/remote-streams","_rev":"7-747259766c2e9234aea68a7af53ae606","name":"@andyfischer/remote-streams","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@andyfischer/remote-streams","version":"0.0.1","license":"MIT","_id":"@andyfischer/remote-streams@0.0.1","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"dist":{"shasum":"c7d25f519de2bba95909c84bd68a11269dbe79e6","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.0.1.tgz","fileCount":72,"integrity":"sha512-Bd++HoF5aZ4Xk4MQ7JUePkFLLAqeGW6R/wxbGcEiELxm98HhL5t/EeCThP7/QwgfM570789L+28mrhZrcdEcoA==","signatures":[{"sig":"MEUCIHjXcZsc5ub/8cvjli9c+iX7Hkh3FfY/+5xfcDCx4b8SAiEAufOyDb1RwuZFm5cNonflpD+cDMAodQrpsdzJLUK6L2A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169639},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"54afb653aee3320547b41c6dbdb9f3adf6375a07","scripts":{"tsc":"tsc","test":"vitest","build":"tsc -p ."},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"_npmVersion":"10.1.0","description":"Send and receive streams (using @andyfischer/streams) across remote connections","directories":{},"_nodeVersion":"20.8.0","dependencies":{"ws":"8.18.0","@andyfischer/query":"^0.0.1","@andyfischer/streams":"^0.0.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"1.6.0","typescript":"^5.2.0","@types/node":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remote-streams_0.0.1_1725122659776_0.37778915965782867","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@andyfischer/remote-streams","version":"0.0.5","license":"MIT","_id":"@andyfischer/remote-streams@0.0.5","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"dist":{"shasum":"6d59f39dd7346253600e41142cf5da953487e43c","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.0.5.tgz","fileCount":85,"integrity":"sha512-wZ7h5rXh6Vx+MGxxVE62ScJRtDAk3N1HEvXgocKUzV6Ca9n2PuKu6h4XRB7uxi8QpFfFW4l/75+eaaZ7IDBI0w==","signatures":[{"sig":"MEQCIDaD2ZrTyynZwGPAyEk9n078HDsp7kIWCP1fYZYppj2aAiBUK0lUp7tuPCeNkZXGbTLAFN8nAZZlVDbZ/6q3AsL+gg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195789},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"e1e995bf0a0f3e8be10e8fa840eaa6f695c98d70","scripts":{"tsc":"tsc","test":"vitest","build":"tsc -p .","prepare":"yarn build"},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"_npmVersion":"10.1.0","description":"Send and receive streams (using @andyfischer/streams) across remote connections","directories":{},"_nodeVersion":"20.8.0","dependencies":{"ws":"8.18.0","@andyfischer/query":"^0.0.6","@andyfischer/streams":"^0.0.3"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"1.6.0","typescript":"^5.2.0","@types/node":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remote-streams_0.0.5_1725420572783_0.14114248044877886","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@andyfischer/remote-streams","version":"0.0.6","license":"MIT","_id":"@andyfischer/remote-streams@0.0.6","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"dist":{"shasum":"9f04d360f27f6f559aae1269e252cf4556455d4b","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.0.6.tgz","fileCount":85,"integrity":"sha512-ifMiCkhaTLxBB/SkmcE0cwN+VN9JoEfwfEcuEq0klB0X6FGYXDqiMcjFhkeW3L4KR4rRJK0QVh44CPUHkrXYfw==","signatures":[{"sig":"MEUCIDHlF7jKm5LVl/h8osWjxaM0k+lVqoXtRxdYPe6NSWNaAiEA9/7tN5nP5wS4dpygKM/hfUBHlqM9WNj9yjeLrhhL8ZM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195732},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"e1e995bf0a0f3e8be10e8fa840eaa6f695c98d70","scripts":{"tsc":"tsc","test":"vitest","build":"tsc -p .","prepare":"yarn build"},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"_npmVersion":"10.1.0","description":"Send and receive streams (using @andyfischer/streams) across remote connections","directories":{},"_nodeVersion":"20.8.0","dependencies":{"ws":"8.18.0","@andyfischer/query":"^0.0.6","@andyfischer/streams":"^0.0.6"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"1.6.0","typescript":"^5.2.0","@types/node":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remote-streams_0.0.6_1725420798298_0.7809292789074076","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@andyfischer/remote-streams","version":"0.0.7","license":"MIT","_id":"@andyfischer/remote-streams@0.0.7","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"dist":{"shasum":"80053b5ea9879bb6f6ef281cc90f8ea755713c61","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.0.7.tgz","fileCount":90,"integrity":"sha512-/FT8lh9Is+mBsnBmz/RbuCnnKv0wfhzepTgMmNFf0nBQZmxeFTcqcgzncCy1l5oH4YLDWfGoWCEoSuZ6PfxoXA==","signatures":[{"sig":"MEYCIQC/CwkKjD/hyU4eFHYghX5Y5JGYu/X25oJqQKQSGE7CCAIhAK7bkpnXbfCTDhMwrFDXnOYnq5rA3ANOrai/5WIJs4UD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":201834},"main":"dist/index.js","gitHead":"79095ddc595be0dce367dab142fd23fbd56512a5","scripts":{"tsc":"tsc","test":"vitest","build":"tsc -p .","prepare":"yarn build"},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"_npmVersion":"lerna/8.1.8/node@v20.8.0+arm64 (darwin)","description":"Send and receive streams (using @andyfischer/streams) across remote connections","directories":{},"sideEffects":false,"_nodeVersion":"20.8.0","dependencies":{"ws":"8.18.0","@andyfischer/query":"^0.0.7","@andyfischer/streams":"^0.0.7"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"1.6.0","typescript":"^5.2.0","@types/node":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remote-streams_0.0.7_1725830410891_0.41599495614645776","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"@andyfischer/remote-streams","version":"0.0.8","license":"MIT","_id":"@andyfischer/remote-streams@0.0.8","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"dist":{"shasum":"04b1b8767668ee38d76243bbbdf9a95cfd0ddce7","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.0.8.tgz","fileCount":90,"integrity":"sha512-ks+voqvzONPCItAWVFc+WN8GK0PgwRr3nq3+YTrz+C1iX09tXgDXCz6CbonGYHUql/a4qb/LZRYv4LC4gqyZXg==","signatures":[{"sig":"MEUCIQDxdW8vQptpiAZ03+eDAVfQRr6kPzHKcicBz0etBtclmgIgIaL60vb+yXIYWc8Tj0WTfNzZK9HNdPEhI7UYsXHt+Zg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":202519},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"4fd4f4a0d31874c2994fe26679185d4a10a63453","scripts":{"tsc":"tsc","test":"vitest","build":"tsc -p .","prepare":"yarn build"},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"_npmVersion":"10.1.0","description":"Send and receive streams (using @andyfischer/streams) across remote connections","directories":{},"sideEffects":false,"_nodeVersion":"20.8.0","dependencies":{"ws":"8.18.0","@andyfischer/query":"^0.0.8","@andyfischer/streams":"^0.0.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"1.6.0","typescript":"^5.2.0","@types/node":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remote-streams_0.0.8_1727016661911_0.31886754489340574","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@andyfischer/remote-streams","version":"0.1.0","license":"MIT","_id":"@andyfischer/remote-streams@0.1.0","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"dist":{"shasum":"f69826f5e841988306dae6b1ee76e03853240191","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.1.0.tgz","fileCount":136,"integrity":"sha512-QQwv+SzNKfPND7BlaZFH9xhh1Jy0xISEhx6GLR0cb9P0w7L9jmvE8+3jsZA7W9IAo31I0U7i3xVZs1VWQd6k+Q==","signatures":[{"sig":"MEUCIQCClJsogybxBBrSDfXEiyKdjYJT2vt0K94IlOGgSgx00QIgAP+4PfAIPTT3zajw4cW/+ufe8HG+vXTvkpFFy3EyUkE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303605},"main":"dist/index.js","gitHead":"277c4804beaa27cb9f6f332795b0913a8b17454f","scripts":{"tsc":"tsc","test":"vitest","build":"tsc -p .","prepare":"yarn build"},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"_npmVersion":"lerna/8.2.1/node@v20.8.0+arm64 (darwin)","description":"Send and receive streams (using @andyfischer/streams) across remote connections","directories":{},"sideEffects":false,"_nodeVersion":"20.8.0","dependencies":{"ws":"8.18.0","@andyfischer/query":"^0.1.0","@andyfischer/streams":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"1.6.0","typescript":"^5.2.0","@types/node":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/remote-streams_0.1.0_1742185679004_0.20180067195797213","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@andyfischer/remote-streams","version":"0.1.1","license":"MIT","description":"Send and receive streams (using @andyfischer/streams) across remote connections","sideEffects":false,"main":"dist/index.js","scripts":{"build":"tsc -p .","tsc":"tsc","test":"vitest","prepare":"yarn build"},"dependencies":{"@andyfischer/query":"^0.1.0","@andyfischer/streams":"^0.1.0","ws":"8.18.0"},"devDependencies":{"@types/node":"^14.0.0","typescript":"^5.2.0","vitest":"1.6.0"},"gitHead":"277c4804beaa27cb9f6f332795b0913a8b17454f","_id":"@andyfischer/remote-streams@0.1.1","types":"./dist/index.d.ts","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-pLiL23M0SilPS5q45sSCpl2nr6/B0spiTm7gvrNXjN1wp1KhMXlEWW7jek6rPP8N2dyeNJ+gXmLYJPAc8KwXfQ==","shasum":"70935777a6c82b97c678d3f67c3640b621c38918","tarball":"https://registry.npmjs.org/@andyfischer/remote-streams/-/remote-streams-0.1.1.tgz","fileCount":136,"unpackedSize":303686,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDKGmbNOvUnX3GGYbWYx30Sr3fSkpmZxNLfelKGn6dlWAIgNGZdyiwEoUuMHFoUPUItiZ+F+KTzZeRZBPRGtkTE1TQ="}]},"_npmUser":{"name":"andy_fischer","email":"andy.fischer@gmail.com"},"directories":{},"maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/remote-streams_0.1.1_1742260202097_0.8229529743373167"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-31T16:44:19.682Z","modified":"2025-03-18T01:10:02.477Z","0.0.1":"2024-08-31T16:44:19.945Z","0.0.5":"2024-09-04T03:29:32.992Z","0.0.6":"2024-09-04T03:33:18.545Z","0.0.7":"2024-09-08T21:20:11.042Z","0.0.8":"2024-09-22T14:51:02.128Z","0.1.0":"2025-03-17T04:27:59.232Z","0.1.1":"2025-03-18T01:10:02.274Z"},"license":"MIT","description":"Send and receive streams (using @andyfischer/streams) across remote connections","maintainers":[{"name":"andy_fischer","email":"andy.fischer@gmail.com"}],"readme":"\n# Outline #\n\nLibrary for remote transmission of data on Stream objects. (using `@andyfischer/streams`).\n\nEach connection is multiplexed so it can support multiple streams at once.\nFor example, the HTTP client can receive data for multiple Streams as part of a single HTTP request.\n\nSupports a few builtin transport types and supports custom transports.\n\nProvides a generic Connection interface, so that most of the code can be agnostic about\nwhat the connection's transport is.\n\n# Builtin transports #\n\n * HttpClient - Client using `fetch` to make HTTP requests.\n * MessagePort - Client using Javascript `MessagePort` objects (used in web workers)\n * WebSocket - Client using a WebSocket connection.\n * HttpServer - Server that handles HTTP requests.\n * WebSocketServer - Server that handles WebSocket connections.\n\n# Overview #\n\nEach remote connection has two layers:\n\n * *Connection* layer\n   - Implemented by the `Connection` class.\n   - Same class used for all types of protocols.\n   - Handles multiplexing of request & response streams across the transport.\n   - Handles the connection state (connected / closed / etc)\n   - Handles creating the Transport as needed.\n   - Handles queueing of incoming messages if we're waiting to establish the connection.\n\n * *Transport* layer\n   - Seperate implementations for different protocols: HTTP, WebSocket, etc.\n   - Lower level, handles the details of sending the message across some remote protocol.\n   - Responsible for transporting messages to & from the Connection.\n\n# How to write a new Transport #\n\nThe transport interface looks like:\n\n    interface ConnectionTransport<RequestType, ResponseType> {\n        send(message: TransportMessage<RequestType>): void\n        incomingEvents: Stream< TransportMessage<RequestType> >\n        close(): void\n    }\n\n","readmeFilename":"README.md"}