@estiva-app/interop 0.2.0 → 0.3.0

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/CHANGELOG.md CHANGED
@@ -6,6 +6,55 @@ how a declaration is read, is a MAJOR — in `0.x`, a MINOR — even when no
6
6
  TypeScript signature moved. A consumer upgrading must be able to tell whether
7
7
  manifests already published still mean what they meant.
8
8
 
9
+ ## 0.3.0 — 2026-09-01
10
+
11
+ **Manifest behaviour: unchanged.** Nothing a manifest may declare moved, and
12
+ nothing already published means anything different. What changes is how many
13
+ round trips reading one costs.
14
+
15
+ - **`createProjectionCache()`**, passed as the last argument to
16
+ `resolveForeignObject`, `resolveForeignEvent` and `resolveFolderProject`.
17
+ Omitting it is exactly the old behaviour.
18
+
19
+ A consumer that re-resolves on a timer paid the whole resolve every tick, and
20
+ **two of the four round trips were NIP-89 discovery** — the author's
21
+ `kind:31989` recommendation, then the `kind:31990` manifest. Those answer the
22
+ same thing until an app republishes. Memoised per kind and author with a
23
+ five-minute TTL; a negative answer is cached too, because "no app claims this
24
+ kind" costs the same two round trips and is just as stable.
25
+
26
+ **Owned by the caller.** A module-level cache would be invisible global state
27
+ shared by every consumer in a process, impossible to scope to a screen and
28
+ awkward to reset in a test.
29
+
30
+ Deliberately only the manifest. The object, its changes, its comments and its
31
+ children are what a refresh exists to notice — caching those is how a live
32
+ widget becomes a screenshot, which is the defect PRO-10 was filed for.
33
+
34
+ - **A `list` slot no longer costs a round trip of its own.** The child filter is
35
+ built from the manifest and the *pointer*, and an addressable event's `d` is
36
+ `pointer.identifier` by definition — it is what the root filter matches on. So
37
+ the second query never needed to wait for the first, and the children now ride
38
+ in the same request.
39
+
40
+ The two together: **10 requests a tick to 3** for three references on one Ship
41
+ issue, measured against production — one per reference — rendering identically
42
+ (title, kind, comment count, child count, widget). A comment posted between
43
+ ticks appeared on the next one-request resolve, so the widget is still live.
44
+
45
+ - **Comments and children are now matched on their filter's own criteria**, not
46
+ on kind. This is load-bearing rather than tidying: Peek's Topic declares
47
+ `kind:9` messages as children *and* `kind:9` as its comment kind, so merging
48
+ the two filters into one request puts both under one number and only the tag
49
+ separates them. Matching on kind alone would have made every message in a
50
+ Folder a comment on its own Topic. The predicate uses **any** matching tag,
51
+ as a relay's `#a` does — an event may carry several, and reading only the
52
+ first would silently drop a comment that references something else before its
53
+ parent.
54
+
55
+ Additive, with a changed request pattern, so a MINOR: ADR 0002 §4b puts the
56
+ break on MINOR within `0.x`.
57
+
9
58
  ## 0.2.0 — 2026-09-01
10
59
 
11
60
  **Manifest behaviour: unchanged for addressable objects.** What changes is that
package/dist/index.d.ts CHANGED
@@ -24,5 +24,5 @@
24
24
  * of every app that installed it, which is the objection that rules out
25
25
  * iframes.
26
26
  */
27
- export { resolveManifest, resolveForeignObject, resolveForeignEvent, resolveFolderProject, commentKindsOf, buildActionEvent, pickWidget, widgetChainProblem, CLOSED_WIDGETS, peopleViaRelay, type QueryFn, type PeopleFn, type People, type ForeignObject, type FolderProject, type ResolvedSlot, type ResolvedAction, type ManifestAction, type UnsignedActionEvent, } from './projection.js';
27
+ export { resolveManifest, resolveForeignObject, resolveForeignEvent, resolveFolderProject, commentKindsOf, buildActionEvent, pickWidget, widgetChainProblem, CLOSED_WIDGETS, peopleViaRelay, createProjectionCache, MANIFEST_TTL_MS, type ProjectionCache, type ResolvedManifest, type QueryFn, type PeopleFn, type People, type ForeignObject, type FolderProject, type ResolvedSlot, type ResolvedAction, type ManifestAction, type UnsignedActionEvent, } from './projection.js';
28
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -24,5 +24,5 @@
24
24
  * of every app that installed it, which is the objection that rules out
25
25
  * iframes.
26
26
  */
27
- export { resolveManifest, resolveForeignObject, resolveForeignEvent, resolveFolderProject, commentKindsOf, buildActionEvent, pickWidget, widgetChainProblem, CLOSED_WIDGETS, peopleViaRelay, } from './projection.js';
27
+ export { resolveManifest, resolveForeignObject, resolveForeignEvent, resolveFolderProject, commentKindsOf, buildActionEvent, pickWidget, widgetChainProblem, CLOSED_WIDGETS, peopleViaRelay, createProjectionCache, MANIFEST_TTL_MS, } from './projection.js';
28
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,GAUf,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,eAAe,GAYhB,MAAM,iBAAiB,CAAA"}
@@ -223,13 +223,62 @@ interface Manifest {
223
223
  stage?: string;
224
224
  }[]>;
225
225
  }
226
- export declare function resolveManifest(pointer: AddressPointer, query: QueryFn): Promise<{
226
+ /** What {@link resolveManifest} answers with. */
227
+ export interface ResolvedManifest {
227
228
  manifest: Manifest;
228
229
  address: string;
229
230
  viaRecommendation: boolean;
230
231
  /** NIP-89 `web` template, `<bech32>` not yet substituted. */
231
232
  webTemplate?: string;
232
- } | null>;
233
+ }
234
+ /**
235
+ * A memo for the half of a resolve that does not change between refreshes.
236
+ *
237
+ * Resolving one reference costs four round trips, and **two of them are NIP-89
238
+ * discovery** — the author's `kind:31989` recommendation, then the `kind:31990`
239
+ * manifest itself. A consumer that re-resolves on a timer pays for both every
240
+ * time, and they answer the same thing until an app republishes its manifest.
241
+ * Measured on Ship, where a reference widget re-resolves on the poll: 4
242
+ * requests per reference per tick, identical on the second resolve, against a
243
+ * relay that meters reads at 300 a minute.
244
+ *
245
+ * **Owned by the caller, not this module.** A module-level cache would be
246
+ * invisible global state shared by every consumer in the process, impossible to
247
+ * scope to a screen and awkward to reset in a test. A caller that wants no
248
+ * caching passes nothing and gets exactly the old behaviour.
249
+ *
250
+ * Deliberately only the manifest. The object, its changes, its comments and its
251
+ * children are the parts a refresh exists to notice, and caching those is how
252
+ * a live widget becomes a screenshot.
253
+ */
254
+ export interface ProjectionCache {
255
+ /** Forget everything. Worth calling after publishing a manifest. */
256
+ clear(): void;
257
+ /** @internal */
258
+ lookup(key: string, now: number): {
259
+ value: ResolvedManifest | null;
260
+ } | undefined;
261
+ /** @internal */
262
+ remember(key: string, value: ResolvedManifest | null, now: number): void;
263
+ }
264
+ /**
265
+ * How long a manifest may be believed without asking again.
266
+ *
267
+ * Five minutes is a compromise with one real cost: republish a manifest and
268
+ * consumers keep drawing the old projection for up to that long. That is
269
+ * recoverable and self-correcting, where the alternative — asking twice per
270
+ * reference per tick, for ever — is neither.
271
+ */
272
+ export declare const MANIFEST_TTL_MS: number;
273
+ export declare function createProjectionCache(ttlMs?: number): ProjectionCache;
274
+ /**
275
+ * A negative answer is cached too.
276
+ *
277
+ * "No app claims this kind" costs the same two round trips as a hit and is just
278
+ * as stable. Caching only successes would leave the expensive case — a
279
+ * reference nothing can draw — paying full price on every tick for ever.
280
+ */
281
+ export declare function resolveManifest(pointer: AddressPointer, query: QueryFn, cache?: ProjectionCache): Promise<ResolvedManifest | null>;
233
282
  /**
234
283
  * Which layout to draw, from a declared type or an ordered chain of them.
235
284
  *
@@ -456,7 +505,9 @@ export interface ForeignObject {
456
505
  */
457
506
  export declare function resolveForeignEvent(reference: string, query: QueryFn,
458
507
  /** Defaults to asking the relay. The browser passes a cached lookup. */
459
- lookupPeople?: PeopleFn): Promise<ForeignObject | null>;
508
+ lookupPeople?: PeopleFn,
509
+ /** See {@link ProjectionCache}. Omitting it is exactly the old behaviour. */
510
+ cache?: ProjectionCache): Promise<ForeignObject | null>;
460
511
  export declare function resolveForeignObject(naddr: string, query: QueryFn,
461
512
  /** Defaults to asking the relay. The browser passes a cached lookup. */
462
513
  lookupPeople?: PeopleFn,
@@ -465,7 +516,12 @@ lookupPeople?: PeopleFn,
465
516
  * module leave it at 0; it is the budget that stops a child's own `list`
466
517
  * recursing forever. See `MAX_LIST_DEPTH`.
467
518
  */
468
- depth?: number): Promise<ForeignObject | null>;
519
+ depth?: number,
520
+ /**
521
+ * Optional memo for the NIP-89 discovery half. See {@link ProjectionCache} —
522
+ * omitting it is exactly the old behaviour.
523
+ */
524
+ cache?: ProjectionCache): Promise<ForeignObject | null>;
469
525
  /**
470
526
  * A Folder's project and the tickets in motion in it.
471
527
  *
@@ -513,7 +569,9 @@ lookupPeople?: PeopleFn,
513
569
  * outside this module leave it at 0; it exists so that following a child's
514
570
  * own `list` is a budget check rather than a thing nobody remembered.
515
571
  */
516
- depth?: number): Promise<FolderProject | null>;
572
+ depth?: number,
573
+ /** See {@link ProjectionCache}. Omitting it is exactly the old behaviour. */
574
+ cache?: ProjectionCache): Promise<FolderProject | null>;
517
575
  /**
518
576
  * Build the event that performs a manifest-declared action.
519
577
  *
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
@@ -124,6 +124,17 @@ function resolveActions(manifest, kind, folded) {
124
124
  return out;
125
125
  }
126
126
  const tagValue = (e, name) => e.tags.find((t) => t[0] === name)?.[1];
127
+ /**
128
+ * Does the event carry this tag with this value — on **any** of them?
129
+ *
130
+ * `tagValue` reads the first tag with a given name, which is the wrong test for
131
+ * deciding whether an event would have matched a filter: a relay's `#a` matches
132
+ * if *any* `a` tag equals the wanted value, and an event may legitimately carry
133
+ * several. Used where a filter's own predicate is re-applied to a merged
134
+ * response (SHI-13), so that "did this come back because of that filter?" is
135
+ * answered the way the relay answered it.
136
+ */
137
+ const hasTagValue = (e, name, value) => e.tags.some((t) => t[0] === name && t[1] === value);
127
138
  /** A manifest event's `content`, or null when it is not parseable JSON. */
128
139
  function parseManifest(event) {
129
140
  try {
@@ -172,7 +183,54 @@ function webTemplate(event, entity) {
172
183
  }
173
184
  return undefined;
174
185
  }
175
- export async function resolveManifest(pointer, query) {
186
+ /**
187
+ * How long a manifest may be believed without asking again.
188
+ *
189
+ * Five minutes is a compromise with one real cost: republish a manifest and
190
+ * consumers keep drawing the old projection for up to that long. That is
191
+ * recoverable and self-correcting, where the alternative — asking twice per
192
+ * reference per tick, for ever — is neither.
193
+ */
194
+ export const MANIFEST_TTL_MS = 5 * 60_000;
195
+ export function createProjectionCache(ttlMs = MANIFEST_TTL_MS) {
196
+ const entries = new Map();
197
+ return {
198
+ clear: () => entries.clear(),
199
+ lookup(key, now) {
200
+ const found = entries.get(key);
201
+ if (!found)
202
+ return undefined;
203
+ // `>=`, not `>`: a TTL of 0 must mean "never believe it", and an entry
204
+ // exactly at the boundary has expired rather than being on its last tick.
205
+ if (now - found.at >= ttlMs) {
206
+ entries.delete(key);
207
+ return undefined;
208
+ }
209
+ return { value: found.value };
210
+ },
211
+ remember(key, value, now) {
212
+ entries.set(key, { at: now, value });
213
+ },
214
+ };
215
+ }
216
+ /**
217
+ * A negative answer is cached too.
218
+ *
219
+ * "No app claims this kind" costs the same two round trips as a hit and is just
220
+ * as stable. Caching only successes would leave the expensive case — a
221
+ * reference nothing can draw — paying full price on every tick for ever.
222
+ */
223
+ export async function resolveManifest(pointer, query, cache) {
224
+ const key = `${pointer.kind}:${pointer.pubkey}`;
225
+ const now = Date.now();
226
+ const memo = cache?.lookup(key, now);
227
+ if (memo)
228
+ return memo.value;
229
+ const answer = await resolveManifestUncached(pointer, query);
230
+ cache?.remember(key, answer, now);
231
+ return answer;
232
+ }
233
+ async function resolveManifestUncached(pointer, query) {
176
234
  const parse = parseManifest;
177
235
  const addressOf = (event) => `${event.kind}:${event.pubkey}:${tagValue(event, 'd') ?? ''}`;
178
236
  const recommended = await query([
@@ -554,7 +612,9 @@ function buildObject(args) {
554
612
  */
555
613
  export async function resolveForeignEvent(reference, query,
556
614
  /** Defaults to asking the relay. The browser passes a cached lookup. */
557
- lookupPeople) {
615
+ lookupPeople,
616
+ /** See {@link ProjectionCache}. Omitting it is exactly the old behaviour. */
617
+ cache) {
558
618
  let pointer;
559
619
  try {
560
620
  pointer = /^[0-9a-f]{64}$/i.test(reference.replace(/^nostr:/i, ''))
@@ -574,7 +634,7 @@ lookupPeople) {
574
634
  // Whoever signed it is the app's own author, which is what a `#k` lookup
575
635
  // needs when no recommendation exists. The pointer's `author` is a hint and
576
636
  // may disagree with the event; the event wins, because it is the thing.
577
- const resolved = await resolveManifest({ kind: root.kind, pubkey: root.pubkey, identifier: '', relays: pointer.relays }, query);
637
+ const resolved = await resolveManifest({ kind: root.kind, pubkey: root.pubkey, identifier: '', relays: pointer.relays }, query, cache);
578
638
  if (!resolved)
579
639
  return null;
580
640
  const projection = resolved.manifest.projections?.[String(root.kind)];
@@ -603,7 +663,12 @@ lookupPeople,
603
663
  * module leave it at 0; it is the budget that stops a child's own `list`
604
664
  * recursing forever. See `MAX_LIST_DEPTH`.
605
665
  */
606
- depth = 0) {
666
+ depth = 0,
667
+ /**
668
+ * Optional memo for the NIP-89 discovery half. See {@link ProjectionCache} —
669
+ * omitting it is exactly the old behaviour.
670
+ */
671
+ cache) {
607
672
  let pointer;
608
673
  try {
609
674
  // Either form: a body carries `naddr1…`, an `a` tag carries the plain
@@ -614,7 +679,7 @@ depth = 0) {
614
679
  return null;
615
680
  }
616
681
  const address = pointerToAddress(pointer);
617
- const resolved = await resolveManifest(pointer, query);
682
+ const resolved = await resolveManifest(pointer, query, cache);
618
683
  if (!resolved)
619
684
  return null;
620
685
  const { manifest, viaRecommendation } = resolved;
@@ -626,15 +691,29 @@ depth = 0) {
626
691
  if (!projection)
627
692
  return null;
628
693
  const records = foldRuleOf(manifest);
629
- // One round trip for the root, its changes and its comments. `#a` on both the
630
- // change and the comment kind, because both point at the object by *address*
631
- // rather than by event id — which is what makes them survive the author
632
- // replacing the root event.
694
+ /*
695
+ One round trip for the root, its changes, its comments **and its children**.
696
+
697
+ `#a` on both the change and the comment kind, because both point at the
698
+ object by *address* rather than by event id — which is what makes them
699
+ survive the author replacing the root event.
700
+
701
+ The children used to be a second round trip, issued after the root came
702
+ back. They never needed to be: the child filter is built from the manifest
703
+ and the *pointer*, and an addressable event's `d` is `pointer.identifier` by
704
+ definition — it is what we just queried by. So once the manifest is known,
705
+ nothing about the child filter depends on the root's contents (SHI-13).
706
+
707
+ That is the difference between two requests per reference per refresh and
708
+ one, and with the manifest memoised it is the whole cost of a tick.
709
+ */
710
+ const childFilter = childFilterFor({ projection, manifest, pointer, depth });
633
711
  const events = await query([
634
712
  { kinds: [pointer.kind], authors: [pointer.pubkey], '#d': [pointer.identifier], limit: 1 },
635
713
  // Only when the app actually declares a change kind — see `foldRuleOf`.
636
714
  ...(manifest.records ? [{ kinds: [manifest.records.changeKind], '#a': [address], limit: 500 }] : []),
637
715
  { kinds: commentKinds, '#a': [address], limit: 200 },
716
+ ...(childFilter ? [childFilter.filter] : []),
638
717
  ]);
639
718
  const root = events.find((e) => e.kind === pointer.kind && tagValue(e, 'd') === pointer.identifier);
640
719
  if (!root) {
@@ -662,8 +741,19 @@ depth = 0) {
662
741
  };
663
742
  }
664
743
  const folded = foldChanges(events.filter((e) => e.kind === records.changeKind && tagValue(e, records.targetTag) === address), records);
744
+ /*
745
+ Matched on the comment filter's own criteria — the kind **and** the `a` tag.
746
+
747
+ Kind alone was safe while this was its own query: the relay only returned
748
+ what the comment filter asked for. Now that the children ride in the same
749
+ request (SHI-13), a child sharing the comment kind would arrive here too and
750
+ be counted as a comment on its own parent. Peek is exactly that shape: its
751
+ Topic declares `kind:9` messages as children and `kind:9` as its comment
752
+ kind, so every message in the Folder would have become a comment on the
753
+ Topic — a widget silently showing a conversation twice.
754
+ */
665
755
  const comments = events
666
- .filter((e) => commentKinds.includes(e.kind))
756
+ .filter((e) => commentKinds.includes(e.kind) && hasTagValue(e, 'a', address))
667
757
  .sort(byOrder)
668
758
  .map((e) => ({ id: e.id, author: e.pubkey, body: e.content, createdAt: e.created_at }));
669
759
  const object = buildObject({
@@ -691,12 +781,10 @@ depth = 0) {
691
781
  A child may be a regular event with no address of its own (Peek's messages
692
782
  are), so this builds by event rather than by pointer.
693
783
  */
694
- const children = await resolveChildren({
695
- projection,
696
- root,
784
+ const children = childrenFrom({
785
+ events,
786
+ childFilter,
697
787
  manifest,
698
- query,
699
- depth,
700
788
  webTemplate: resolved.webTemplate,
701
789
  viaRecommendation,
702
790
  });
@@ -713,36 +801,69 @@ depth = 0) {
713
801
  return { ...object, people, ...(children ? { children: children.map((c) => ({ ...c, people })) } : {}) };
714
802
  }
715
803
  /**
716
- * Resolve a projection's `list` slot into child objects.
804
+ * The filter for a projection's `list` slot, or nothing.
717
805
  *
718
- * Returns undefined when no `list` is declared distinct from `[]`, which
719
- * means "declared, and nothing matched". A renderer needs to tell "this holds
720
- * nothing" from "this holds no list".
806
+ * Split out from fetching so it can be built **before** the root event is in
807
+ * hand and merged into the object's own round trip (SHI-13). Everything it
808
+ * needs is in the manifest and the pointer: an addressable event's `d` *is*
809
+ * `pointer.identifier`, since that is what the root filter matches on, so
810
+ * reading it back off the root taught us nothing we did not already know.
811
+ *
812
+ * Returns undefined when no `list` is declared — distinct from a declared list
813
+ * that matches nothing, which a renderer must be able to tell apart. The two
814
+ * other "declared but not renderable" cases are folded in here too, and both
815
+ * come back as `[]` from {@link childrenFrom}: a depth budget already spent,
816
+ * and a child kind the manifest never says how to draw.
721
817
  */
722
- async function resolveChildren(args) {
723
- const { projection, root, manifest, query, depth, webTemplate, viaRecommendation } = args;
818
+ function childFilterFor(args) {
819
+ const { projection, manifest, pointer, depth } = args;
724
820
  const spec = projection.slots.list;
725
821
  const children = !Array.isArray(spec) ? spec?.children : undefined;
726
822
  if (!children)
727
823
  return undefined;
728
824
  // The consumer's budget, not the manifest's — see MAX_LIST_DEPTH.
729
825
  if (depth >= MAX_LIST_DEPTH)
730
- return [];
731
- const childProjection = manifest.projections?.[String(children.kind)];
826
+ return null;
732
827
  // A declared list whose child kind has no projection is not renderable, and
733
828
  // an empty list is the honest answer: the objects exist, this app has not
734
829
  // said how to draw them.
830
+ if (!manifest.projections?.[String(children.kind)])
831
+ return null;
832
+ const parent = children.match === 'identifier'
833
+ ? pointer.identifier
834
+ : pointerToAddress({ ...pointer, relays: [] });
835
+ return {
836
+ filter: { kinds: [children.kind], [`#${children.via}`]: [parent], limit: children.limit ?? 100 },
837
+ kind: children.kind,
838
+ via: children.via,
839
+ parent,
840
+ };
841
+ }
842
+ /**
843
+ * The child objects, picked back out of the merged result set.
844
+ *
845
+ * **Matched on the filter's own criteria, never on kind alone.** Peek's Topic
846
+ * declares `kind:9` messages as its children and `kind:9` as its comment kind,
847
+ * so a merged response carries both under one number and only the tag tells
848
+ * them apart. An event can honestly be both — Ship writes a `kind:9` with an
849
+ * `a` naming the object *and* an `h` naming the Folder — and it appeared in
850
+ * both result sets when these were two queries. Re-applying each filter's own
851
+ * predicate reproduces that, rather than making them compete.
852
+ */
853
+ function childrenFrom(args) {
854
+ const { events, childFilter, manifest, webTemplate, viaRecommendation } = args;
855
+ if (childFilter === undefined)
856
+ return undefined;
857
+ if (childFilter === null)
858
+ return [];
859
+ const childProjection = manifest.projections?.[String(childFilter.kind)];
735
860
  if (!childProjection)
736
861
  return [];
737
- const identifier = tagValue(root, 'd') ?? '';
738
- const parent = children.match === 'identifier'
739
- ? identifier
740
- : pointerToAddress({ kind: root.kind, pubkey: root.pubkey, identifier, relays: [] });
741
- const found = await query([
742
- { kinds: [children.kind], [`#${children.via}`]: [parent], limit: children.limit ?? 100 },
743
- ]);
744
862
  const records = foldRuleOf(manifest);
745
- return found.sort(byOrder).map((event) => buildChildObject({ root: event, manifest, projection: childProjection, records, webTemplate, viaRecommendation }));
863
+ return events
864
+ .filter((e) => e.kind === childFilter.kind && hasTagValue(e, childFilter.via, childFilter.parent))
865
+ .sort(byOrder)
866
+ .map((event) => buildChildObject({ root: event, manifest, projection: childProjection, records, webTemplate, viaRecommendation }));
746
867
  }
747
868
  /**
748
869
  * Build a `ForeignObject` from an event that may have no address of its own.
@@ -996,7 +1117,9 @@ lookupPeople,
996
1117
  * outside this module leave it at 0; it exists so that following a child's
997
1118
  * own `list` is a budget check rather than a thing nobody remembered.
998
1119
  */
999
- depth = 0) {
1120
+ depth = 0,
1121
+ /** See {@link ProjectionCache}. Omitting it is exactly the old behaviour. */
1122
+ cache) {
1000
1123
  // The render loop this forbids is not hypothetical: two folders naming each
1001
1124
  // other's projects resolve forever, and the manifest declaring them is
1002
1125
  // another app's. See MAX_LIST_DEPTH.
@@ -1191,7 +1314,7 @@ depth = 0) {
1191
1314
  const address = pointerToAddress(pointer);
1192
1315
  // 3. Now the authoritative manifest — the object's author gets to say which
1193
1316
  // app renders their project (kind:31989), same as for an inline reference.
1194
- const resolved = await resolveManifest(pointer, query);
1317
+ const resolved = await resolveManifest(pointer, query, cache);
1195
1318
  if (!resolved) {
1196
1319
  return null;
1197
1320
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@estiva-app/interop",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Render and act on another app's objects from its published NIP-89 manifest. The owner defines the projection; the consumer decides how it looks.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -50,7 +50,7 @@
50
50
  "@estiva-app/protocol": ">=0.3.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@estiva-app/protocol": "^0.3.0",
53
+ "@estiva-app/protocol": ">=0.3.0",
54
54
  "typescript": "~5.9.3"
55
55
  }
56
56
  }
package/src/index.ts CHANGED
@@ -35,6 +35,10 @@ export {
35
35
  widgetChainProblem,
36
36
  CLOSED_WIDGETS,
37
37
  peopleViaRelay,
38
+ createProjectionCache,
39
+ MANIFEST_TTL_MS,
40
+ type ProjectionCache,
41
+ type ResolvedManifest,
38
42
  type QueryFn,
39
43
  type PeopleFn,
40
44
  type People,
package/src/projection.ts CHANGED
@@ -311,6 +311,19 @@ function resolveActions(
311
311
 
312
312
  const tagValue = (e: SignedEvent, name: string) => e.tags.find((t) => t[0] === name)?.[1]
313
313
 
314
+ /**
315
+ * Does the event carry this tag with this value — on **any** of them?
316
+ *
317
+ * `tagValue` reads the first tag with a given name, which is the wrong test for
318
+ * deciding whether an event would have matched a filter: a relay's `#a` matches
319
+ * if *any* `a` tag equals the wanted value, and an event may legitimately carry
320
+ * several. Used where a filter's own predicate is re-applied to a merged
321
+ * response (SHI-13), so that "did this come back because of that filter?" is
322
+ * answered the way the relay answered it.
323
+ */
324
+ const hasTagValue = (e: SignedEvent, name: string, value: string) =>
325
+ e.tags.some((t) => t[0] === name && t[1] === value)
326
+
314
327
  /** A manifest event's `content`, or null when it is not parseable JSON. */
315
328
  function parseManifest(event: SignedEvent): Manifest | null {
316
329
  try {
@@ -358,16 +371,100 @@ function webTemplate(event: SignedEvent, entity: string): string | undefined {
358
371
  return undefined
359
372
  }
360
373
 
361
- export async function resolveManifest(
362
- pointer: AddressPointer,
363
- query: QueryFn,
364
- ): Promise<{
374
+ /** What {@link resolveManifest} answers with. */
375
+ export interface ResolvedManifest {
365
376
  manifest: Manifest
366
377
  address: string
367
378
  viaRecommendation: boolean
368
379
  /** NIP-89 `web` template, `<bech32>` not yet substituted. */
369
380
  webTemplate?: string
370
- } | null> {
381
+ }
382
+
383
+ /**
384
+ * A memo for the half of a resolve that does not change between refreshes.
385
+ *
386
+ * Resolving one reference costs four round trips, and **two of them are NIP-89
387
+ * discovery** — the author's `kind:31989` recommendation, then the `kind:31990`
388
+ * manifest itself. A consumer that re-resolves on a timer pays for both every
389
+ * time, and they answer the same thing until an app republishes its manifest.
390
+ * Measured on Ship, where a reference widget re-resolves on the poll: 4
391
+ * requests per reference per tick, identical on the second resolve, against a
392
+ * relay that meters reads at 300 a minute.
393
+ *
394
+ * **Owned by the caller, not this module.** A module-level cache would be
395
+ * invisible global state shared by every consumer in the process, impossible to
396
+ * scope to a screen and awkward to reset in a test. A caller that wants no
397
+ * caching passes nothing and gets exactly the old behaviour.
398
+ *
399
+ * Deliberately only the manifest. The object, its changes, its comments and its
400
+ * children are the parts a refresh exists to notice, and caching those is how
401
+ * a live widget becomes a screenshot.
402
+ */
403
+ export interface ProjectionCache {
404
+ /** Forget everything. Worth calling after publishing a manifest. */
405
+ clear(): void
406
+ /** @internal */
407
+ lookup(key: string, now: number): { value: ResolvedManifest | null } | undefined
408
+ /** @internal */
409
+ remember(key: string, value: ResolvedManifest | null, now: number): void
410
+ }
411
+
412
+ /**
413
+ * How long a manifest may be believed without asking again.
414
+ *
415
+ * Five minutes is a compromise with one real cost: republish a manifest and
416
+ * consumers keep drawing the old projection for up to that long. That is
417
+ * recoverable and self-correcting, where the alternative — asking twice per
418
+ * reference per tick, for ever — is neither.
419
+ */
420
+ export const MANIFEST_TTL_MS = 5 * 60_000
421
+
422
+ export function createProjectionCache(ttlMs: number = MANIFEST_TTL_MS): ProjectionCache {
423
+ const entries = new Map<string, { at: number; value: ResolvedManifest | null }>()
424
+ return {
425
+ clear: () => entries.clear(),
426
+ lookup(key, now) {
427
+ const found = entries.get(key)
428
+ if (!found) return undefined
429
+ // `>=`, not `>`: a TTL of 0 must mean "never believe it", and an entry
430
+ // exactly at the boundary has expired rather than being on its last tick.
431
+ if (now - found.at >= ttlMs) {
432
+ entries.delete(key)
433
+ return undefined
434
+ }
435
+ return { value: found.value }
436
+ },
437
+ remember(key, value, now) {
438
+ entries.set(key, { at: now, value })
439
+ },
440
+ }
441
+ }
442
+
443
+ /**
444
+ * A negative answer is cached too.
445
+ *
446
+ * "No app claims this kind" costs the same two round trips as a hit and is just
447
+ * as stable. Caching only successes would leave the expensive case — a
448
+ * reference nothing can draw — paying full price on every tick for ever.
449
+ */
450
+ export async function resolveManifest(
451
+ pointer: AddressPointer,
452
+ query: QueryFn,
453
+ cache?: ProjectionCache,
454
+ ): Promise<ResolvedManifest | null> {
455
+ const key = `${pointer.kind}:${pointer.pubkey}`
456
+ const now = Date.now()
457
+ const memo = cache?.lookup(key, now)
458
+ if (memo) return memo.value
459
+ const answer = await resolveManifestUncached(pointer, query)
460
+ cache?.remember(key, answer, now)
461
+ return answer
462
+ }
463
+
464
+ async function resolveManifestUncached(
465
+ pointer: AddressPointer,
466
+ query: QueryFn,
467
+ ): Promise<ResolvedManifest | null> {
371
468
  const parse = parseManifest
372
469
  const addressOf = (event: SignedEvent) =>
373
470
  `${event.kind}:${event.pubkey}:${tagValue(event, 'd') ?? ''}`
@@ -932,6 +1029,8 @@ export async function resolveForeignEvent(
932
1029
  query: QueryFn,
933
1030
  /** Defaults to asking the relay. The browser passes a cached lookup. */
934
1031
  lookupPeople?: PeopleFn,
1032
+ /** See {@link ProjectionCache}. Omitting it is exactly the old behaviour. */
1033
+ cache?: ProjectionCache,
935
1034
  ): Promise<ForeignObject | null> {
936
1035
  let pointer: EventPointer
937
1036
  try {
@@ -956,6 +1055,7 @@ export async function resolveForeignEvent(
956
1055
  const resolved = await resolveManifest(
957
1056
  { kind: root.kind, pubkey: root.pubkey, identifier: '', relays: pointer.relays },
958
1057
  query,
1058
+ cache,
959
1059
  )
960
1060
  if (!resolved) return null
961
1061
 
@@ -990,6 +1090,11 @@ export async function resolveForeignObject(
990
1090
  * recursing forever. See `MAX_LIST_DEPTH`.
991
1091
  */
992
1092
  depth = 0,
1093
+ /**
1094
+ * Optional memo for the NIP-89 discovery half. See {@link ProjectionCache} —
1095
+ * omitting it is exactly the old behaviour.
1096
+ */
1097
+ cache?: ProjectionCache,
993
1098
  ): Promise<ForeignObject | null> {
994
1099
  let pointer: AddressPointer
995
1100
  try {
@@ -1001,7 +1106,7 @@ export async function resolveForeignObject(
1001
1106
  }
1002
1107
  const address = pointerToAddress(pointer)
1003
1108
 
1004
- const resolved = await resolveManifest(pointer, query)
1109
+ const resolved = await resolveManifest(pointer, query, cache)
1005
1110
  if (!resolved) return null
1006
1111
  const { manifest, viaRecommendation } = resolved
1007
1112
  // Substituted here rather than in the component: `<bech32>` is a NIP-89
@@ -1013,15 +1118,29 @@ export async function resolveForeignObject(
1013
1118
  if (!projection) return null
1014
1119
  const records = foldRuleOf(manifest)
1015
1120
 
1016
- // One round trip for the root, its changes and its comments. `#a` on both the
1017
- // change and the comment kind, because both point at the object by *address*
1018
- // rather than by event id — which is what makes them survive the author
1019
- // replacing the root event.
1121
+ /*
1122
+ One round trip for the root, its changes, its comments **and its children**.
1123
+
1124
+ `#a` on both the change and the comment kind, because both point at the
1125
+ object by *address* rather than by event id — which is what makes them
1126
+ survive the author replacing the root event.
1127
+
1128
+ The children used to be a second round trip, issued after the root came
1129
+ back. They never needed to be: the child filter is built from the manifest
1130
+ and the *pointer*, and an addressable event's `d` is `pointer.identifier` by
1131
+ definition — it is what we just queried by. So once the manifest is known,
1132
+ nothing about the child filter depends on the root's contents (SHI-13).
1133
+
1134
+ That is the difference between two requests per reference per refresh and
1135
+ one, and with the manifest memoised it is the whole cost of a tick.
1136
+ */
1137
+ const childFilter = childFilterFor({ projection, manifest, pointer, depth })
1020
1138
  const events = await query([
1021
1139
  { kinds: [pointer.kind], authors: [pointer.pubkey], '#d': [pointer.identifier], limit: 1 },
1022
1140
  // Only when the app actually declares a change kind — see `foldRuleOf`.
1023
1141
  ...(manifest.records ? [{ kinds: [manifest.records.changeKind], '#a': [address], limit: 500 }] : []),
1024
1142
  { kinds: commentKinds, '#a': [address], limit: 200 },
1143
+ ...(childFilter ? [childFilter.filter] : []),
1025
1144
  ])
1026
1145
 
1027
1146
  const root = events.find(
@@ -1059,8 +1178,19 @@ export async function resolveForeignObject(
1059
1178
  records,
1060
1179
  )
1061
1180
 
1181
+ /*
1182
+ Matched on the comment filter's own criteria — the kind **and** the `a` tag.
1183
+
1184
+ Kind alone was safe while this was its own query: the relay only returned
1185
+ what the comment filter asked for. Now that the children ride in the same
1186
+ request (SHI-13), a child sharing the comment kind would arrive here too and
1187
+ be counted as a comment on its own parent. Peek is exactly that shape: its
1188
+ Topic declares `kind:9` messages as children and `kind:9` as its comment
1189
+ kind, so every message in the Folder would have become a comment on the
1190
+ Topic — a widget silently showing a conversation twice.
1191
+ */
1062
1192
  const comments = events
1063
- .filter((e) => commentKinds.includes(e.kind))
1193
+ .filter((e) => commentKinds.includes(e.kind) && hasTagValue(e, 'a', address))
1064
1194
  .sort(byOrder)
1065
1195
  .map((e) => ({ id: e.id, author: e.pubkey, body: e.content, createdAt: e.created_at }))
1066
1196
 
@@ -1089,12 +1219,10 @@ export async function resolveForeignObject(
1089
1219
  A child may be a regular event with no address of its own (Peek's messages
1090
1220
  are), so this builds by event rather than by pointer.
1091
1221
  */
1092
- const children = await resolveChildren({
1093
- projection,
1094
- root,
1222
+ const children = childrenFrom({
1223
+ events,
1224
+ childFilter,
1095
1225
  manifest,
1096
- query,
1097
- depth,
1098
1226
  webTemplate: resolved.webTemplate,
1099
1227
  viaRecommendation,
1100
1228
  })
@@ -1113,48 +1241,82 @@ export async function resolveForeignObject(
1113
1241
  }
1114
1242
 
1115
1243
  /**
1116
- * Resolve a projection's `list` slot into child objects.
1244
+ * The filter for a projection's `list` slot, or nothing.
1117
1245
  *
1118
- * Returns undefined when no `list` is declared distinct from `[]`, which
1119
- * means "declared, and nothing matched". A renderer needs to tell "this holds
1120
- * nothing" from "this holds no list".
1246
+ * Split out from fetching so it can be built **before** the root event is in
1247
+ * hand and merged into the object's own round trip (SHI-13). Everything it
1248
+ * needs is in the manifest and the pointer: an addressable event's `d` *is*
1249
+ * `pointer.identifier`, since that is what the root filter matches on, so
1250
+ * reading it back off the root taught us nothing we did not already know.
1251
+ *
1252
+ * Returns undefined when no `list` is declared — distinct from a declared list
1253
+ * that matches nothing, which a renderer must be able to tell apart. The two
1254
+ * other "declared but not renderable" cases are folded in here too, and both
1255
+ * come back as `[]` from {@link childrenFrom}: a depth budget already spent,
1256
+ * and a child kind the manifest never says how to draw.
1121
1257
  */
1122
- async function resolveChildren(args: {
1258
+ function childFilterFor(args: {
1123
1259
  projection: { widget: string | string[]; slots: Record<string, SlotSpec | SlotSpec[]> }
1124
- root: SignedEvent
1125
1260
  manifest: Manifest
1126
- query: QueryFn
1261
+ pointer: AddressPointer
1127
1262
  depth: number
1128
- webTemplate?: string
1129
- viaRecommendation: boolean
1130
- }): Promise<ForeignObject[] | undefined> {
1131
- const { projection, root, manifest, query, depth, webTemplate, viaRecommendation } = args
1263
+ }): { filter: Record<string, unknown>; kind: number; via: string; parent: string } | null | undefined {
1264
+ const { projection, manifest, pointer, depth } = args
1132
1265
  const spec = projection.slots.list
1133
1266
  const children = !Array.isArray(spec) ? spec?.children : undefined
1134
1267
  if (!children) return undefined
1135
1268
  // The consumer's budget, not the manifest's — see MAX_LIST_DEPTH.
1136
- if (depth >= MAX_LIST_DEPTH) return []
1137
-
1138
- const childProjection = manifest.projections?.[String(children.kind)]
1269
+ if (depth >= MAX_LIST_DEPTH) return null
1139
1270
  // A declared list whose child kind has no projection is not renderable, and
1140
1271
  // an empty list is the honest answer: the objects exist, this app has not
1141
1272
  // said how to draw them.
1142
- if (!childProjection) return []
1273
+ if (!manifest.projections?.[String(children.kind)]) return null
1143
1274
 
1144
- const identifier = tagValue(root, 'd') ?? ''
1145
1275
  const parent =
1146
1276
  children.match === 'identifier'
1147
- ? identifier
1148
- : pointerToAddress({ kind: root.kind, pubkey: root.pubkey, identifier, relays: [] })
1277
+ ? pointer.identifier
1278
+ : pointerToAddress({ ...pointer, relays: [] })
1149
1279
 
1150
- const found = await query([
1151
- { kinds: [children.kind], [`#${children.via}`]: [parent], limit: children.limit ?? 100 },
1152
- ])
1280
+ return {
1281
+ filter: { kinds: [children.kind], [`#${children.via}`]: [parent], limit: children.limit ?? 100 },
1282
+ kind: children.kind,
1283
+ via: children.via,
1284
+ parent,
1285
+ }
1286
+ }
1153
1287
 
1288
+ /**
1289
+ * The child objects, picked back out of the merged result set.
1290
+ *
1291
+ * **Matched on the filter's own criteria, never on kind alone.** Peek's Topic
1292
+ * declares `kind:9` messages as its children and `kind:9` as its comment kind,
1293
+ * so a merged response carries both under one number and only the tag tells
1294
+ * them apart. An event can honestly be both — Ship writes a `kind:9` with an
1295
+ * `a` naming the object *and* an `h` naming the Folder — and it appeared in
1296
+ * both result sets when these were two queries. Re-applying each filter's own
1297
+ * predicate reproduces that, rather than making them compete.
1298
+ */
1299
+ function childrenFrom(args: {
1300
+ events: SignedEvent[]
1301
+ childFilter: ReturnType<typeof childFilterFor>
1302
+ manifest: Manifest
1303
+ webTemplate?: string
1304
+ viaRecommendation: boolean
1305
+ }): ForeignObject[] | undefined {
1306
+ const { events, childFilter, manifest, webTemplate, viaRecommendation } = args
1307
+ if (childFilter === undefined) return undefined
1308
+ if (childFilter === null) return []
1309
+
1310
+ const childProjection = manifest.projections?.[String(childFilter.kind)]
1311
+ if (!childProjection) return []
1154
1312
  const records = foldRuleOf(manifest)
1155
- return found.sort(byOrder).map((event) =>
1156
- buildChildObject({ root: event, manifest, projection: childProjection, records, webTemplate, viaRecommendation }),
1157
- )
1313
+
1314
+ return events
1315
+ .filter((e) => e.kind === childFilter.kind && hasTagValue(e, childFilter.via, childFilter.parent))
1316
+ .sort(byOrder)
1317
+ .map((event) =>
1318
+ buildChildObject({ root: event, manifest, projection: childProjection, records, webTemplate, viaRecommendation }),
1319
+ )
1158
1320
  }
1159
1321
 
1160
1322
  /**
@@ -1472,6 +1634,8 @@ export async function resolveFolderProject(
1472
1634
  * own `list` is a budget check rather than a thing nobody remembered.
1473
1635
  */
1474
1636
  depth = 0,
1637
+ /** See {@link ProjectionCache}. Omitting it is exactly the old behaviour. */
1638
+ cache?: ProjectionCache,
1475
1639
  ): Promise<FolderProject | null> {
1476
1640
  // The render loop this forbids is not hypothetical: two folders naming each
1477
1641
  // other's projects resolve forever, and the manifest declaring them is
@@ -1684,7 +1848,7 @@ export async function resolveFolderProject(
1684
1848
 
1685
1849
  // 3. Now the authoritative manifest — the object's author gets to say which
1686
1850
  // app renders their project (kind:31989), same as for an inline reference.
1687
- const resolved = await resolveManifest(pointer, query)
1851
+ const resolved = await resolveManifest(pointer, query, cache)
1688
1852
  if (!resolved) {
1689
1853
  return null
1690
1854
  }