@hashtree/worker 0.2.1 → 0.2.3
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.
- package/LICENSE +21 -0
- package/dist/app-runtime.d.ts +60 -0
- package/dist/app-runtime.d.ts.map +1 -0
- package/dist/app-runtime.js +271 -0
- package/dist/app-runtime.js.map +1 -0
- package/dist/capabilities/blossomBandwidthTracker.d.ts +26 -0
- package/dist/capabilities/blossomBandwidthTracker.d.ts.map +1 -0
- package/dist/capabilities/blossomBandwidthTracker.js +53 -0
- package/dist/capabilities/blossomBandwidthTracker.js.map +1 -0
- package/dist/capabilities/blossomTransport.d.ts +22 -0
- package/dist/capabilities/blossomTransport.d.ts.map +1 -0
- package/dist/capabilities/blossomTransport.js +139 -0
- package/dist/capabilities/blossomTransport.js.map +1 -0
- package/dist/capabilities/connectivity.d.ts +3 -0
- package/dist/capabilities/connectivity.d.ts.map +1 -0
- package/dist/capabilities/connectivity.js +49 -0
- package/dist/capabilities/connectivity.js.map +1 -0
- package/dist/capabilities/idbStorage.d.ts +25 -0
- package/dist/capabilities/idbStorage.d.ts.map +1 -0
- package/dist/capabilities/idbStorage.js +73 -0
- package/dist/capabilities/idbStorage.js.map +1 -0
- package/dist/capabilities/meshRouterStore.d.ts +71 -0
- package/dist/capabilities/meshRouterStore.d.ts.map +1 -0
- package/dist/capabilities/meshRouterStore.js +316 -0
- package/dist/capabilities/meshRouterStore.js.map +1 -0
- package/dist/capabilities/rootResolver.d.ts +10 -0
- package/dist/capabilities/rootResolver.d.ts.map +1 -0
- package/dist/capabilities/rootResolver.js +392 -0
- package/dist/capabilities/rootResolver.js.map +1 -0
- package/dist/client-id.d.ts +18 -0
- package/dist/client-id.d.ts.map +1 -0
- package/dist/client-id.js +98 -0
- package/dist/client-id.js.map +1 -0
- package/dist/client.d.ts +61 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +417 -0
- package/dist/client.js.map +1 -0
- package/dist/entry.d.ts +2 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +3 -0
- package/dist/entry.js.map +1 -0
- package/dist/htree-path.d.ts +13 -0
- package/dist/htree-path.d.ts.map +1 -0
- package/dist/htree-path.js +38 -0
- package/dist/htree-path.js.map +1 -0
- package/dist/htree-url.d.ts +22 -0
- package/dist/htree-url.d.ts.map +1 -0
- package/dist/htree-url.js +118 -0
- package/dist/htree-url.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mediaStreaming.d.ts +7 -0
- package/dist/mediaStreaming.d.ts.map +1 -0
- package/dist/mediaStreaming.js +48 -0
- package/dist/mediaStreaming.js.map +1 -0
- package/dist/p2p/boundedQueue.d.ts +79 -0
- package/dist/p2p/boundedQueue.d.ts.map +1 -0
- package/dist/p2p/boundedQueue.js +134 -0
- package/dist/p2p/boundedQueue.js.map +1 -0
- package/dist/p2p/errorMessage.d.ts +5 -0
- package/dist/p2p/errorMessage.d.ts.map +1 -0
- package/dist/p2p/errorMessage.js +7 -0
- package/dist/p2p/errorMessage.js.map +1 -0
- package/dist/p2p/index.d.ts +8 -0
- package/dist/p2p/index.d.ts.map +1 -0
- package/dist/p2p/index.js +6 -0
- package/dist/p2p/index.js.map +1 -0
- package/dist/p2p/lruCache.d.ts +26 -0
- package/dist/p2p/lruCache.d.ts.map +1 -0
- package/dist/p2p/lruCache.js +65 -0
- package/dist/p2p/lruCache.js.map +1 -0
- package/dist/p2p/meshQueryRouter.d.ts +57 -0
- package/dist/p2p/meshQueryRouter.d.ts.map +1 -0
- package/dist/p2p/meshQueryRouter.js +264 -0
- package/dist/p2p/meshQueryRouter.js.map +1 -0
- package/dist/p2p/protocol.d.ts +10 -0
- package/dist/p2p/protocol.d.ts.map +1 -0
- package/dist/p2p/protocol.js +2 -0
- package/dist/p2p/protocol.js.map +1 -0
- package/dist/p2p/queryForwardingMachine.d.ts +46 -0
- package/dist/p2p/queryForwardingMachine.d.ts.map +1 -0
- package/dist/p2p/queryForwardingMachine.js +144 -0
- package/dist/p2p/queryForwardingMachine.js.map +1 -0
- package/dist/p2p/signaling.d.ts +63 -0
- package/dist/p2p/signaling.d.ts.map +1 -0
- package/dist/p2p/signaling.js +185 -0
- package/dist/p2p/signaling.js.map +1 -0
- package/dist/p2p/uploadRateLimiter.d.ts +21 -0
- package/dist/p2p/uploadRateLimiter.d.ts.map +1 -0
- package/dist/p2p/uploadRateLimiter.js +62 -0
- package/dist/p2p/uploadRateLimiter.js.map +1 -0
- package/dist/p2p/webrtcController.d.ts +176 -0
- package/dist/p2p/webrtcController.d.ts.map +1 -0
- package/dist/p2p/webrtcController.js +938 -0
- package/dist/p2p/webrtcController.js.map +1 -0
- package/dist/p2p/webrtcProxy.d.ts +62 -0
- package/dist/p2p/webrtcProxy.d.ts.map +1 -0
- package/dist/p2p/webrtcProxy.js +447 -0
- package/dist/p2p/webrtcProxy.js.map +1 -0
- package/dist/privacyGuards.d.ts +14 -0
- package/dist/privacyGuards.d.ts.map +1 -0
- package/dist/privacyGuards.js +27 -0
- package/dist/privacyGuards.js.map +1 -0
- package/dist/protocol.d.ts +225 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +2 -0
- package/dist/protocol.js.map +1 -0
- package/dist/relay/identity.d.ts +36 -0
- package/dist/relay/identity.d.ts.map +1 -0
- package/dist/relay/identity.js +78 -0
- package/dist/relay/identity.js.map +1 -0
- package/dist/relay/mediaHandler.d.ts +64 -0
- package/dist/relay/mediaHandler.d.ts.map +1 -0
- package/dist/relay/mediaHandler.js +1285 -0
- package/dist/relay/mediaHandler.js.map +1 -0
- package/dist/relay/ndk.d.ts +96 -0
- package/dist/relay/ndk.d.ts.map +1 -0
- package/dist/relay/ndk.js +502 -0
- package/dist/relay/ndk.js.map +1 -0
- package/dist/relay/nostr-wasm.d.ts +14 -0
- package/dist/relay/nostr-wasm.d.ts.map +1 -0
- package/dist/relay/nostr-wasm.js +246 -0
- package/dist/relay/nostr-wasm.js.map +1 -0
- package/dist/relay/nostr.d.ts +60 -0
- package/dist/relay/nostr.d.ts.map +1 -0
- package/dist/relay/nostr.js +207 -0
- package/dist/relay/nostr.js.map +1 -0
- package/dist/relay/protocol.d.ts +592 -0
- package/dist/relay/protocol.d.ts.map +1 -0
- package/dist/relay/protocol.js +16 -0
- package/dist/relay/protocol.js.map +1 -0
- package/dist/relay/publicAssetUrl.d.ts +6 -0
- package/dist/relay/publicAssetUrl.d.ts.map +1 -0
- package/dist/relay/publicAssetUrl.js +14 -0
- package/dist/relay/publicAssetUrl.js.map +1 -0
- package/dist/relay/rootPathResolver.d.ts +9 -0
- package/dist/relay/rootPathResolver.d.ts.map +1 -0
- package/dist/relay/rootPathResolver.js +32 -0
- package/dist/relay/rootPathResolver.js.map +1 -0
- package/dist/relay/signing.d.ts +50 -0
- package/dist/relay/signing.d.ts.map +1 -0
- package/dist/relay/signing.js +299 -0
- package/dist/relay/signing.js.map +1 -0
- package/dist/relay/treeRootCache.d.ts +86 -0
- package/dist/relay/treeRootCache.d.ts.map +1 -0
- package/dist/relay/treeRootCache.js +269 -0
- package/dist/relay/treeRootCache.js.map +1 -0
- package/dist/relay/treeRootSubscription.d.ts +55 -0
- package/dist/relay/treeRootSubscription.d.ts.map +1 -0
- package/dist/relay/treeRootSubscription.js +478 -0
- package/dist/relay/treeRootSubscription.js.map +1 -0
- package/dist/relay/utils/constants.d.ts +76 -0
- package/dist/relay/utils/constants.d.ts.map +1 -0
- package/dist/relay/utils/constants.js +113 -0
- package/dist/relay/utils/constants.js.map +1 -0
- package/dist/relay/utils/errorMessage.d.ts +5 -0
- package/dist/relay/utils/errorMessage.d.ts.map +1 -0
- package/dist/relay/utils/errorMessage.js +8 -0
- package/dist/relay/utils/errorMessage.js.map +1 -0
- package/dist/relay/utils/lruCache.d.ts +26 -0
- package/dist/relay/utils/lruCache.d.ts.map +1 -0
- package/dist/relay/utils/lruCache.js +66 -0
- package/dist/relay/utils/lruCache.js.map +1 -0
- package/dist/relay/webrtc.d.ts +2 -0
- package/dist/relay/webrtc.d.ts.map +1 -0
- package/dist/relay/webrtc.js +3 -0
- package/dist/relay/webrtc.js.map +1 -0
- package/dist/relay/webrtcSignaling.d.ts +37 -0
- package/dist/relay/webrtcSignaling.d.ts.map +1 -0
- package/dist/relay/webrtcSignaling.js +86 -0
- package/dist/relay/webrtcSignaling.js.map +1 -0
- package/dist/relay/worker.d.ts +12 -0
- package/dist/relay/worker.d.ts.map +1 -0
- package/dist/relay/worker.js +1540 -0
- package/dist/relay/worker.js.map +1 -0
- package/dist/relay-client.d.ts +31 -0
- package/dist/relay-client.d.ts.map +1 -0
- package/dist/relay-client.js +197 -0
- package/dist/relay-client.js.map +1 -0
- package/dist/relay-entry.d.ts +2 -0
- package/dist/relay-entry.d.ts.map +1 -0
- package/dist/relay-entry.js +2 -0
- package/dist/relay-entry.js.map +1 -0
- package/dist/runtime-network.d.ts +23 -0
- package/dist/runtime-network.d.ts.map +1 -0
- package/dist/runtime-network.js +105 -0
- package/dist/runtime-network.js.map +1 -0
- package/dist/runtime.d.ts +24 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +126 -0
- package/dist/runtime.js.map +1 -0
- package/dist/transferableBytes.d.ts +2 -0
- package/dist/transferableBytes.d.ts.map +1 -0
- package/dist/transferableBytes.js +6 -0
- package/dist/transferableBytes.js.map +1 -0
- package/dist/tree-root.d.ts +201 -0
- package/dist/tree-root.d.ts.map +1 -0
- package/dist/tree-root.js +632 -0
- package/dist/tree-root.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +9 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +793 -0
- package/dist/worker.js.map +1 -0
- package/package.json +14 -14
- package/src/capabilities/blossomTransport.ts +1 -1
- package/src/worker.ts +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htree-url.js","sourceRoot":"","sources":["../src/htree-url.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { HashtreeWorkerClient } from './client.js';
|
|
2
|
+
export type { WorkerFactory, P2PFetchHandler } from './client.js';
|
|
3
|
+
export { RelayWorkerClient } from './relay-client.js';
|
|
4
|
+
export type { TreeRootInfo as RelayTreeRootInfo, TreeRootUpdate as RelayTreeRootUpdate, RelayWorkerConfig, RelayWorkerRequest, RelayWorkerResponse, } from './relay-client.js';
|
|
5
|
+
export { canUseInjectedHtreeServerUrl, canUseSameOriginHtreeProtocolStreaming, getInjectedHtreeServerUrl, resolveRuntimeHtreeBaseUrl, shouldEagerLoadMediaInNativeChildRuntime, shouldPreferSameOriginHtreeRoutes, } from './runtime.js';
|
|
6
|
+
export type { HtreeRuntimeLocationLike, HtreeRuntimeWindowLike, ResolveRuntimeHtreeBaseUrlOptions, } from './runtime.js';
|
|
7
|
+
export { resolveRuntimeEndpoints, } from './runtime-network.js';
|
|
8
|
+
export type { ResolveRuntimeEndpointsOptions, RuntimeEndpoints, } from './runtime-network.js';
|
|
9
|
+
export { createHtreeRuntime } from './app-runtime.js';
|
|
10
|
+
export type { HtreeRuntime, HtreeRuntimeEndpointOverrides, HtreeRuntimeMediaPortOptions, HtreeRuntimeMediaUrlOptions, HtreeRuntimeOptions, HtreeRuntimeRequestUrlOptions, HtreeRuntimeWorkerConfigOptions, RuntimeValueSource, } from './app-runtime.js';
|
|
11
|
+
export { buildHtreeRequestPath, parseHtreeUrl, resolveHtreeRequestUrl, } from './htree-url.js';
|
|
12
|
+
export type { MutableHtreeRequestStyle, ParsedHtreeUrl, ResolveHtreeRequestUrlOptions, } from './htree-url.js';
|
|
13
|
+
export type { HtreeClientIdStorageLike } from './client-id.js';
|
|
14
|
+
export type { BlossomServerConfig, WorkerConfig, WorkerRequest, WorkerResponse, RootResolveOptions, ConnectivityState, UploadProgressState, WorkerDiagnosticEvent, WorkerDiagnosticLevel, BlossomBandwidthState, BlossomBandwidthServerStats, BlobSource, } from './protocol.js';
|
|
15
|
+
export { WebRTCController, WebRTCProxy, initWebRTCProxy, getWebRTCProxy, closeWebRTCProxy, } from './p2p/index.js';
|
|
16
|
+
export type { WebRTCControllerConfig } from './p2p/index.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EACV,YAAY,IAAI,iBAAiB,EACjC,cAAc,IAAI,mBAAmB,EACrC,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,4BAA4B,EAC5B,sCAAsC,EACtC,yBAAyB,EACzB,0BAA0B,EAC1B,wCAAwC,EACxC,iCAAiC,GAClC,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,8BAA8B,EAC9B,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,YAAY,EACZ,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,wBAAwB,EACxB,cAAc,EACd,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,EAC3B,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { HashtreeWorkerClient } from './client.js';
|
|
2
|
+
export { RelayWorkerClient } from './relay-client.js';
|
|
3
|
+
export { canUseInjectedHtreeServerUrl, canUseSameOriginHtreeProtocolStreaming, getInjectedHtreeServerUrl, resolveRuntimeHtreeBaseUrl, shouldEagerLoadMediaInNativeChildRuntime, shouldPreferSameOriginHtreeRoutes, } from './runtime.js';
|
|
4
|
+
export { resolveRuntimeEndpoints, } from './runtime-network.js';
|
|
5
|
+
export { createHtreeRuntime } from './app-runtime.js';
|
|
6
|
+
export { buildHtreeRequestPath, parseHtreeUrl, resolveHtreeRequestUrl, } from './htree-url.js';
|
|
7
|
+
export { WebRTCController, WebRTCProxy, initWebRTCProxy, getWebRTCProxy, closeWebRTCProxy, } from './p2p/index.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAQtD,OAAO,EACL,4BAA4B,EAC5B,sCAAsC,EACtC,yBAAyB,EACzB,0BAA0B,EAC1B,wCAAwC,EACxC,iCAAiC,GAClC,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAWtD,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAsBxB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CID, HashTree } from '@hashtree/core';
|
|
2
|
+
/**
|
|
3
|
+
* Stream a bounded byte range from a CID without materializing the whole range in memory.
|
|
4
|
+
* Output chunks are capped at `chunkSize` bytes.
|
|
5
|
+
*/
|
|
6
|
+
export declare function streamFileRangeChunks(tree: Pick<HashTree, 'readFileStream'>, cid: CID, start: number, endInclusive: number, chunkSize: number, prefetch?: number): AsyncGenerator<Uint8Array>;
|
|
7
|
+
//# sourceMappingURL=mediaStreaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaStreaming.d.ts","sourceRoot":"","sources":["../src/mediaStreaming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIpD;;;GAGG;AACH,wBAAuB,qBAAqB,CAC1C,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EACtC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAyB,GAClC,cAAc,CAAC,UAAU,CAAC,CA+C5B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const DEFAULT_PREFETCH = 2;
|
|
2
|
+
/**
|
|
3
|
+
* Stream a bounded byte range from a CID without materializing the whole range in memory.
|
|
4
|
+
* Output chunks are capped at `chunkSize` bytes.
|
|
5
|
+
*/
|
|
6
|
+
export async function* streamFileRangeChunks(tree, cid, start, endInclusive, chunkSize, prefetch = DEFAULT_PREFETCH) {
|
|
7
|
+
if (chunkSize <= 0) {
|
|
8
|
+
throw new Error('chunkSize must be > 0');
|
|
9
|
+
}
|
|
10
|
+
if (endInclusive < start) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
let remaining = endInclusive - start + 1;
|
|
14
|
+
let pending = new Uint8Array(chunkSize);
|
|
15
|
+
let pendingLength = 0;
|
|
16
|
+
for await (const sourceChunk of tree.readFileStream(cid, { offset: start, prefetch })) {
|
|
17
|
+
if (remaining <= 0)
|
|
18
|
+
break;
|
|
19
|
+
if (sourceChunk.byteLength === 0)
|
|
20
|
+
continue;
|
|
21
|
+
const consumed = Math.min(sourceChunk.byteLength, remaining);
|
|
22
|
+
const source = consumed === sourceChunk.byteLength ? sourceChunk : sourceChunk.subarray(0, consumed);
|
|
23
|
+
remaining -= consumed;
|
|
24
|
+
let cursor = 0;
|
|
25
|
+
while (cursor < source.byteLength) {
|
|
26
|
+
const available = source.byteLength - cursor;
|
|
27
|
+
if (pendingLength === 0 && available >= chunkSize) {
|
|
28
|
+
// Emit direct full-size chunks with independent buffers for transfer.
|
|
29
|
+
yield source.slice(cursor, cursor + chunkSize);
|
|
30
|
+
cursor += chunkSize;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const toCopy = Math.min(chunkSize - pendingLength, available);
|
|
34
|
+
pending.set(source.subarray(cursor, cursor + toCopy), pendingLength);
|
|
35
|
+
pendingLength += toCopy;
|
|
36
|
+
cursor += toCopy;
|
|
37
|
+
if (pendingLength === chunkSize) {
|
|
38
|
+
yield pending;
|
|
39
|
+
pending = new Uint8Array(chunkSize);
|
|
40
|
+
pendingLength = 0;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (pendingLength > 0) {
|
|
45
|
+
yield pending.slice(0, pendingLength);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=mediaStreaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaStreaming.js","sourceRoot":"","sources":["../src/mediaStreaming.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;;GAGG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,IAAsC,EACtC,GAAQ,EACR,KAAa,EACb,YAAoB,EACpB,SAAiB,EACjB,WAAmB,gBAAgB;IAEnC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,IAAI,KAAK,EAAE,MAAM,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACtF,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM;QAC1B,IAAI,WAAW,CAAC,UAAU,KAAK,CAAC;YAAE,SAAS;QAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,QAAQ,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrG,SAAS,IAAI,QAAQ,CAAC;QAEtB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;YAE7C,IAAI,aAAa,KAAK,CAAC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBAClD,sEAAsE;gBACtE,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;gBAC/C,MAAM,IAAI,SAAS,CAAC;gBACpB,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,aAAa,EAAE,SAAS,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;YACrE,aAAa,IAAI,MAAM,CAAC;YACxB,MAAM,IAAI,MAAM,CAAC;YAEjB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,OAAO,CAAC;gBACd,OAAO,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBACpC,aAAa,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BoundedQueue - Memory-safe queue with size limits
|
|
3
|
+
*
|
|
4
|
+
* Prevents memory blowup by enforcing both item count and byte limits.
|
|
5
|
+
* When limits are exceeded, oldest items are dropped (FIFO eviction).
|
|
6
|
+
*
|
|
7
|
+
* Use this instead of plain arrays for queues that could grow unbounded,
|
|
8
|
+
* especially for network buffers, send queues, and work queues.
|
|
9
|
+
*/
|
|
10
|
+
export interface BoundedQueueOptions<T> {
|
|
11
|
+
/** Maximum number of items in queue */
|
|
12
|
+
maxItems: number;
|
|
13
|
+
/** Maximum total bytes in queue */
|
|
14
|
+
maxBytes: number;
|
|
15
|
+
/** Function to get byte size of an item */
|
|
16
|
+
getBytes: (item: T) => number;
|
|
17
|
+
/** Optional callback when items are dropped due to overflow */
|
|
18
|
+
onDrop?: (item: T, reason: 'items' | 'bytes') => void;
|
|
19
|
+
}
|
|
20
|
+
export declare class BoundedQueue<T> {
|
|
21
|
+
private items;
|
|
22
|
+
private bytesUsed;
|
|
23
|
+
private readonly maxItems;
|
|
24
|
+
private readonly maxBytes;
|
|
25
|
+
private readonly getBytes;
|
|
26
|
+
private readonly onDrop?;
|
|
27
|
+
constructor(options: BoundedQueueOptions<T>);
|
|
28
|
+
/**
|
|
29
|
+
* Add item to queue, dropping oldest items if limits exceeded
|
|
30
|
+
* @returns Number of items dropped to make room
|
|
31
|
+
*/
|
|
32
|
+
push(item: T): number;
|
|
33
|
+
/**
|
|
34
|
+
* Add item to the front of the queue, dropping items from the back if limits are exceeded.
|
|
35
|
+
* Useful for urgent control messages that should overtake bulk background traffic.
|
|
36
|
+
*/
|
|
37
|
+
unshift(item: T): number;
|
|
38
|
+
/**
|
|
39
|
+
* Remove and return oldest item, or undefined if empty
|
|
40
|
+
*/
|
|
41
|
+
shift(): T | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Peek at oldest item without removing
|
|
44
|
+
*/
|
|
45
|
+
peek(): T | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Clear all items
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get current item count
|
|
52
|
+
*/
|
|
53
|
+
get length(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Get current byte usage
|
|
56
|
+
*/
|
|
57
|
+
get bytes(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Check if queue is empty
|
|
60
|
+
*/
|
|
61
|
+
get isEmpty(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Check if queue is at item capacity
|
|
64
|
+
*/
|
|
65
|
+
get isFullItems(): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Check if queue is at byte capacity
|
|
68
|
+
*/
|
|
69
|
+
get isFullBytes(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Iterate over items (does not remove them)
|
|
72
|
+
*/
|
|
73
|
+
[Symbol.iterator](): Iterator<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Get all items as array (for iteration/reduce operations)
|
|
76
|
+
*/
|
|
77
|
+
toArray(): T[];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=boundedQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundedQueue.d.ts","sourceRoot":"","sources":["../../src/p2p/boundedQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA+C;gBAE3D,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAO3C;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAyBrB;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAwBxB;;OAEG;IACH,KAAK,IAAI,CAAC,GAAG,SAAS;IAQtB;;OAEG;IACH,IAAI,IAAI,CAAC,GAAG,SAAS;IAIrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIjC;;OAEG;IACH,OAAO,IAAI,CAAC,EAAE;CAGf"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BoundedQueue - Memory-safe queue with size limits
|
|
3
|
+
*
|
|
4
|
+
* Prevents memory blowup by enforcing both item count and byte limits.
|
|
5
|
+
* When limits are exceeded, oldest items are dropped (FIFO eviction).
|
|
6
|
+
*
|
|
7
|
+
* Use this instead of plain arrays for queues that could grow unbounded,
|
|
8
|
+
* especially for network buffers, send queues, and work queues.
|
|
9
|
+
*/
|
|
10
|
+
export class BoundedQueue {
|
|
11
|
+
items = [];
|
|
12
|
+
bytesUsed = 0;
|
|
13
|
+
maxItems;
|
|
14
|
+
maxBytes;
|
|
15
|
+
getBytes;
|
|
16
|
+
onDrop;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.maxItems = options.maxItems;
|
|
19
|
+
this.maxBytes = options.maxBytes;
|
|
20
|
+
this.getBytes = options.getBytes;
|
|
21
|
+
this.onDrop = options.onDrop;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Add item to queue, dropping oldest items if limits exceeded
|
|
25
|
+
* @returns Number of items dropped to make room
|
|
26
|
+
*/
|
|
27
|
+
push(item) {
|
|
28
|
+
const itemBytes = this.getBytes(item);
|
|
29
|
+
let dropped = 0;
|
|
30
|
+
// Drop oldest items until we have room
|
|
31
|
+
while (this.items.length > 0 &&
|
|
32
|
+
(this.items.length >= this.maxItems || this.bytesUsed + itemBytes > this.maxBytes)) {
|
|
33
|
+
const droppedItem = this.items.shift();
|
|
34
|
+
const droppedBytes = this.getBytes(droppedItem);
|
|
35
|
+
this.bytesUsed -= droppedBytes;
|
|
36
|
+
dropped++;
|
|
37
|
+
if (this.onDrop) {
|
|
38
|
+
const reason = this.items.length >= this.maxItems ? 'items' : 'bytes';
|
|
39
|
+
this.onDrop(droppedItem, reason);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
this.items.push(item);
|
|
43
|
+
this.bytesUsed += itemBytes;
|
|
44
|
+
return dropped;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Add item to the front of the queue, dropping items from the back if limits are exceeded.
|
|
48
|
+
* Useful for urgent control messages that should overtake bulk background traffic.
|
|
49
|
+
*/
|
|
50
|
+
unshift(item) {
|
|
51
|
+
const itemBytes = this.getBytes(item);
|
|
52
|
+
let dropped = 0;
|
|
53
|
+
while (this.items.length > 0 &&
|
|
54
|
+
(this.items.length >= this.maxItems || this.bytesUsed + itemBytes > this.maxBytes)) {
|
|
55
|
+
const droppedItem = this.items.pop();
|
|
56
|
+
const droppedBytes = this.getBytes(droppedItem);
|
|
57
|
+
this.bytesUsed -= droppedBytes;
|
|
58
|
+
dropped++;
|
|
59
|
+
if (this.onDrop) {
|
|
60
|
+
const reason = this.items.length >= this.maxItems ? 'items' : 'bytes';
|
|
61
|
+
this.onDrop(droppedItem, reason);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
this.items.unshift(item);
|
|
65
|
+
this.bytesUsed += itemBytes;
|
|
66
|
+
return dropped;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Remove and return oldest item, or undefined if empty
|
|
70
|
+
*/
|
|
71
|
+
shift() {
|
|
72
|
+
const item = this.items.shift();
|
|
73
|
+
if (item !== undefined) {
|
|
74
|
+
this.bytesUsed -= this.getBytes(item);
|
|
75
|
+
}
|
|
76
|
+
return item;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Peek at oldest item without removing
|
|
80
|
+
*/
|
|
81
|
+
peek() {
|
|
82
|
+
return this.items[0];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Clear all items
|
|
86
|
+
*/
|
|
87
|
+
clear() {
|
|
88
|
+
this.items = [];
|
|
89
|
+
this.bytesUsed = 0;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get current item count
|
|
93
|
+
*/
|
|
94
|
+
get length() {
|
|
95
|
+
return this.items.length;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get current byte usage
|
|
99
|
+
*/
|
|
100
|
+
get bytes() {
|
|
101
|
+
return this.bytesUsed;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if queue is empty
|
|
105
|
+
*/
|
|
106
|
+
get isEmpty() {
|
|
107
|
+
return this.items.length === 0;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if queue is at item capacity
|
|
111
|
+
*/
|
|
112
|
+
get isFullItems() {
|
|
113
|
+
return this.items.length >= this.maxItems;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if queue is at byte capacity
|
|
117
|
+
*/
|
|
118
|
+
get isFullBytes() {
|
|
119
|
+
return this.bytesUsed >= this.maxBytes;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Iterate over items (does not remove them)
|
|
123
|
+
*/
|
|
124
|
+
*[Symbol.iterator]() {
|
|
125
|
+
yield* this.items;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get all items as array (for iteration/reduce operations)
|
|
129
|
+
*/
|
|
130
|
+
toArray() {
|
|
131
|
+
return [...this.items];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=boundedQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundedQueue.js","sourceRoot":"","sources":["../../src/p2p/boundedQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorMessage.d.ts","sourceRoot":"","sources":["../../src/p2p/errorMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorMessage.js","sourceRoot":"","sources":["../../src/p2p/errorMessage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { WebRTCController, type WebRTCControllerConfig, } from './webrtcController.js';
|
|
2
|
+
export { MeshQueryRouter, encodeForwardRequest, type MeshQueryRouterConfig, type MeshQueryRouterPeer, } from './meshQueryRouter.js';
|
|
3
|
+
export { QueryForwardingMachine, type QueryForwardingMachineConfig, type ForwardDecision, type ForwardTimeoutEvent, } from './queryForwardingMachine.js';
|
|
4
|
+
export { WebRTCProxy, initWebRTCProxy, getWebRTCProxy, closeWebRTCProxy, } from './webrtcProxy.js';
|
|
5
|
+
export type { WebRTCCommand, WebRTCEvent, } from './protocol.js';
|
|
6
|
+
export { SIGNALING_KIND, HELLO_TAG, MAX_EVENT_AGE_SEC, createSignalingFilters, sendSignalingMessage, decodeSignalingEvent, } from './signaling.js';
|
|
7
|
+
export type { SignalingEventLike, GiftSeal, SignalingTemplate, SignalingInnerEvent, SignalingFilters, DecodedSignalingEvent, } from './signaling.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/p2p/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,sBAAsB,EACtB,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,aAAa,EACb,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { WebRTCController, } from './webrtcController.js';
|
|
2
|
+
export { MeshQueryRouter, encodeForwardRequest, } from './meshQueryRouter.js';
|
|
3
|
+
export { QueryForwardingMachine, } from './queryForwardingMachine.js';
|
|
4
|
+
export { WebRTCProxy, initWebRTCProxy, getWebRTCProxy, closeWebRTCProxy, } from './webrtcProxy.js';
|
|
5
|
+
export { SIGNALING_KIND, HELLO_TAG, MAX_EVENT_AGE_SEC, createSignalingFilters, sendSignalingMessage, decodeSignalingEvent, } from './signaling.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/p2p/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,oBAAoB,GAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,sBAAsB,GAIvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple LRU Cache implementation
|
|
3
|
+
*/
|
|
4
|
+
export declare class LRUCache<K, V> {
|
|
5
|
+
private cache;
|
|
6
|
+
private maxSize;
|
|
7
|
+
constructor(maxSize?: number);
|
|
8
|
+
get(key: K): V | undefined;
|
|
9
|
+
set(key: K, value: V): void;
|
|
10
|
+
has(key: K): boolean;
|
|
11
|
+
delete(key: K): boolean;
|
|
12
|
+
clear(): void;
|
|
13
|
+
get size(): number;
|
|
14
|
+
keys(): IterableIterator<K>;
|
|
15
|
+
values(): IterableIterator<V>;
|
|
16
|
+
/**
|
|
17
|
+
* Iterate over all entries (note: does not update LRU order)
|
|
18
|
+
*/
|
|
19
|
+
entries(): IterableIterator<[K, V]>;
|
|
20
|
+
forEach(callback: (value: V, key: K) => void): void;
|
|
21
|
+
/**
|
|
22
|
+
* Make the cache iterable
|
|
23
|
+
*/
|
|
24
|
+
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=lruCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lruCache.d.ts","sourceRoot":"","sources":["../../src/p2p/lruCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAY;IAIjC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAe3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI3B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAI7B;;OAEG;IACF,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAIpC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI;IAInD;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAG9C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple LRU Cache implementation
|
|
3
|
+
*/
|
|
4
|
+
export class LRUCache {
|
|
5
|
+
cache = new Map();
|
|
6
|
+
maxSize;
|
|
7
|
+
constructor(maxSize = 100) {
|
|
8
|
+
this.maxSize = maxSize;
|
|
9
|
+
}
|
|
10
|
+
get(key) {
|
|
11
|
+
const value = this.cache.get(key);
|
|
12
|
+
if (value !== undefined) {
|
|
13
|
+
// Move to end (most recently used)
|
|
14
|
+
this.cache.delete(key);
|
|
15
|
+
this.cache.set(key, value);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
set(key, value) {
|
|
20
|
+
// Delete first to reset position if exists
|
|
21
|
+
this.cache.delete(key);
|
|
22
|
+
// Evict oldest if at capacity
|
|
23
|
+
if (this.cache.size >= this.maxSize) {
|
|
24
|
+
const oldest = this.cache.keys().next().value;
|
|
25
|
+
if (oldest !== undefined) {
|
|
26
|
+
this.cache.delete(oldest);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
this.cache.set(key, value);
|
|
30
|
+
}
|
|
31
|
+
has(key) {
|
|
32
|
+
return this.cache.has(key);
|
|
33
|
+
}
|
|
34
|
+
delete(key) {
|
|
35
|
+
return this.cache.delete(key);
|
|
36
|
+
}
|
|
37
|
+
clear() {
|
|
38
|
+
this.cache.clear();
|
|
39
|
+
}
|
|
40
|
+
get size() {
|
|
41
|
+
return this.cache.size;
|
|
42
|
+
}
|
|
43
|
+
keys() {
|
|
44
|
+
return this.cache.keys();
|
|
45
|
+
}
|
|
46
|
+
values() {
|
|
47
|
+
return this.cache.values();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Iterate over all entries (note: does not update LRU order)
|
|
51
|
+
*/
|
|
52
|
+
*entries() {
|
|
53
|
+
yield* this.cache.entries();
|
|
54
|
+
}
|
|
55
|
+
forEach(callback) {
|
|
56
|
+
this.cache.forEach(callback);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Make the cache iterable
|
|
60
|
+
*/
|
|
61
|
+
[Symbol.iterator]() {
|
|
62
|
+
return this.entries();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=lruCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lruCache.js","sourceRoot":"","sources":["../../src/p2p/lruCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAQ;IACX,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;IACxB,OAAO,CAAS;IAExB,YAAY,UAAkB,GAAG;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,mCAAmC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,2CAA2C;QAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvB,8BAA8B;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,CAAC,OAAO;QACN,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,QAAoC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Store } from '@hashtree/core';
|
|
2
|
+
import { type DataRequest, type PeerHTLConfig } from '@hashtree/nostr';
|
|
3
|
+
export interface MeshQueryRouterPeer {
|
|
4
|
+
peerId: string;
|
|
5
|
+
canSend: () => boolean;
|
|
6
|
+
getHtlConfig: () => PeerHTLConfig;
|
|
7
|
+
sendRequest: (hash: Uint8Array, htl: number) => boolean;
|
|
8
|
+
sendResponse: (hash: Uint8Array, data: Uint8Array) => Promise<void>;
|
|
9
|
+
onForwardedRequest?: () => void;
|
|
10
|
+
onForwardedResolved?: () => void;
|
|
11
|
+
onForwardedSuppressed?: () => void;
|
|
12
|
+
}
|
|
13
|
+
export interface MeshPeerQueryOptions {
|
|
14
|
+
excludePeerId?: string;
|
|
15
|
+
htl: number;
|
|
16
|
+
}
|
|
17
|
+
export interface MeshQueryRouterConfig {
|
|
18
|
+
localStore: Store;
|
|
19
|
+
requestTimeoutMs: number;
|
|
20
|
+
upstreamFetch?: (hash: Uint8Array) => Promise<Uint8Array | null>;
|
|
21
|
+
queryPeers?: (hash: Uint8Array, options: MeshPeerQueryOptions) => Promise<Uint8Array | null>;
|
|
22
|
+
maxForwardsPerPeerWindow?: number;
|
|
23
|
+
forwardRateLimitWindowMs?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface MeshForwardRateLimitConfig {
|
|
26
|
+
maxForwardsPerPeerWindow?: number;
|
|
27
|
+
windowMs?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare class MeshQueryRouter {
|
|
30
|
+
private readonly localStore;
|
|
31
|
+
private readonly requestTimeoutMs;
|
|
32
|
+
private rateLimiter;
|
|
33
|
+
private readonly peers;
|
|
34
|
+
private readonly hashesByRequester;
|
|
35
|
+
private readonly inFlightByHash;
|
|
36
|
+
private readonly pendingUpstreamFetches;
|
|
37
|
+
private upstreamFetch?;
|
|
38
|
+
private queryPeers?;
|
|
39
|
+
constructor(config: MeshQueryRouterConfig);
|
|
40
|
+
registerPeer(peer: MeshQueryRouterPeer): void;
|
|
41
|
+
removePeer(peerId: string): void;
|
|
42
|
+
setUpstreamFetch(upstreamFetch?: (hash: Uint8Array) => Promise<Uint8Array | null>): void;
|
|
43
|
+
setForwardRateLimit(config?: MeshForwardRateLimitConfig): void;
|
|
44
|
+
hasInFlight(hashKey: string): boolean;
|
|
45
|
+
stop(): void;
|
|
46
|
+
private createRateLimiter;
|
|
47
|
+
handleRequest(requesterId: string, req: DataRequest): Promise<void>;
|
|
48
|
+
resolve(hash: Uint8Array, data: Uint8Array): Promise<void>;
|
|
49
|
+
private beginQuery;
|
|
50
|
+
private clearQuery;
|
|
51
|
+
private trackRequester;
|
|
52
|
+
private forwardRequest;
|
|
53
|
+
private startPeerQuery;
|
|
54
|
+
private startUpstreamFetch;
|
|
55
|
+
}
|
|
56
|
+
export declare function encodeForwardRequest(hash: Uint8Array, htl: number): Uint8Array;
|
|
57
|
+
//# sourceMappingURL=meshQueryRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meshQueryRouter.d.ts","sourceRoot":"","sources":["../../src/p2p/meshQueryRouter.ts"],"names":[],"mappings":"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"}
|