@hashtree/worker 0.1.1 → 0.1.2
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/dist/capabilities/blossomTransport.d.ts.map +1 -1
- package/dist/capabilities/blossomTransport.js +41 -8
- package/dist/capabilities/blossomTransport.js.map +1 -1
- 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/iris/mediaHandler.d.ts +25 -1
- package/dist/iris/mediaHandler.d.ts.map +1 -1
- package/dist/iris/mediaHandler.js +838 -102
- package/dist/iris/mediaHandler.js.map +1 -1
- package/dist/iris/ndk.d.ts +2 -1
- package/dist/iris/ndk.d.ts.map +1 -1
- package/dist/iris/ndk.js +12 -6
- package/dist/iris/ndk.js.map +1 -1
- package/dist/iris/protocol.d.ts +3 -0
- package/dist/iris/protocol.d.ts.map +1 -1
- package/dist/iris/protocol.js.map +1 -1
- package/dist/iris/publicAssetUrl.d.ts +6 -0
- package/dist/iris/publicAssetUrl.d.ts.map +1 -0
- package/dist/iris/publicAssetUrl.js +14 -0
- package/dist/iris/publicAssetUrl.js.map +1 -0
- package/dist/iris/rootPathResolver.d.ts +9 -0
- package/dist/iris/rootPathResolver.d.ts.map +1 -0
- package/dist/iris/rootPathResolver.js +32 -0
- package/dist/iris/rootPathResolver.js.map +1 -0
- package/dist/iris/treeRootCache.d.ts +9 -1
- package/dist/iris/treeRootCache.d.ts.map +1 -1
- package/dist/iris/treeRootCache.js +57 -2
- package/dist/iris/treeRootCache.js.map +1 -1
- package/dist/iris/treeRootSubscription.d.ts +5 -0
- package/dist/iris/treeRootSubscription.d.ts.map +1 -1
- package/dist/iris/treeRootSubscription.js +279 -15
- package/dist/iris/treeRootSubscription.js.map +1 -1
- package/dist/iris/worker.js +12 -27
- package/dist/iris/worker.js.map +1 -1
- package/dist/p2p/signaling.d.ts.map +1 -1
- package/dist/p2p/signaling.js +31 -4
- package/dist/p2p/signaling.js.map +1 -1
- package/dist/p2p/webrtcController.d.ts +21 -4
- package/dist/p2p/webrtcController.d.ts.map +1 -1
- package/dist/p2p/webrtcController.js +199 -59
- package/dist/p2p/webrtcController.js.map +1 -1
- package/package.json +12 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blossomTransport.d.ts","sourceRoot":"","sources":["../../src/capabilities/blossomTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,KAAK,qBAAqB,EAI3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EACnC,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"blossomTransport.d.ts","sourceRoot":"","sources":["../../src/capabilities/blossomTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAEZ,KAAK,qBAAqB,EAI3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EACnC,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAKxD,CAAC;AAIF,YAAY,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,8BAA8B,CAAC;AA2CtC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;IAC3D,OAAO,CAAC,KAAK,CAAe;gBAEhB,OAAO,CAAC,EAAE,mBAAmB,EAAE,EAAE,iBAAiB,CAAC,EAAE,6BAA6B;IAO9F,UAAU,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,IAAI;IAKhD,UAAU,IAAI,mBAAmB,EAAE;IAInC,eAAe,IAAI,mBAAmB,EAAE;IAIxC,iBAAiB,IAAI,qBAAqB;IAI1C,OAAO,CAAC,WAAW;IAWnB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,YAAY;IAInE,MAAM,CACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,qBAAqB,GACvC,OAAO,CAAC,IAAI,CAAC;IAYV,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAuC1C,eAAe;CAmB9B"}
|
|
@@ -2,9 +2,12 @@ import { BlossomStore, sha256, toHex, fromHex, } from '@hashtree/core';
|
|
|
2
2
|
import { finalizeEvent, generateSecretKey } from 'nostr-tools/pure';
|
|
3
3
|
import { BlossomBandwidthTracker, } from './blossomBandwidthTracker.js';
|
|
4
4
|
export const DEFAULT_BLOSSOM_SERVERS = [
|
|
5
|
-
{ url: 'https://
|
|
5
|
+
{ url: 'https://cdn.iris.to', read: true, write: false },
|
|
6
|
+
{ url: 'https://hashtree.iris.to', read: true, write: false },
|
|
7
|
+
{ url: 'https://blossom.primal.net', read: true, write: false },
|
|
6
8
|
{ url: 'https://upload.iris.to', read: false, write: true },
|
|
7
9
|
];
|
|
10
|
+
const READ_FETCH_TIMEOUT_MS = 10_000;
|
|
8
11
|
function normalizeServerUrl(url) {
|
|
9
12
|
return url.replace(/\/+$/, '');
|
|
10
13
|
}
|
|
@@ -94,19 +97,46 @@ export class BlossomTransport {
|
|
|
94
97
|
}
|
|
95
98
|
async fetch(hashHex) {
|
|
96
99
|
const readServers = this.servers.filter(server => server.read !== false);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const data = await this.fetchFromServer(baseUrl, hashHex);
|
|
100
|
-
if (data)
|
|
101
|
-
return data;
|
|
100
|
+
if (readServers.length === 0) {
|
|
101
|
+
return null;
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
const pendingFetches = readServers.map((server) => this.fetchFromServer(normalizeServerUrl(server.url), hashHex));
|
|
104
|
+
return await new Promise((resolve) => {
|
|
105
|
+
let settled = false;
|
|
106
|
+
let remaining = pendingFetches.length;
|
|
107
|
+
for (const fetchPromise of pendingFetches) {
|
|
108
|
+
fetchPromise
|
|
109
|
+
.then((result) => {
|
|
110
|
+
if (settled)
|
|
111
|
+
return;
|
|
112
|
+
if (result) {
|
|
113
|
+
settled = true;
|
|
114
|
+
resolve(result);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
remaining -= 1;
|
|
118
|
+
if (remaining === 0) {
|
|
119
|
+
resolve(null);
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
.catch(() => {
|
|
123
|
+
if (settled)
|
|
124
|
+
return;
|
|
125
|
+
remaining -= 1;
|
|
126
|
+
if (remaining === 0) {
|
|
127
|
+
resolve(null);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
});
|
|
104
132
|
}
|
|
105
133
|
async fetchFromServer(baseUrl, hashHex) {
|
|
106
134
|
const urls = [`${baseUrl}/${hashHex}`, `${baseUrl}/${hashHex}.bin`];
|
|
107
135
|
for (const url of urls) {
|
|
136
|
+
const controller = new AbortController();
|
|
137
|
+
const timeout = setTimeout(() => controller.abort(), READ_FETCH_TIMEOUT_MS);
|
|
108
138
|
try {
|
|
109
|
-
const res = await fetch(url);
|
|
139
|
+
const res = await fetch(url, { signal: controller.signal });
|
|
110
140
|
if (!res.ok)
|
|
111
141
|
continue;
|
|
112
142
|
const data = new Uint8Array(await res.arrayBuffer());
|
|
@@ -117,6 +147,9 @@ export class BlossomTransport {
|
|
|
117
147
|
catch {
|
|
118
148
|
continue;
|
|
119
149
|
}
|
|
150
|
+
finally {
|
|
151
|
+
clearTimeout(timeout);
|
|
152
|
+
}
|
|
120
153
|
}
|
|
121
154
|
return null;
|
|
122
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blossomTransport.js","sourceRoot":"","sources":["../../src/capabilities/blossomTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,MAAM,EACN,KAAK,EACL,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EACL,uBAAuB,GAGxB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,MAAM,uBAAuB,GAA0B;IAC5D,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"blossomTransport.js","sourceRoot":"","sources":["../../src/capabilities/blossomTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ParsedMutableHtreePath {
|
|
2
|
+
npub: string;
|
|
3
|
+
treeName: string;
|
|
4
|
+
filePath: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ParsedImmutableHtreePath {
|
|
7
|
+
nhash: string;
|
|
8
|
+
filePath: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function getRawHtreePath(url: URL): string;
|
|
11
|
+
export declare function parseMutableHtreePath(rawPath: string): ParsedMutableHtreePath | null;
|
|
12
|
+
export declare function parseImmutableHtreePath(rawPath: string): ParsedImmutableHtreePath | null;
|
|
13
|
+
//# sourceMappingURL=htree-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htree-path.d.ts","sourceRoot":"","sources":["../src/htree-path.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAUD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAGhD;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAgBpF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,GAAG,IAAI,CAUxF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function safeDecodePathSegment(segment) {
|
|
2
|
+
try {
|
|
3
|
+
return decodeURIComponent(segment);
|
|
4
|
+
}
|
|
5
|
+
catch {
|
|
6
|
+
return segment;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function getRawHtreePath(url) {
|
|
10
|
+
const pathMatch = url.href.match(/^[^:]+:\/\/[^/]+(.*)$/);
|
|
11
|
+
return pathMatch ? (pathMatch[1]?.split('?')[0] || '') : url.pathname;
|
|
12
|
+
}
|
|
13
|
+
export function parseMutableHtreePath(rawPath) {
|
|
14
|
+
const parts = rawPath.replace(/^\/+/, '').split('/');
|
|
15
|
+
if (parts[0] !== 'htree' || parts.length < 3 || !parts[1]?.startsWith('npub1')) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const treeName = safeDecodePathSegment(parts[2] || '');
|
|
19
|
+
if (!treeName) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
npub: parts[1],
|
|
24
|
+
treeName,
|
|
25
|
+
filePath: parts.slice(3).map(safeDecodePathSegment).join('/'),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function parseImmutableHtreePath(rawPath) {
|
|
29
|
+
const parts = rawPath.replace(/^\/+/, '').split('/');
|
|
30
|
+
if (parts[0] !== 'htree' || parts.length < 2 || !parts[1]?.startsWith('nhash1')) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
nhash: parts[1],
|
|
35
|
+
filePath: parts.slice(2).map(safeDecodePathSegment).join('/'),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=htree-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htree-path.js","sourceRoot":"","sources":["../src/htree-path.ts"],"names":[],"mappings":"AAWA,SAAS,qBAAqB,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAQ;IACtC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,QAAQ;QACR,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACf,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,12 @@
|
|
|
4
4
|
* Handles media requests from the service worker via MessagePort.
|
|
5
5
|
* Supports both direct CID-based requests and path-based requests with live streaming.
|
|
6
6
|
*/
|
|
7
|
-
import type { HashTree } from '@hashtree/core';
|
|
7
|
+
import type { HashTree, CID } from '@hashtree/core';
|
|
8
|
+
interface ResolvedRootEntry {
|
|
9
|
+
cid: CID;
|
|
10
|
+
size?: number;
|
|
11
|
+
path?: string;
|
|
12
|
+
}
|
|
8
13
|
/**
|
|
9
14
|
* Initialize the media handler with the HashTree instance
|
|
10
15
|
*/
|
|
@@ -13,4 +18,23 @@ export declare function initMediaHandler(hashTree: HashTree): void;
|
|
|
13
18
|
* Register a MessagePort from the service worker for media streaming
|
|
14
19
|
*/
|
|
15
20
|
export declare function registerMediaPort(port: MessagePort, debug?: boolean): void;
|
|
21
|
+
declare function waitForCachedRoot(npub: string, treeName: string): Promise<CID | null>;
|
|
22
|
+
declare function resolveMutableTreeEntry(npub: string, treeName: string, path: string, options?: {
|
|
23
|
+
allowSingleSegmentRootFallback?: boolean;
|
|
24
|
+
expectedMimeType?: string;
|
|
25
|
+
}): Promise<ResolvedRootEntry | null>;
|
|
26
|
+
declare function resolveCidWithinRoot(rootCid: CID, path: string, options?: {
|
|
27
|
+
allowSingleSegmentRootFallback?: boolean;
|
|
28
|
+
expectedMimeType?: string;
|
|
29
|
+
}): Promise<CID | null>;
|
|
30
|
+
declare function normalizeAliasPath(rootCid: CID, path: string): Promise<string>;
|
|
31
|
+
declare function canListDirectory(rootCid: CID): Promise<boolean>;
|
|
32
|
+
export declare const __test__: {
|
|
33
|
+
resolveCidWithinRoot: typeof resolveCidWithinRoot;
|
|
34
|
+
resolveMutableTreeEntry: typeof resolveMutableTreeEntry;
|
|
35
|
+
normalizeAliasPath: typeof normalizeAliasPath;
|
|
36
|
+
canListDirectory: typeof canListDirectory;
|
|
37
|
+
waitForCachedRoot: typeof waitForCachedRoot;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
16
40
|
//# sourceMappingURL=mediaHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaHandler.d.ts","sourceRoot":"","sources":["../../src/iris/mediaHandler.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"mediaHandler.d.ts","sourceRoot":"","sources":["../../src/iris/mediaHandler.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAkFpD,UAAU,iBAAiB;IACzB,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CA2B1E;AAuVD,iBAAe,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAoDpF;AAED,iBAAe,uBAAuB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0BnC;AAuFD,iBAAe,oBAAoB,CACjC,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAErB;AAoWD,iBAAe,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW7E;AAED,iBAAe,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAW9D;AAED,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC"}
|