@hatk/hatk 0.0.1-alpha.9 → 0.0.1-alpha.90

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 (218) hide show
  1. package/dist/adapter.d.ts +19 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/adapter.js +113 -0
  4. package/dist/backfill.d.ts +29 -2
  5. package/dist/backfill.d.ts.map +1 -1
  6. package/dist/backfill.js +137 -51
  7. package/dist/car.d.ts +20 -0
  8. package/dist/car.d.ts.map +1 -1
  9. package/dist/car.js +108 -0
  10. package/dist/cli.js +247 -1043
  11. package/dist/config.d.ts +145 -1
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +61 -8
  14. package/dist/database/adapter-factory.d.ts +6 -0
  15. package/dist/database/adapter-factory.d.ts.map +1 -0
  16. package/dist/database/adapter-factory.js +20 -0
  17. package/dist/database/adapters/duckdb-search.d.ts +12 -0
  18. package/dist/database/adapters/duckdb-search.d.ts.map +1 -0
  19. package/dist/database/adapters/duckdb-search.js +27 -0
  20. package/dist/database/adapters/duckdb.d.ts +25 -0
  21. package/dist/database/adapters/duckdb.d.ts.map +1 -0
  22. package/dist/database/adapters/duckdb.js +161 -0
  23. package/dist/database/adapters/sqlite-search.d.ts +16 -0
  24. package/dist/database/adapters/sqlite-search.d.ts.map +1 -0
  25. package/dist/database/adapters/sqlite-search.js +76 -0
  26. package/dist/database/adapters/sqlite.d.ts +18 -0
  27. package/dist/database/adapters/sqlite.d.ts.map +1 -0
  28. package/dist/database/adapters/sqlite.js +88 -0
  29. package/dist/{db.d.ts → database/db.d.ts} +68 -6
  30. package/dist/database/db.d.ts.map +1 -0
  31. package/dist/database/db.js +1775 -0
  32. package/dist/database/dialect.d.ts +45 -0
  33. package/dist/database/dialect.d.ts.map +1 -0
  34. package/dist/database/dialect.js +72 -0
  35. package/dist/{fts.d.ts → database/fts.d.ts} +7 -0
  36. package/dist/database/fts.d.ts.map +1 -0
  37. package/dist/{fts.js → database/fts.js} +122 -34
  38. package/dist/database/index.d.ts +7 -0
  39. package/dist/database/index.d.ts.map +1 -0
  40. package/dist/database/index.js +6 -0
  41. package/dist/database/ports.d.ts +50 -0
  42. package/dist/database/ports.d.ts.map +1 -0
  43. package/dist/database/ports.js +1 -0
  44. package/dist/{schema.d.ts → database/schema.d.ts} +16 -3
  45. package/dist/database/schema.d.ts.map +1 -0
  46. package/dist/{schema.js → database/schema.js} +126 -44
  47. package/dist/dev-entry.d.ts +8 -0
  48. package/dist/dev-entry.d.ts.map +1 -0
  49. package/dist/dev-entry.js +127 -0
  50. package/dist/feeds.d.ts +26 -8
  51. package/dist/feeds.d.ts.map +1 -1
  52. package/dist/feeds.js +72 -16
  53. package/dist/hooks.d.ts +102 -0
  54. package/dist/hooks.d.ts.map +1 -0
  55. package/dist/hooks.js +186 -0
  56. package/dist/hydrate.d.ts +49 -6
  57. package/dist/hydrate.d.ts.map +1 -1
  58. package/dist/hydrate.js +21 -20
  59. package/dist/indexer.d.ts +156 -3
  60. package/dist/indexer.d.ts.map +1 -1
  61. package/dist/indexer.js +539 -94
  62. package/dist/jetstream.d.ts +118 -0
  63. package/dist/jetstream.d.ts.map +1 -0
  64. package/dist/jetstream.js +225 -0
  65. package/dist/labels.d.ts +36 -0
  66. package/dist/labels.d.ts.map +1 -1
  67. package/dist/labels.js +71 -6
  68. package/dist/lex-types.d.ts +2 -0
  69. package/dist/lex-types.d.ts.map +1 -1
  70. package/dist/lexicon-resolve.d.ts.map +1 -1
  71. package/dist/lexicon-resolve.js +27 -112
  72. package/dist/lexicons/com/atproto/label/defs.json +75 -0
  73. package/dist/lexicons/com/atproto/moderation/defs.json +30 -0
  74. package/dist/lexicons/com/atproto/repo/strongRef.json +21 -0
  75. package/dist/lexicons/dev/hatk/applyWrites.json +87 -0
  76. package/dist/lexicons/dev/hatk/createRecord.json +40 -0
  77. package/dist/lexicons/dev/hatk/createReport.json +48 -0
  78. package/dist/lexicons/dev/hatk/deleteRecord.json +25 -0
  79. package/dist/lexicons/dev/hatk/describeCollections.json +41 -0
  80. package/dist/lexicons/dev/hatk/describeFeeds.json +29 -0
  81. package/dist/lexicons/dev/hatk/describeLabels.json +45 -0
  82. package/dist/lexicons/dev/hatk/getFeed.json +30 -0
  83. package/dist/lexicons/dev/hatk/getPreferences.json +19 -0
  84. package/dist/lexicons/dev/hatk/getRecord.json +26 -0
  85. package/dist/lexicons/dev/hatk/getRecords.json +32 -0
  86. package/dist/lexicons/dev/hatk/putPreference.json +28 -0
  87. package/dist/lexicons/dev/hatk/putRecord.json +41 -0
  88. package/dist/lexicons/dev/hatk/searchRecords.json +32 -0
  89. package/dist/lexicons/dev/hatk/uploadBlob.json +23 -0
  90. package/dist/logger.d.ts +29 -0
  91. package/dist/logger.d.ts.map +1 -1
  92. package/dist/logger.js +29 -0
  93. package/dist/main.js +198 -75
  94. package/dist/mst.d.ts +15 -0
  95. package/dist/mst.d.ts.map +1 -1
  96. package/dist/mst.js +13 -0
  97. package/dist/oauth/db.d.ts +16 -1
  98. package/dist/oauth/db.d.ts.map +1 -1
  99. package/dist/oauth/db.js +74 -19
  100. package/dist/oauth/discovery.d.ts +10 -0
  101. package/dist/oauth/discovery.d.ts.map +1 -1
  102. package/dist/oauth/discovery.js +54 -2
  103. package/dist/oauth/server.d.ts +93 -1
  104. package/dist/oauth/server.d.ts.map +1 -1
  105. package/dist/oauth/server.js +416 -39
  106. package/dist/oauth/service-describe.d.ts +42 -0
  107. package/dist/oauth/service-describe.d.ts.map +1 -0
  108. package/dist/oauth/service-describe.js +108 -0
  109. package/dist/oauth/session.d.ts +32 -0
  110. package/dist/oauth/session.d.ts.map +1 -0
  111. package/dist/oauth/session.js +131 -0
  112. package/dist/opengraph.d.ts +10 -0
  113. package/dist/opengraph.d.ts.map +1 -1
  114. package/dist/opengraph.js +94 -42
  115. package/dist/pds-proxy.d.ts +82 -0
  116. package/dist/pds-proxy.d.ts.map +1 -0
  117. package/dist/pds-proxy.js +356 -0
  118. package/dist/private-collections.d.ts +13 -0
  119. package/dist/private-collections.d.ts.map +1 -0
  120. package/dist/private-collections.js +27 -0
  121. package/dist/push.d.ts +54 -0
  122. package/dist/push.d.ts.map +1 -0
  123. package/dist/push.js +367 -0
  124. package/dist/renderer.d.ts +27 -0
  125. package/dist/renderer.d.ts.map +1 -0
  126. package/dist/renderer.js +46 -0
  127. package/dist/resolve-hatk.d.ts +6 -0
  128. package/dist/resolve-hatk.d.ts.map +1 -0
  129. package/dist/resolve-hatk.js +20 -0
  130. package/dist/response.d.ts +16 -0
  131. package/dist/response.d.ts.map +1 -0
  132. package/dist/response.js +69 -0
  133. package/dist/scanner.d.ts +21 -0
  134. package/dist/scanner.d.ts.map +1 -0
  135. package/dist/scanner.js +88 -0
  136. package/dist/seed.d.ts +19 -0
  137. package/dist/seed.d.ts.map +1 -1
  138. package/dist/seed.js +43 -4
  139. package/dist/server-init.d.ts +8 -0
  140. package/dist/server-init.d.ts.map +1 -0
  141. package/dist/server-init.js +62 -0
  142. package/dist/server.d.ts +34 -3
  143. package/dist/server.d.ts.map +1 -1
  144. package/dist/server.js +1021 -649
  145. package/dist/setup.d.ts +28 -1
  146. package/dist/setup.d.ts.map +1 -1
  147. package/dist/setup.js +50 -3
  148. package/dist/spaces/blob.d.ts +51 -0
  149. package/dist/spaces/blob.d.ts.map +1 -0
  150. package/dist/spaces/blob.js +111 -0
  151. package/dist/spaces/credential.d.ts +62 -0
  152. package/dist/spaces/credential.d.ts.map +1 -0
  153. package/dist/spaces/credential.js +184 -0
  154. package/dist/spaces/engine.d.ts +97 -0
  155. package/dist/spaces/engine.d.ts.map +1 -0
  156. package/dist/spaces/engine.js +559 -0
  157. package/dist/spaces/guard.d.ts +41 -0
  158. package/dist/spaces/guard.d.ts.map +1 -0
  159. package/dist/spaces/guard.js +79 -0
  160. package/dist/spaces/identity.d.ts +37 -0
  161. package/dist/spaces/identity.d.ts.map +1 -0
  162. package/dist/spaces/identity.js +88 -0
  163. package/dist/spaces/index.d.ts +55 -0
  164. package/dist/spaces/index.d.ts.map +1 -0
  165. package/dist/spaces/index.js +133 -0
  166. package/dist/spaces/notify.d.ts +51 -0
  167. package/dist/spaces/notify.d.ts.map +1 -0
  168. package/dist/spaces/notify.js +121 -0
  169. package/dist/spaces/records.d.ts +37 -0
  170. package/dist/spaces/records.d.ts.map +1 -0
  171. package/dist/spaces/records.js +63 -0
  172. package/dist/spaces/store.d.ts +51 -0
  173. package/dist/spaces/store.d.ts.map +1 -0
  174. package/dist/spaces/store.js +99 -0
  175. package/dist/spaces/uri.d.ts +60 -0
  176. package/dist/spaces/uri.d.ts.map +1 -0
  177. package/dist/spaces/uri.js +97 -0
  178. package/dist/spaces/verify.d.ts +39 -0
  179. package/dist/spaces/verify.d.ts.map +1 -0
  180. package/dist/spaces/verify.js +87 -0
  181. package/dist/spaces/viewer.d.ts +51 -0
  182. package/dist/spaces/viewer.d.ts.map +1 -0
  183. package/dist/spaces/viewer.js +167 -0
  184. package/dist/spaces/visibility.d.ts +57 -0
  185. package/dist/spaces/visibility.d.ts.map +1 -0
  186. package/dist/spaces/visibility.js +81 -0
  187. package/dist/templates/feed.tpl +18 -0
  188. package/dist/templates/hook.tpl +5 -0
  189. package/dist/templates/label.tpl +15 -0
  190. package/dist/templates/og.tpl +17 -0
  191. package/dist/templates/seed.tpl +11 -0
  192. package/dist/templates/setup.tpl +5 -0
  193. package/dist/templates/test-feed.tpl +19 -0
  194. package/dist/templates/test-xrpc.tpl +19 -0
  195. package/dist/templates/xrpc.tpl +53 -0
  196. package/dist/test.d.ts +3 -1
  197. package/dist/test.d.ts.map +1 -1
  198. package/dist/test.js +60 -36
  199. package/dist/views.js +1 -1
  200. package/dist/vite-plugin.d.ts +1 -1
  201. package/dist/vite-plugin.d.ts.map +1 -1
  202. package/dist/vite-plugin.js +254 -66
  203. package/dist/xrpc.d.ts +101 -12
  204. package/dist/xrpc.d.ts.map +1 -1
  205. package/dist/xrpc.js +255 -55
  206. package/package.json +21 -9
  207. package/public/admin-auth.js +271 -306
  208. package/public/admin.html +177 -61
  209. package/dist/db.d.ts.map +0 -1
  210. package/dist/db.js +0 -1361
  211. package/dist/fts.d.ts.map +0 -1
  212. package/dist/oauth/hooks.d.ts +0 -10
  213. package/dist/oauth/hooks.d.ts.map +0 -1
  214. package/dist/oauth/hooks.js +0 -40
  215. package/dist/schema.d.ts.map +0 -1
  216. package/dist/test-browser.d.ts +0 -14
  217. package/dist/test-browser.d.ts.map +0 -1
  218. package/dist/test-browser.js +0 -26
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Jetstream v2 live tail — an alternative stream source to the relay firehose.
3
+ *
4
+ * Where `com.atproto.sync.subscribeRepos` ships every commit on the network as
5
+ * DAG-CBOR frames wrapping a CAR block store, Jetstream filters server-side and
6
+ * delivers records as already-decoded JSON. For an AppView tracking a handful
7
+ * of collections that is the difference between decoding the whole network and
8
+ * decoding only what it indexes.
9
+ *
10
+ * What this trades away: the CAR/MST proofs. hatk never verified them — it
11
+ * already trusts the relay — so nothing is lost that was being used. The
12
+ * `getRepo` backfill path in backfill.ts still speaks CAR and is unaffected.
13
+ *
14
+ * @see https://bsky.network/docs/jetstream
15
+ * @module
16
+ */
17
+ import { type CommitOp, type IndexerCoreOpts } from './indexer.ts';
18
+ /** Server-side filter caps, rejected before the WebSocket upgrade. */
19
+ export declare const MAX_COLLECTIONS = 100;
20
+ export declare const MAX_DIDS = 10000;
21
+ /**
22
+ * Refused handshakes before the next attempt drops its cursor and probes live.
23
+ *
24
+ * Jetstream retains roughly a day of seqs. A cursor older than that is refused
25
+ * at the handshake — a bare close 1006, no `open`, no message. Nothing arrives,
26
+ * so {@link getLastSeq} stays null and a plain resume offers the same dead
27
+ * cursor forever. Restarting does not clear it either: the boot cursor is read
28
+ * back from the row this stream never got to advance. The stream wedges for
29
+ * good, while records written through the AppView's own path keep indexing, so
30
+ * nothing looks broken from inside the app.
31
+ *
32
+ * A cursorless probe tells a dead cursor from a dead instance without guessing:
33
+ * a reachable instance always accepts a cursorless subscribe, so a probe that
34
+ * opens means the cursor was the problem, and a probe that is refused too means
35
+ * the instance is down and the cursor is still worth keeping. Probing every Nth
36
+ * attempt rather than once keeps that true across an outage of any length.
37
+ */
38
+ export declare const CURSOR_PROBE_EVERY = 3;
39
+ export interface JetstreamOpts extends IndexerCoreOpts {
40
+ /** Instance base URL, e.g. `wss://jetstream.us-east.bsky.network`. */
41
+ jetstreamUrl: string;
42
+ cursor?: string | null;
43
+ }
44
+ /** A `#commit` payload as delivered by Jetstream v2. */
45
+ interface JetstreamCommit {
46
+ did?: string;
47
+ seq?: number;
48
+ operation?: string;
49
+ collection?: string;
50
+ rkey?: string;
51
+ cid?: string;
52
+ record?: Record<string, any>;
53
+ }
54
+ /**
55
+ * Build the subscribe URL.
56
+ *
57
+ * Collections are sent explicitly rather than as an `ns.*` wildcard: a wildcard
58
+ * would also match sibling NSIDs the app has no lexicon for (and, for private
59
+ * collections, ones it must never accept from the network).
60
+ *
61
+ * Exported for tests.
62
+ */
63
+ export declare function buildSubscribeUrl(jetstreamUrl: string, collections: Set<string>, pinnedRepos: Set<string> | null, cursor?: string | null): string;
64
+ /**
65
+ * Reject filters the server would reject at the handshake, where the message
66
+ * can name the actual limit instead of surfacing as a failed connection.
67
+ * Exported for tests.
68
+ */
69
+ export declare function assertFilterLimits(collections: Set<string>, pinnedRepos: Set<string> | null): void;
70
+ /**
71
+ * Translate one Jetstream commit payload into hatk's wire-agnostic op shape.
72
+ *
73
+ * Deletes carry no `record` or `cid` — only the collection and rkey that
74
+ * identify what went away. Returns `null` when the payload is unusable or
75
+ * names a collection this AppView must not accept from the network.
76
+ *
77
+ * Exported for tests.
78
+ */
79
+ export declare function commitToOp(commit: JetstreamCommit, collections: Set<string>): CommitOp | null;
80
+ /**
81
+ * Handle one decoded frame. Kept synchronous so the socket's event queue drains
82
+ * without backpressure — identity resolution is fire-and-forget, matching the
83
+ * relay path.
84
+ *
85
+ * Exported for tests.
86
+ */
87
+ export declare function processEvent(payload: any, collections: Set<string>): void;
88
+ /**
89
+ * The cursor a connection attempt should offer, given how many attempts in a
90
+ * row were refused before it.
91
+ *
92
+ * `refusals` counts consecutive closes that never reached `open`; it resets the
93
+ * moment one does. Every {@link CURSOR_PROBE_EVERY}th refusal answers null so
94
+ * the attempt subscribes to the live tip instead — see the constant for why
95
+ * that is the discriminator.
96
+ *
97
+ * Exported for tests.
98
+ */
99
+ export declare function reconnectCursor(refusals: number, liveSeq: number | null, bootCursor: string | null | undefined): string | null | undefined;
100
+ /**
101
+ * Connect to a Jetstream v2 instance and begin indexing.
102
+ *
103
+ * Reconnects on disconnect after {@link RECONNECT_DELAY_MS}, resuming from the
104
+ * highest seq seen rather than the boot-time cursor. Jetstream's cursor is
105
+ * inclusive and delivery is at-least-once, so the event at the resume point
106
+ * arrives again — harmless, since writes upsert on the record's `at://` URI.
107
+ *
108
+ * `opts.cursor` is the boot-time cursor and stays fixed across reconnects;
109
+ * what each attempt actually offers comes from {@link reconnectCursor}, so a
110
+ * live probe can drop the cursor for one attempt without losing it.
111
+ *
112
+ * @param refusals Consecutive refused handshakes so far. Internal — reconnects
113
+ * pass their own count; callers start at 0.
114
+ * @returns The WebSocket connection (for shutdown coordination)
115
+ */
116
+ export declare function startJetstreamIndexer(opts: JetstreamOpts, refusals?: number): Promise<WebSocket>;
117
+ export {};
118
+ //# sourceMappingURL=jetstream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jetstream.d.ts","sourceRoot":"","sources":["../src/jetstream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EASL,KAAK,QAAQ,EACb,KAAK,eAAe,EACrB,MAAM,cAAc,CAAA;AAGrB,sEAAsE;AACtE,eAAO,MAAM,eAAe,MAAM,CAAA;AAClC,eAAO,MAAM,QAAQ,QAAS,CAAA;AAO9B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,wDAAwD;AACxD,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,CASR;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAalG;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,GAAG,IAAI,CAY7F;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAuBzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACpC,MAAM,GAAG,IAAI,GAAG,SAAS,CAK3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CA0DjG"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Jetstream v2 live tail — an alternative stream source to the relay firehose.
3
+ *
4
+ * Where `com.atproto.sync.subscribeRepos` ships every commit on the network as
5
+ * DAG-CBOR frames wrapping a CAR block store, Jetstream filters server-side and
6
+ * delivers records as already-decoded JSON. For an AppView tracking a handful
7
+ * of collections that is the difference between decoding the whole network and
8
+ * decoding only what it indexes.
9
+ *
10
+ * What this trades away: the CAR/MST proofs. hatk never verified them — it
11
+ * already trusts the relay — so nothing is lost that was being used. The
12
+ * `getRepo` backfill path in backfill.ts still speaks CAR and is unaffected.
13
+ *
14
+ * @see https://bsky.network/docs/jetstream
15
+ * @module
16
+ */
17
+ import { applyCommit, configureIndexer, getLastSeq, handleIdentityEvent, isIndexableCollection, noteSeq, resumeCursor, setCursorKey, } from "./indexer.js";
18
+ import { log, emit } from "./logger.js";
19
+ /** Server-side filter caps, rejected before the WebSocket upgrade. */
20
+ export const MAX_COLLECTIONS = 100;
21
+ export const MAX_DIDS = 10_000;
22
+ /** Event kinds hatk consumes. `commit` carries records; `identity` drives handle renames. */
23
+ const KINDS = ['commit', 'identity'];
24
+ const RECONNECT_DELAY_MS = 3000;
25
+ /**
26
+ * Refused handshakes before the next attempt drops its cursor and probes live.
27
+ *
28
+ * Jetstream retains roughly a day of seqs. A cursor older than that is refused
29
+ * at the handshake — a bare close 1006, no `open`, no message. Nothing arrives,
30
+ * so {@link getLastSeq} stays null and a plain resume offers the same dead
31
+ * cursor forever. Restarting does not clear it either: the boot cursor is read
32
+ * back from the row this stream never got to advance. The stream wedges for
33
+ * good, while records written through the AppView's own path keep indexing, so
34
+ * nothing looks broken from inside the app.
35
+ *
36
+ * A cursorless probe tells a dead cursor from a dead instance without guessing:
37
+ * a reachable instance always accepts a cursorless subscribe, so a probe that
38
+ * opens means the cursor was the problem, and a probe that is refused too means
39
+ * the instance is down and the cursor is still worth keeping. Probing every Nth
40
+ * attempt rather than once keeps that true across an outage of any length.
41
+ */
42
+ export const CURSOR_PROBE_EVERY = 3;
43
+ /**
44
+ * Build the subscribe URL.
45
+ *
46
+ * Collections are sent explicitly rather than as an `ns.*` wildcard: a wildcard
47
+ * would also match sibling NSIDs the app has no lexicon for (and, for private
48
+ * collections, ones it must never accept from the network).
49
+ *
50
+ * Exported for tests.
51
+ */
52
+ export function buildSubscribeUrl(jetstreamUrl, collections, pinnedRepos, cursor) {
53
+ const params = new URLSearchParams();
54
+ for (const collection of collections)
55
+ params.append('collections', collection);
56
+ for (const kind of KINDS)
57
+ params.append('kinds', kind);
58
+ if (pinnedRepos) {
59
+ for (const did of pinnedRepos)
60
+ params.append('dids', did);
61
+ }
62
+ if (cursor)
63
+ params.append('cursor', cursor);
64
+ return `${jetstreamUrl}/xrpc/network.bsky.jetstream.subscribeEvents?${params}`;
65
+ }
66
+ /**
67
+ * Reject filters the server would reject at the handshake, where the message
68
+ * can name the actual limit instead of surfacing as a failed connection.
69
+ * Exported for tests.
70
+ */
71
+ export function assertFilterLimits(collections, pinnedRepos) {
72
+ if (collections.size > MAX_COLLECTIONS) {
73
+ throw new Error(`Jetstream accepts at most ${MAX_COLLECTIONS} collections, got ${collections.size}. ` +
74
+ `Narrow the indexed collections or use the relay firehose instead.`);
75
+ }
76
+ if (pinnedRepos && pinnedRepos.size > MAX_DIDS) {
77
+ throw new Error(`Jetstream accepts at most ${MAX_DIDS} dids, got ${pinnedRepos.size}. ` +
78
+ `Unpin some repos or use the relay firehose instead.`);
79
+ }
80
+ }
81
+ /**
82
+ * Translate one Jetstream commit payload into hatk's wire-agnostic op shape.
83
+ *
84
+ * Deletes carry no `record` or `cid` — only the collection and rkey that
85
+ * identify what went away. Returns `null` when the payload is unusable or
86
+ * names a collection this AppView must not accept from the network.
87
+ *
88
+ * Exported for tests.
89
+ */
90
+ export function commitToOp(commit, collections) {
91
+ const { collection, rkey, operation } = commit;
92
+ if (!collection || !rkey || !operation)
93
+ return null;
94
+ if (!isIndexableCollection(collection, collections))
95
+ return null;
96
+ if (operation === 'delete') {
97
+ return { action: 'delete', collection, rkey };
98
+ }
99
+ if (operation !== 'create' && operation !== 'update')
100
+ return null;
101
+ if (!commit.cid || !commit.record)
102
+ return null;
103
+ return { action: operation, collection, rkey, cid: commit.cid, record: commit.record };
104
+ }
105
+ /**
106
+ * Handle one decoded frame. Kept synchronous so the socket's event queue drains
107
+ * without backpressure — identity resolution is fire-and-forget, matching the
108
+ * relay path.
109
+ *
110
+ * Exported for tests.
111
+ */
112
+ export function processEvent(payload, collections) {
113
+ const kind = typeof payload?.$type === 'string' ? payload.$type.split('#')[1] : undefined;
114
+ if (kind === 'identity') {
115
+ const did = typeof payload.did === 'string' ? payload.did : undefined;
116
+ const handle = typeof payload.handle === 'string' ? payload.handle : undefined;
117
+ if (did)
118
+ handleIdentityEvent(did, handle);
119
+ return;
120
+ }
121
+ if (kind !== 'commit')
122
+ return;
123
+ // Track sequence for the cursor before filtering: a stream of events for
124
+ // collections we don't index still advances the position we must resume from.
125
+ if (typeof payload.seq === 'number')
126
+ noteSeq(payload.seq);
127
+ const did = typeof payload.did === 'string' ? payload.did : undefined;
128
+ if (!did)
129
+ return;
130
+ const op = commitToOp(payload, collections);
131
+ if (!op)
132
+ return;
133
+ applyCommit(did, [op]);
134
+ }
135
+ /**
136
+ * The cursor a connection attempt should offer, given how many attempts in a
137
+ * row were refused before it.
138
+ *
139
+ * `refusals` counts consecutive closes that never reached `open`; it resets the
140
+ * moment one does. Every {@link CURSOR_PROBE_EVERY}th refusal answers null so
141
+ * the attempt subscribes to the live tip instead — see the constant for why
142
+ * that is the discriminator.
143
+ *
144
+ * Exported for tests.
145
+ */
146
+ export function reconnectCursor(refusals, liveSeq, bootCursor) {
147
+ const resume = resumeCursor(liveSeq, bootCursor);
148
+ // Nothing to abandon — an attempt with no cursor is already a live tail.
149
+ if (!resume)
150
+ return resume;
151
+ return refusals > 0 && refusals % CURSOR_PROBE_EVERY === 0 ? null : resume;
152
+ }
153
+ /**
154
+ * Connect to a Jetstream v2 instance and begin indexing.
155
+ *
156
+ * Reconnects on disconnect after {@link RECONNECT_DELAY_MS}, resuming from the
157
+ * highest seq seen rather than the boot-time cursor. Jetstream's cursor is
158
+ * inclusive and delivery is at-least-once, so the event at the resume point
159
+ * arrives again — harmless, since writes upsert on the record's `at://` URI.
160
+ *
161
+ * `opts.cursor` is the boot-time cursor and stays fixed across reconnects;
162
+ * what each attempt actually offers comes from {@link reconnectCursor}, so a
163
+ * live probe can drop the cursor for one attempt without losing it.
164
+ *
165
+ * @param refusals Consecutive refused handshakes so far. Internal — reconnects
166
+ * pass their own count; callers start at 0.
167
+ * @returns The WebSocket connection (for shutdown coordination)
168
+ */
169
+ export async function startJetstreamIndexer(opts, refusals = 0) {
170
+ const { jetstreamUrl, collections } = opts;
171
+ const pinnedRepos = opts.pinnedRepos || null;
172
+ assertFilterLimits(collections, pinnedRepos);
173
+ setCursorKey('jetstream');
174
+ await configureIndexer(opts);
175
+ const cursor = reconnectCursor(refusals, getLastSeq(), opts.cursor);
176
+ const wsUrl = buildSubscribeUrl(jetstreamUrl, collections, pinnedRepos, cursor);
177
+ if (cursor)
178
+ log(`[jetstream] Resuming from cursor ${cursor}`);
179
+ else if (refusals > 0)
180
+ log('[jetstream] Probing the live tip — the resume cursor keeps being refused');
181
+ log(`[jetstream] Connecting to ${jetstreamUrl} (${collections.size} collections)...`);
182
+ // The lexicon default is identical framing, so an empty subprotocol echo is
183
+ // fine; we offer it so the server can pick the JSON arm explicitly.
184
+ const ws = new WebSocket(wsUrl, ['xrpc.v1.json']);
185
+ ws.addEventListener('message', (event) => {
186
+ try {
187
+ if (typeof event.data !== 'string')
188
+ return;
189
+ const frame = JSON.parse(event.data);
190
+ // Events arrive wrapped in an envelope with the event under `payload`.
191
+ if (frame?.payload)
192
+ processEvent(frame.payload, collections);
193
+ }
194
+ catch (err) {
195
+ emit('jetstream', 'decode_error', { error: err instanceof Error ? err.message : String(err) });
196
+ }
197
+ });
198
+ let opened = false;
199
+ ws.addEventListener('open', () => {
200
+ opened = true;
201
+ log('[jetstream] Connected');
202
+ });
203
+ ws.addEventListener('close', (event) => {
204
+ // A close that never reached `open` is a refused handshake, not a dropped
205
+ // stream, and the two want opposite things from the cursor.
206
+ const nextRefusals = opened ? 0 : refusals + 1;
207
+ if (opened) {
208
+ log(`[jetstream] Disconnected (${event.code}), reconnecting in ${RECONNECT_DELAY_MS / 1000}s...`);
209
+ }
210
+ else {
211
+ log(`[jetstream] Handshake refused (${event.code}${event.reason ? `: ${event.reason}` : ''}) ` +
212
+ `x${nextRefusals}, retrying in ${RECONNECT_DELAY_MS / 1000}s...`);
213
+ emit('jetstream', 'handshake_refused', {
214
+ code: event.code,
215
+ reason: event.reason || undefined,
216
+ cursor: cursor ?? null,
217
+ refusals: nextRefusals,
218
+ });
219
+ }
220
+ // `opts` goes back unchanged so the boot cursor survives a probe; the seq
221
+ // is read at reconnect time, not here, so a resume uses everything seen.
222
+ setTimeout(() => startJetstreamIndexer(opts, nextRefusals), RECONNECT_DELAY_MS);
223
+ });
224
+ return ws;
225
+ }
package/dist/labels.d.ts CHANGED
@@ -13,7 +13,36 @@ export interface LabelRuleContext {
13
13
  value: Record<string, any>;
14
14
  };
15
15
  }
16
+ export interface LabelModule {
17
+ definition?: LabelDefinition;
18
+ evaluate?: (ctx: LabelRuleContext) => Promise<string[]>;
19
+ }
20
+ export declare function defineLabel(module: LabelModule): {
21
+ definition?: LabelDefinition;
22
+ evaluate?: (ctx: LabelRuleContext) => Promise<string[]>;
23
+ __type: "labels";
24
+ };
25
+ /**
26
+ * Discover and load label rule modules from the `labels/` directory.
27
+ *
28
+ * Each module should default-export an object with an optional `definition`
29
+ * (label metadata like severity and blur behavior) and an optional `evaluate`
30
+ * function that returns label values to apply to a record.
31
+ *
32
+ * @param labelsDir - Absolute path to the `labels/` directory
33
+ */
16
34
  export declare function initLabels(labelsDir: string): Promise<void>;
35
+ /** Clear all registered label definitions and rules (for hot-reload). */
36
+ export declare function clearLabels(): void;
37
+ /** Register a single label module from a scanned server/ module. */
38
+ export declare function registerLabelModule(name: string, labelMod: {
39
+ definition?: LabelDefinition;
40
+ evaluate?: (ctx: LabelRuleContext) => Promise<string[]>;
41
+ }): void;
42
+ /**
43
+ * Evaluate all loaded label rules against a record and persist any resulting labels.
44
+ * Called after each record is indexed. Rule errors are logged but never block indexing.
45
+ */
17
46
  export declare function runLabelRules(record: {
18
47
  uri: string;
19
48
  cid: string;
@@ -21,9 +50,16 @@ export declare function runLabelRules(record: {
21
50
  collection: string;
22
51
  value: Record<string, any>;
23
52
  }): Promise<void>;
53
+ /**
54
+ * Re-evaluate all label rules against every existing record in the given collections.
55
+ * Used by `/admin/rescan-labels` to apply new or updated rules retroactively.
56
+ *
57
+ * @returns Count of records scanned and new labels applied
58
+ */
24
59
  export declare function rescanLabels(collections: string[]): Promise<{
25
60
  scanned: number;
26
61
  labeled: number;
27
62
  }>;
63
+ /** Return all label definitions discovered during {@link initLabels}. */
28
64
  export declare function getLabelDefinitions(): LabelDefinition[];
29
65
  //# sourceMappingURL=labels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KACtD,CAAA;IACD,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC3B,CAAA;CACF;AAWD,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCjE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCvG;AAED,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAEvD"}
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QACtD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KACtD,CAAA;IACD,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC3B,CAAA;CACF;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CACxD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;iBAJhC,eAAe;eACjB,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;;EAKxD;AAYD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCjE;AAED,yEAAyE;AACzE,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE;IAAE,UAAU,CAAC,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAClG,IAAI,CAON;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBhB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCvG;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,IAAI,eAAe,EAAE,CAEvD"}
package/dist/labels.js CHANGED
@@ -6,13 +6,53 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
6
6
  }
7
7
  return path;
8
8
  };
9
+ /**
10
+ * Label system for applying moderation labels to records as they are indexed.
11
+ *
12
+ * Place label modules in the `labels/` directory. Each module default-exports
13
+ * an object with a `definition` (label metadata) and/or an `evaluate` function
14
+ * (rule that returns label values for a given record).
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * // labels/nsfw.ts
19
+ * import type { LabelRuleContext } from '@hatk/hatk/labels'
20
+ *
21
+ * export default {
22
+ * definition: {
23
+ * identifier: 'nsfw',
24
+ * severity: 'alert',
25
+ * blurs: 'media',
26
+ * defaultSetting: 'warn',
27
+ * locales: [{ lang: 'en', name: 'NSFW', description: 'Not safe for work' }],
28
+ * },
29
+ *
30
+ * async evaluate(ctx: LabelRuleContext): Promise<string[]> {
31
+ * if (ctx.record.value.nsfw === true) return ['nsfw']
32
+ * return []
33
+ * },
34
+ * }
35
+ * ```
36
+ */
9
37
  import { resolve } from 'node:path';
10
38
  import { readdirSync } from 'node:fs';
11
- import { querySQL, runSQL, insertLabels, getSchema } from "./db.js";
39
+ import { querySQL, runSQL, insertLabels, getSchema } from "./database/db.js";
12
40
  import { log, emit } from "./logger.js";
41
+ export function defineLabel(module) {
42
+ return { __type: 'labels', ...module };
43
+ }
13
44
  const rules = [];
14
45
  let labelDefs = [];
15
46
  let labelSrc = 'self';
47
+ /**
48
+ * Discover and load label rule modules from the `labels/` directory.
49
+ *
50
+ * Each module should default-export an object with an optional `definition`
51
+ * (label metadata like severity and blur behavior) and an optional `evaluate`
52
+ * function that returns label values to apply to a record.
53
+ *
54
+ * @param labelsDir - Absolute path to the `labels/` directory
55
+ */
16
56
  export async function initLabels(labelsDir) {
17
57
  let files;
18
58
  try {
@@ -26,7 +66,7 @@ export async function initLabels(labelsDir) {
26
66
  for (const file of files) {
27
67
  const name = file.replace(/\.(ts|js)$/, '');
28
68
  const scriptPath = resolve(labelsDir, file);
29
- const mod = await import(__rewriteRelativeImportExtension(scriptPath));
69
+ const mod = await import(__rewriteRelativeImportExtension(/* @vite-ignore */ `${scriptPath}?t=${Date.now()}`));
30
70
  const handler = mod.default;
31
71
  if (handler.definition) {
32
72
  labelDefs.push(handler.definition);
@@ -45,6 +85,24 @@ export async function initLabels(labelsDir) {
45
85
  log(`[labels] ${labelDefs.length} label definitions loaded`);
46
86
  }
47
87
  }
88
+ /** Clear all registered label definitions and rules (for hot-reload). */
89
+ export function clearLabels() {
90
+ labelDefs.length = 0;
91
+ rules.length = 0;
92
+ }
93
+ /** Register a single label module from a scanned server/ module. */
94
+ export function registerLabelModule(name, labelMod) {
95
+ if (labelMod.definition) {
96
+ labelDefs.push(labelMod.definition);
97
+ }
98
+ if (labelMod.evaluate) {
99
+ rules.push({ name, evaluate: labelMod.evaluate });
100
+ }
101
+ }
102
+ /**
103
+ * Evaluate all loaded label rules against a record and persist any resulting labels.
104
+ * Called after each record is indexed. Rule errors are logged but never block indexing.
105
+ */
48
106
  export async function runLabelRules(record) {
49
107
  if (rules.length === 0)
50
108
  return;
@@ -69,15 +127,21 @@ export async function runLabelRules(record) {
69
127
  emit('labels', 'applied', { count: allLabels.length, uri: record.uri, vals: allLabels.map((l) => l.val) });
70
128
  }
71
129
  }
130
+ /**
131
+ * Re-evaluate all label rules against every existing record in the given collections.
132
+ * Used by `/admin/rescan-labels` to apply new or updated rules retroactively.
133
+ *
134
+ * @returns Count of records scanned and new labels applied
135
+ */
72
136
  export async function rescanLabels(collections) {
73
- const beforeRows = await querySQL(`SELECT COUNT(*) as count FROM _labels`);
137
+ const beforeRows = (await querySQL(`SELECT COUNT(*) as count FROM _labels`));
74
138
  const beforeCount = Number(beforeRows[0]?.count || 0);
75
139
  let scanned = 0;
76
140
  for (const collection of collections) {
77
141
  const schema = getSchema(collection);
78
142
  if (!schema)
79
143
  continue;
80
- const rows = await querySQL(`SELECT * FROM ${schema.tableName}`);
144
+ const rows = (await querySQL(`SELECT * FROM ${schema.tableName}`));
81
145
  for (const row of rows) {
82
146
  scanned++;
83
147
  const value = {};
@@ -85,7 +149,7 @@ export async function rescanLabels(collections) {
85
149
  let v = row[col.name];
86
150
  if (v === null || v === undefined)
87
151
  continue;
88
- if (col.duckdbType === 'JSON' && typeof v === 'string') {
152
+ if (col.isJson && typeof v === 'string') {
89
153
  try {
90
154
  v = JSON.parse(v);
91
155
  }
@@ -102,10 +166,11 @@ export async function rescanLabels(collections) {
102
166
  });
103
167
  }
104
168
  }
105
- const afterRows = await querySQL(`SELECT COUNT(*) as count FROM _labels`);
169
+ const afterRows = (await querySQL(`SELECT COUNT(*) as count FROM _labels`));
106
170
  const afterCount = Number(afterRows[0]?.count || 0);
107
171
  return { scanned, labeled: afterCount - beforeCount };
108
172
  }
173
+ /** Return all label definitions discovered during {@link initLabels}. */
109
174
  export function getLabelDefinitions() {
110
175
  return labelDefs;
111
176
  }
@@ -16,6 +16,8 @@ export type Row<T = unknown> = {
16
16
  uri: string;
17
17
  cid: string;
18
18
  did: string;
19
+ /** The permissioned space this record came from. Absent for public repo data. */
20
+ space?: string;
19
21
  handle?: string;
20
22
  indexed_at?: string;
21
23
  value: T;
@@ -1 +1 @@
1
- {"version":3,"file":"lex-types.d.ts","sourceRoot":"","sources":["../src/lex-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lex-types.d.ts","sourceRoot":"","sources":["../src/lex-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lexicon-resolve.d.ts","sourceRoot":"","sources":["../src/lexicon-resolve.ts"],"names":[],"mappings":"AAsMA,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AA+DD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgChF"}
1
+ {"version":3,"file":"lexicon-resolve.d.ts","sourceRoot":"","sources":["../src/lexicon-resolve.ts"],"names":[],"mappings":"AAoFA,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AA2FD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgChF"}