@hashtree/worker 0.1.1 → 0.1.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.
Files changed (44) hide show
  1. package/dist/capabilities/blossomTransport.d.ts.map +1 -1
  2. package/dist/capabilities/blossomTransport.js +41 -8
  3. package/dist/capabilities/blossomTransport.js.map +1 -1
  4. package/dist/htree-path.d.ts +13 -0
  5. package/dist/htree-path.d.ts.map +1 -0
  6. package/dist/htree-path.js +38 -0
  7. package/dist/htree-path.js.map +1 -0
  8. package/dist/iris/mediaHandler.d.ts +25 -1
  9. package/dist/iris/mediaHandler.d.ts.map +1 -1
  10. package/dist/iris/mediaHandler.js +838 -102
  11. package/dist/iris/mediaHandler.js.map +1 -1
  12. package/dist/iris/ndk.d.ts +2 -1
  13. package/dist/iris/ndk.d.ts.map +1 -1
  14. package/dist/iris/ndk.js +12 -6
  15. package/dist/iris/ndk.js.map +1 -1
  16. package/dist/iris/protocol.d.ts +3 -0
  17. package/dist/iris/protocol.d.ts.map +1 -1
  18. package/dist/iris/protocol.js.map +1 -1
  19. package/dist/iris/publicAssetUrl.d.ts +6 -0
  20. package/dist/iris/publicAssetUrl.d.ts.map +1 -0
  21. package/dist/iris/publicAssetUrl.js +14 -0
  22. package/dist/iris/publicAssetUrl.js.map +1 -0
  23. package/dist/iris/rootPathResolver.d.ts +9 -0
  24. package/dist/iris/rootPathResolver.d.ts.map +1 -0
  25. package/dist/iris/rootPathResolver.js +32 -0
  26. package/dist/iris/rootPathResolver.js.map +1 -0
  27. package/dist/iris/treeRootCache.d.ts +9 -1
  28. package/dist/iris/treeRootCache.d.ts.map +1 -1
  29. package/dist/iris/treeRootCache.js +57 -2
  30. package/dist/iris/treeRootCache.js.map +1 -1
  31. package/dist/iris/treeRootSubscription.d.ts +5 -0
  32. package/dist/iris/treeRootSubscription.d.ts.map +1 -1
  33. package/dist/iris/treeRootSubscription.js +279 -15
  34. package/dist/iris/treeRootSubscription.js.map +1 -1
  35. package/dist/iris/worker.js +12 -27
  36. package/dist/iris/worker.js.map +1 -1
  37. package/dist/p2p/signaling.d.ts.map +1 -1
  38. package/dist/p2p/signaling.js +31 -4
  39. package/dist/p2p/signaling.js.map +1 -1
  40. package/dist/p2p/webrtcController.d.ts +21 -4
  41. package/dist/p2p/webrtcController.d.ts.map +1 -1
  42. package/dist/p2p/webrtcController.js +199 -59
  43. package/dist/p2p/webrtcController.js.map +1 -1
  44. package/package.json +31 -6
@@ -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,EAGxD,CAAC;AAEF,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;YAU1C,eAAe;CAe9B"}
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://blossom.primal.net', read: true, write: true },
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
- for (const server of readServers) {
98
- const baseUrl = normalizeServerUrl(server.url);
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
- return null;
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":"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"}
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,EAAO,MAAM,gBAAgB,CAAC;AAwEpD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CA0B1E"}
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"}