@hashtree/core 0.1.3 → 0.1.4

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 (68) hide show
  1. package/dist/builder.d.ts.map +1 -1
  2. package/dist/builder.js +2 -1
  3. package/dist/builder.js.map +1 -1
  4. package/dist/compare.d.ts +2 -0
  5. package/dist/compare.d.ts.map +1 -0
  6. package/dist/compare.js +8 -0
  7. package/dist/compare.js.map +1 -0
  8. package/dist/encrypted.d.ts.map +1 -1
  9. package/dist/encrypted.js +28 -18
  10. package/dist/encrypted.js.map +1 -1
  11. package/dist/hashtree.js +1 -1
  12. package/dist/hashtree.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/store/blossom.d.ts.map +1 -1
  17. package/dist/store/blossom.js +52 -22
  18. package/dist/store/blossom.js.map +1 -1
  19. package/dist/store/fallback.d.ts +3 -1
  20. package/dist/store/fallback.d.ts.map +1 -1
  21. package/dist/store/fallback.js +60 -24
  22. package/dist/store/fallback.js.map +1 -1
  23. package/dist/tree/create.d.ts.map +1 -1
  24. package/dist/tree/create.js +2 -1
  25. package/dist/tree/create.js.map +1 -1
  26. package/dist/types.d.ts +14 -2
  27. package/dist/types.d.ts.map +1 -1
  28. package/package.json +6 -3
  29. package/dist/resolver/index.d.ts +0 -5
  30. package/dist/resolver/index.d.ts.map +0 -1
  31. package/dist/resolver/index.js +0 -5
  32. package/dist/resolver/index.js.map +0 -1
  33. package/dist/resolver/nostr.d.ts +0 -82
  34. package/dist/resolver/nostr.d.ts.map +0 -1
  35. package/dist/resolver/nostr.js +0 -868
  36. package/dist/resolver/nostr.js.map +0 -1
  37. package/dist/store/dexie.d.ts +0 -44
  38. package/dist/store/dexie.d.ts.map +0 -1
  39. package/dist/store/dexie.js +0 -196
  40. package/dist/store/dexie.js.map +0 -1
  41. package/dist/store/opfs.d.ts +0 -56
  42. package/dist/store/opfs.d.ts.map +0 -1
  43. package/dist/store/opfs.js +0 -200
  44. package/dist/store/opfs.js.map +0 -1
  45. package/dist/webrtc/index.d.ts +0 -4
  46. package/dist/webrtc/index.d.ts.map +0 -1
  47. package/dist/webrtc/index.js +0 -4
  48. package/dist/webrtc/index.js.map +0 -1
  49. package/dist/webrtc/lruCache.d.ts +0 -20
  50. package/dist/webrtc/lruCache.d.ts.map +0 -1
  51. package/dist/webrtc/lruCache.js +0 -59
  52. package/dist/webrtc/lruCache.js.map +0 -1
  53. package/dist/webrtc/peer.d.ts +0 -122
  54. package/dist/webrtc/peer.d.ts.map +0 -1
  55. package/dist/webrtc/peer.js +0 -583
  56. package/dist/webrtc/peer.js.map +0 -1
  57. package/dist/webrtc/protocol.d.ts +0 -76
  58. package/dist/webrtc/protocol.d.ts.map +0 -1
  59. package/dist/webrtc/protocol.js +0 -167
  60. package/dist/webrtc/protocol.js.map +0 -1
  61. package/dist/webrtc/store.d.ts +0 -190
  62. package/dist/webrtc/store.d.ts.map +0 -1
  63. package/dist/webrtc/store.js +0 -1043
  64. package/dist/webrtc/store.js.map +0 -1
  65. package/dist/webrtc/types.d.ts +0 -196
  66. package/dist/webrtc/types.d.ts.map +0 -1
  67. package/dist/webrtc/types.js +0 -46
  68. package/dist/webrtc/types.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Example: local (Dexie) -> WebRTC -> Blossom
8
8
  */
9
- import type { Store, Hash } from '../types.js';
9
+ import { type Store, type Hash } from '../types.js';
10
10
  /** Minimal interface for read-only fallback sources */
11
11
  export interface ReadableStore {
12
12
  get(hash: Hash): Promise<Uint8Array | null>;
@@ -27,6 +27,7 @@ export declare class FallbackStore implements Store {
27
27
  private primary;
28
28
  private fallbacks;
29
29
  private timeout;
30
+ private inflightReads;
30
31
  constructor(config: FallbackStoreConfig);
31
32
  put(hash: Hash, data: Uint8Array): Promise<boolean>;
32
33
  get(hash: Hash): Promise<Uint8Array | null>;
@@ -36,5 +37,6 @@ export declare class FallbackStore implements Store {
36
37
  addFallback(store: WritableStore): void;
37
38
  /** Remove a fallback store */
38
39
  removeFallback(store: WritableStore): void;
40
+ private loadFromFallbacks;
39
41
  }
40
42
  //# sourceMappingURL=fallback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/store/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE/C,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC7C;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,OAAO,EAAE,KAAK,CAAC;IACf,8EAA8E;IAC9E,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,YAAW,KAAK;IACzC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,mBAAmB;IAMjC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBnD,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqC3C,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C,uCAAuC;IACvC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIvC,8BAA8B;IAC9B,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAI3C"}
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/store/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAS,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAE3D,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC7C;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,OAAO,EAAE,KAAK,CAAC;IACf,8EAA8E;IAC9E,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAc,YAAW,KAAK;IACzC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAiD;gBAE1D,MAAM,EAAE,mBAAmB;IAMjC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBnD,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAwB3C,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C,uCAAuC;IACvC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAIvC,8BAA8B;IAC9B,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;YAK5B,iBAAiB;CAiDhC"}
@@ -6,10 +6,12 @@
6
6
  *
7
7
  * Example: local (Dexie) -> WebRTC -> Blossom
8
8
  */
9
+ import { toHex } from '../types.js';
9
10
  export class FallbackStore {
10
11
  primary;
11
12
  fallbacks;
12
13
  timeout;
14
+ inflightReads = new Map();
13
15
  constructor(config) {
14
16
  this.primary = config.primary;
15
17
  this.fallbacks = config.fallbacks;
@@ -33,32 +35,21 @@ export class FallbackStore {
33
35
  let data = await this.primary.get(hash);
34
36
  if (data)
35
37
  return data;
36
- // Try fallbacks with timeout
37
- for (const store of this.fallbacks) {
38
- try {
39
- const fetchPromise = store.get(hash);
40
- fetchPromise.then((lateData) => {
41
- if (lateData) {
42
- this.primary.put(hash, lateData).catch(() => {
43
- // Ignore cache errors for late data
44
- });
45
- }
46
- }).catch(() => {
47
- // Ignore fallback errors
48
- });
49
- const timeoutPromise = new Promise(resolve => setTimeout(() => resolve(null), this.timeout));
50
- data = await Promise.race([fetchPromise, timeoutPromise]);
51
- if (data) {
52
- // Cache to primary
53
- await this.primary.put(hash, data);
54
- return data;
38
+ if (this.fallbacks.length === 0) {
39
+ return null;
40
+ }
41
+ const key = toHex(hash);
42
+ let pending = this.inflightReads.get(key);
43
+ if (!pending) {
44
+ pending = this.loadFromFallbacks(hash).finally(() => {
45
+ if (this.inflightReads.get(key) === pending) {
46
+ this.inflightReads.delete(key);
55
47
  }
56
- }
57
- catch {
58
- // Continue to next fallback
59
- }
48
+ });
49
+ this.inflightReads.set(key, pending);
60
50
  }
61
- return null;
51
+ data = await pending;
52
+ return data;
62
53
  }
63
54
  async has(hash) {
64
55
  return this.primary.has(hash);
@@ -76,5 +67,50 @@ export class FallbackStore {
76
67
  if (idx >= 0)
77
68
  this.fallbacks.splice(idx, 1);
78
69
  }
70
+ async loadFromFallbacks(hash) {
71
+ const pendingFetches = this.fallbacks.map((store) => {
72
+ const fetchPromise = store.get(hash)
73
+ .then((lateData) => {
74
+ if (lateData) {
75
+ this.primary.put(hash, lateData).catch(() => {
76
+ // Ignore cache errors for late data
77
+ });
78
+ }
79
+ return lateData;
80
+ })
81
+ .catch(() => null);
82
+ const timeoutPromise = new Promise((resolve) => setTimeout(() => resolve(null), this.timeout));
83
+ return Promise.race([fetchPromise, timeoutPromise]);
84
+ });
85
+ const data = await new Promise((resolve) => {
86
+ let settled = false;
87
+ let remaining = pendingFetches.length;
88
+ for (const fetchPromise of pendingFetches) {
89
+ fetchPromise
90
+ .then((result) => {
91
+ if (settled)
92
+ return;
93
+ if (result) {
94
+ settled = true;
95
+ resolve(result);
96
+ return;
97
+ }
98
+ remaining -= 1;
99
+ if (remaining === 0) {
100
+ resolve(null);
101
+ }
102
+ })
103
+ .catch(() => {
104
+ if (settled)
105
+ return;
106
+ remaining -= 1;
107
+ if (remaining === 0) {
108
+ resolve(null);
109
+ }
110
+ });
111
+ }
112
+ });
113
+ return data;
114
+ }
79
115
  }
80
116
  //# sourceMappingURL=fallback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/store/fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/store/fallback.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/tree/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAY,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAIzE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BvC;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,IAAI,EAAE,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/tree/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAY,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAKzE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BvC;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,QAAQ,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,IAAI,EAAE,EACb,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -4,6 +4,7 @@
4
4
  import { LinkType } from '../types.js';
5
5
  import { sha256 } from '../hash.js';
6
6
  import { encodeAndHash } from '../codec.js';
7
+ import { compareNames } from '../compare.js';
7
8
  /**
8
9
  * Store a blob directly (small data)
9
10
  */
@@ -49,7 +50,7 @@ export async function putFile(config, data) {
49
50
  */
50
51
  export async function putDirectory(config, entries) {
51
52
  const { store, chunkSize } = config;
52
- const sorted = [...entries].sort((a, b) => a.name.localeCompare(b.name));
53
+ const sorted = [...entries].sort((a, b) => compareNames(a.name, b.name));
53
54
  const links = sorted.map(e => ({
54
55
  hash: e.cid.hash,
55
56
  key: e.cid.key,
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/tree/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/tree/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAA+B,QAAQ,EAAO,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAe7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAY,EAAE,IAAgB;IAC1D,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAoB,EACpB,IAAgB;IAEhB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;IAEzB,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,qDAAqD;IACrD,qEAAqE;IACrE,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,gCAAgC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAoB,EACpB,OAAmB;IAEnB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACpC,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzE,MAAM,KAAK,GAAW,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;QAChB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAa;QACrB,IAAI,EAAE,QAAQ,CAAC,GAAG;QAClB,KAAK;KACN,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAEjD,mCAAmC;IACnC,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAoB,EACpB,KAAa,EACb,SAAkB;IAElB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,yCAAyC;IACzC,MAAM,IAAI,GAAa;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK;KACN,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/types.d.ts CHANGED
@@ -157,6 +157,8 @@ export declare function hashEquals(a: Hash, b: Hash): boolean;
157
157
  export interface RefResolverListEntry {
158
158
  key: string;
159
159
  cid: CID;
160
+ /** All l-tags attached to the tree event, including app/discovery labels */
161
+ labels?: string[];
160
162
  /** Tree visibility: public, link-visible, or private */
161
163
  visibility?: TreeVisibility;
162
164
  /** Encrypted key for link-visible trees - decrypt with link key from URL */
@@ -231,10 +233,11 @@ export interface RefResolver {
231
233
  * Subscription stays open indefinitely until unsubscribed.
232
234
  *
233
235
  * @param key The key to watch
234
- * @param callback Called with new CID (or null if deleted/unavailable) and visibility info
236
+ * @param callback Called with new CID (or null if deleted/unavailable), visibility info,
237
+ * and source metadata such as the underlying event timestamp
235
238
  * @returns Unsubscribe function
236
239
  */
237
- subscribe(key: string, callback: (cid: CID | null, visibilityInfo?: SubscribeVisibilityInfo) => void): () => void;
240
+ subscribe(key: string, callback: (cid: CID | null, visibilityInfo?: SubscribeVisibilityInfo, metadata?: RefResolverSubscriptionMetadata) => void): () => void;
238
241
  /**
239
242
  * Publish/update a CID (optional - only for writable backends)
240
243
  * Handles all visibility types: public, link-visible, private
@@ -271,4 +274,13 @@ export interface RefResolver {
271
274
  */
272
275
  delete?(key: string): Promise<boolean>;
273
276
  }
277
+ /**
278
+ * Metadata that accompanies resolver subscription updates.
279
+ */
280
+ export interface RefResolverSubscriptionMetadata {
281
+ /** Unix seconds from the underlying source event */
282
+ updatedAt: number;
283
+ /** Optional source event id for same-timestamp tie-breaking */
284
+ eventId?: string;
285
+ }
274
286
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hashtree/core",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Simple content-addressed merkle tree with KV storage",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -32,8 +32,11 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "repository": "https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree",
36
- "homepage": "https://files.iris.to/#/npub1xndmdgymsf4a34rzr7346vp8qcptxf75pjqweh8naa8rklgxpfqqmfjtce/hashtree",
35
+ "repository": "https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree",
36
+ "homepage": "https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree/ts/packages/hashtree",
37
+ "bugs": {
38
+ "url": "https://git.iris.to/#/npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm/hashtree?tab=issues"
39
+ },
37
40
  "dependencies": {
38
41
  "@msgpack/msgpack": "^3.1.2",
39
42
  "@noble/hashes": "^2.0.1",
@@ -1,5 +0,0 @@
1
- /**
2
- * Ref resolvers - map human-readable keys to merkle root hashes (refs)
3
- */
4
- export { createNostrRefResolver, type NostrRefResolverConfig, type VisibilityCallbacks, type ParsedTreeVisibility, type NostrRefResolverConfig as NostrRootResolverConfig, type NostrEvent, type NostrFilter, type Nip19Like, } from './nostr.js';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,KAAK,sBAAsB,IAAI,uBAAuB,EACtD,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,SAAS,GACf,MAAM,YAAY,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Ref resolvers - map human-readable keys to merkle root hashes (refs)
3
- */
4
- export { createNostrRefResolver, } from './nostr.js';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,sBAAsB,GASvB,MAAM,YAAY,CAAC"}
@@ -1,82 +0,0 @@
1
- /**
2
- * NostrRefResolver - Maps npub/treename keys to merkle root hashes (refs)
3
- *
4
- * Key format: "npub1.../treename"
5
- *
6
- * This resolver provides direct callback subscriptions that bypass React's
7
- * render cycle. Components can subscribe to hash changes and update directly
8
- * (e.g., MediaSource append) without triggering re-renders.
9
- */
10
- import type { RefResolver } from '../types.js';
11
- import { type TreeVisibility } from '../visibility.js';
12
- export interface NostrEvent {
13
- id?: string;
14
- pubkey: string;
15
- kind: number;
16
- content: string;
17
- tags: string[][];
18
- created_at: number;
19
- }
20
- export interface Nip19Like {
21
- decode(str: string): {
22
- type: string;
23
- data: unknown;
24
- };
25
- npubEncode(pubkey: string): string;
26
- }
27
- export interface NostrFilter {
28
- kinds?: number[];
29
- authors?: string[];
30
- '#d'?: string[];
31
- '#l'?: string[];
32
- }
33
- /**
34
- * Parsed visibility info from a nostr event
35
- */
36
- export interface ParsedTreeVisibility {
37
- hash: string;
38
- visibility: TreeVisibility;
39
- /** Plaintext key (for public trees) */
40
- key?: string;
41
- /** Encrypted key (for link-visible trees) - decrypt with link key */
42
- encryptedKey?: string;
43
- /** Key ID (for link-visible trees) - identifies which link key to use */
44
- keyId?: string;
45
- /** Self-encrypted key (for private/link-visible trees) - decrypt with NIP-44 */
46
- selfEncryptedKey?: string;
47
- /** Self-encrypted link key (for link-visible trees) - allows owner to recover link key for sharing */
48
- selfEncryptedLinkKey?: string;
49
- }
50
- /** Event type for publishing (created_at optional - usually auto-set by NDK) */
51
- export type NostrPublishEvent = Omit<NostrEvent, 'id' | 'pubkey' | 'created_at'> & {
52
- created_at?: number;
53
- };
54
- /**
55
- * Visibility callbacks for encryption/decryption
56
- * Used for private trees (NIP-44 self-encryption)
57
- */
58
- export interface VisibilityCallbacks {
59
- /** NIP-44 encrypt data to a pubkey */
60
- encrypt?: (data: Uint8Array, toPubkey: string) => Promise<string>;
61
- /** NIP-44 decrypt data from a pubkey */
62
- decrypt?: (ciphertext: string, fromPubkey: string) => Promise<Uint8Array | null>;
63
- /** Get link key from URL context (for link-visible trees) */
64
- getLinkKey?: () => Uint8Array | null;
65
- }
66
- export interface NostrRefResolverConfig {
67
- /** Subscribe to nostr events - returns unsubscribe function */
68
- subscribe: (filter: NostrFilter, onEvent: (event: NostrEvent) => void) => () => void;
69
- /** Publish a nostr event - returns true on success. created_at is optional (for delete events) */
70
- publish: (event: NostrPublishEvent) => Promise<boolean>;
71
- /** Get current user's pubkey (for ownership checks) */
72
- getPubkey: () => string | null;
73
- /** nip19 encode/decode functions from nostr-tools */
74
- nip19: Nip19Like;
75
- /** Optional visibility callbacks for private/link-visible trees */
76
- visibility?: VisibilityCallbacks;
77
- }
78
- /**
79
- * Create a NostrRefResolver instance
80
- */
81
- export declare function createNostrRefResolver(config: NostrRefResolverConfig): RefResolver;
82
- //# sourceMappingURL=nostr.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nostr.d.ts","sourceRoot":"","sources":["../../src/resolver/nostr.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAqF,MAAM,aAAa,CAAC;AAElI,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACrD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAGD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAYD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sGAAsG;IACtG,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAgGD,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3G;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,wCAAwC;IACxC,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACjF,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IACrF,kGAAkG;IAClG,OAAO,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,uDAAuD;IACvD,SAAS,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/B,qDAAqD;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED;;GAEG;AAEH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,WAAW,CAs1BlF"}