@expandai/sdk 0.19.0 → 0.20.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.
Files changed (72) hide show
  1. package/README.md +130 -4
  2. package/build/dts/AppendixMarkers.d.ts +30 -0
  3. package/build/dts/AppendixMarkers.d.ts.map +1 -0
  4. package/build/dts/Client.d.ts +41 -6
  5. package/build/dts/Client.d.ts.map +1 -1
  6. package/build/dts/Crawls.d.ts +568 -0
  7. package/build/dts/Crawls.d.ts.map +1 -0
  8. package/build/dts/EnvProxyHttpClient.d.ts +28 -0
  9. package/build/dts/EnvProxyHttpClient.d.ts.map +1 -0
  10. package/build/dts/FetchJson.d.ts +444 -37
  11. package/build/dts/FetchJson.d.ts.map +1 -1
  12. package/build/dts/Generated.d.ts +1545 -788
  13. package/build/dts/Generated.d.ts.map +1 -1
  14. package/build/dts/HttpClientHelpers.d.ts +13 -0
  15. package/build/dts/HttpClientHelpers.d.ts.map +1 -1
  16. package/build/dts/Internal.d.ts +6 -4
  17. package/build/dts/Internal.d.ts.map +1 -1
  18. package/build/dts/ParseErrorBody.d.ts +26 -0
  19. package/build/dts/ParseErrorBody.d.ts.map +1 -0
  20. package/build/dts/Playground.d.ts +20 -0
  21. package/build/dts/Playground.d.ts.map +1 -1
  22. package/build/dts/RetryAfter.d.ts +40 -0
  23. package/build/dts/RetryAfter.d.ts.map +1 -0
  24. package/build/dts/Service.d.ts +94 -45
  25. package/build/dts/Service.d.ts.map +1 -1
  26. package/build/dts/StreamPage.d.ts +10 -0
  27. package/build/dts/StreamPage.d.ts.map +1 -0
  28. package/build/dts/index.d.ts +9 -2
  29. package/build/dts/index.d.ts.map +1 -1
  30. package/build/esm/AppendixMarkers.js +307 -0
  31. package/build/esm/AppendixMarkers.js.map +1 -0
  32. package/build/esm/Client.js +96 -15
  33. package/build/esm/Client.js.map +1 -1
  34. package/build/esm/Crawls.js +786 -0
  35. package/build/esm/Crawls.js.map +1 -0
  36. package/build/esm/EnvProxyHttpClient.js +55 -0
  37. package/build/esm/EnvProxyHttpClient.js.map +1 -0
  38. package/build/esm/FetchJson.js +48 -22
  39. package/build/esm/FetchJson.js.map +1 -1
  40. package/build/esm/Generated.js +540 -112
  41. package/build/esm/Generated.js.map +1 -1
  42. package/build/esm/HttpClientHelpers.js +36 -1
  43. package/build/esm/HttpClientHelpers.js.map +1 -1
  44. package/build/esm/Internal.js +140 -33
  45. package/build/esm/Internal.js.map +1 -1
  46. package/build/esm/ParseErrorBody.js +41 -0
  47. package/build/esm/ParseErrorBody.js.map +1 -0
  48. package/build/esm/Playground.js +38 -0
  49. package/build/esm/Playground.js.map +1 -1
  50. package/build/esm/RetryAfter.js +104 -0
  51. package/build/esm/RetryAfter.js.map +1 -0
  52. package/build/esm/Service.js +96 -17
  53. package/build/esm/Service.js.map +1 -1
  54. package/build/esm/StreamPage.js +46 -0
  55. package/build/esm/StreamPage.js.map +1 -0
  56. package/build/esm/index.js +5 -1
  57. package/build/esm/index.js.map +1 -1
  58. package/package.json +8 -2
  59. package/src/AppendixMarkers.ts +370 -0
  60. package/src/Client.ts +131 -16
  61. package/src/Crawls.ts +1387 -0
  62. package/src/EnvProxyHttpClient.ts +71 -0
  63. package/src/FetchJson.ts +63 -25
  64. package/src/Generated.ts +738 -162
  65. package/src/HttpClientHelpers.ts +48 -1
  66. package/src/Internal.ts +163 -105
  67. package/src/ParseErrorBody.ts +42 -0
  68. package/src/Playground.ts +48 -0
  69. package/src/RetryAfter.ts +138 -0
  70. package/src/Service.ts +208 -25
  71. package/src/StreamPage.ts +47 -0
  72. package/src/index.ts +29 -3
@@ -0,0 +1,307 @@
1
+ // Appendix omission markers as they appear in Fetch Markdown.
2
+ //
3
+ // Mirrors `packages/core/src/Fetch/AppendixMarkers.ts` (the SDK cannot depend
4
+ // on core). Keep the grammar in sync with the Rust emitter in
5
+ // `native/expand-snapshot/src/markdown/pruner/appendix_markers.rs`.
6
+ //
7
+ // A marker is placed wherever block content renders, so it can arrive with a
8
+ // blockquote or list-item prefix (`> [appendix omitted: …]`). Marker-shaped
9
+ // lines inside fenced code are page text, not markers, and are left alone.
10
+ //
11
+ // [appendix omitted: 14 links · ~320 tokens] {612}
12
+ // [appendix omitted: navigation — Home, News, Sport, +11 more · 14 links · ~320 tokens] {612}
13
+ // [appendix omitted: 7 more blocks · 41 links · ~2100 tokens] (trailing fold; id is the first folded block when bound)
14
+ import { Schema } from 'effect';
15
+ export const APPENDIX_MARKER_PREFIX = '[appendix omitted: ';
16
+ export const AppendixMarkerLevel = Schema.Literal('off', 'compact', 'detailed');
17
+ const MARKER_LINE = /^\[appendix omitted: (?:(?<more>\d+) more blocks? · |(?<label>[a-z]+)(?: — (?<preview>.+?))? · )?(?<links>\d+) links? · ~(?<tokens>\d+) tokens\](?: \{(?<id>\d+)\})?$/u;
18
+ /** One blockquote or list-item prefix, as Markdown renders it. */
19
+ const CONTAINER_PREFIX = /^(?:> ?|[*+-][ \t]|\d+[.)][ \t])/u;
20
+ const FENCE_LINE = /^(`{3,}|~{3,})/u;
21
+ /** A list bullet or ordered-list number introducing an item. */
22
+ const LIST_MARKER = /^(?:[*+-]|\d+[.)])(?=[ \t]|$)/u;
23
+ /**
24
+ * A marker rendered inside a blockquote or a list item carries that container's
25
+ * prefix (`> `, `- `, `1. `, and nestings of those). The Rust emitter places
26
+ * markers wherever block content renders, so consumers have to see through
27
+ * those prefixes or the marker reads as page content.
28
+ */
29
+ function markerBody(line) {
30
+ let rest = line.trimStart();
31
+ while (!rest.startsWith(APPENDIX_MARKER_PREFIX)) {
32
+ const prefix = CONTAINER_PREFIX.exec(rest);
33
+ if (!prefix)
34
+ return rest;
35
+ rest = rest.slice(prefix[0].length).trimStart();
36
+ }
37
+ return rest;
38
+ }
39
+ /**
40
+ * The container markers a line opens with, and where they leave it.
41
+ *
42
+ * Blockquotes and list items nest in either order (`- > ```rust`), so the two
43
+ * are stripped in turn rather than one after the other. A `>` takes one
44
+ * optional space with it, which is the quote marker rather than indentation.
45
+ * A closing delimiter is read with `allowListMarkers` false: a bullet on a line
46
+ * *inside* a block is code, and reading it as container syntax ends the block.
47
+ */
48
+ function containerPrefix(line, allowListMarkers) {
49
+ const rawIndent = leadingIndent(line, 0).columns;
50
+ let rest = line;
51
+ let depth = 0;
52
+ let column = 0;
53
+ let markerColumn = Number.MAX_SAFE_INTEGER;
54
+ let afterMarkers;
55
+ const openedItems = [];
56
+ let sawListMarker = false;
57
+ for (;;) {
58
+ const { bytes, columns } = leadingIndent(rest, column);
59
+ rest = rest.slice(bytes);
60
+ column += columns;
61
+ if (rest.startsWith('>')) {
62
+ depth += 1;
63
+ const after = rest.slice(1).startsWith(' ') ? rest.slice(2) : rest.slice(1);
64
+ column += rest.length - after.length;
65
+ rest = after;
66
+ afterMarkers = column;
67
+ continue;
68
+ }
69
+ const { width, content } = allowListMarkers ? listMarkerWidth(rest, column) : { width: 0, content: rest };
70
+ if (width > 0) {
71
+ sawListMarker = true;
72
+ markerColumn = Math.min(markerColumn, column);
73
+ column += width;
74
+ rest = content;
75
+ afterMarkers = column;
76
+ openedItems.push({ depth, column });
77
+ continue;
78
+ }
79
+ return { depth, rawIndent, afterMarkers, markerColumn, openedItems, column, sawListMarker, rest };
80
+ }
81
+ }
82
+ /**
83
+ * The column a line begins at for container purposes: its own list marker when
84
+ * it opens an item, otherwise its content.
85
+ */
86
+ function startsAt(prefix) {
87
+ return prefix.sawListMarker ? prefix.markerColumn : prefix.column;
88
+ }
89
+ /**
90
+ * Whether a line's content is an indented code block — four columns past
91
+ * whatever contains it. That is either the enclosing list item, for the
92
+ * indentation before this line's own markers, or the innermost marker this line
93
+ * opens, for the indentation after them.
94
+ */
95
+ function isIndentedCode(prefix, contentColumn) {
96
+ const inside = Math.max(contentColumn, prefix.afterMarkers ?? 0);
97
+ return prefix.rawIndent >= contentColumn + 4 || prefix.column >= inside + 4;
98
+ }
99
+ /**
100
+ * Bytes and columns taken by leading whitespace. A tab advances to the next
101
+ * four-column stop, as CommonMark counts it — code bodies are full of them, and
102
+ * reading one as no indentation puts a line outside its own block.
103
+ */
104
+ function leadingIndent(rest, startColumn) {
105
+ let bytes = 0;
106
+ let column = startColumn;
107
+ for (const character of rest) {
108
+ if (character === ' ')
109
+ column += 1;
110
+ // A tab stop is measured from where the line already is, not from the
111
+ // start of the run.
112
+ else if (character === '\t')
113
+ column += 4 - (column % 4);
114
+ else
115
+ break;
116
+ bytes += 1;
117
+ }
118
+ return { bytes, columns: column - startColumn };
119
+ }
120
+ /** A run of three or more backticks or tildes at the start of `content`. */
121
+ function fenceRun(content) {
122
+ const match = FENCE_LINE.exec(content)?.[1];
123
+ return match === undefined ? undefined : { fenceChar: match[0], run: match.length };
124
+ }
125
+ /** Columns taken by a leading list marker, and the content after it. */
126
+ function listMarkerWidth(rest, startColumn) {
127
+ const marker = LIST_MARKER.exec(rest)?.[0];
128
+ if (marker === undefined)
129
+ return { width: 0, content: rest };
130
+ const afterMarker = rest.slice(marker.length);
131
+ const padding = leadingIndent(afterMarker, startColumn + marker.length);
132
+ // More than four columns of padding is an indented code block inside the
133
+ // item, not a wider marker: the item's content starts one column past it.
134
+ if (padding.columns > 4)
135
+ return { width: marker.length, content: afterMarker };
136
+ return { width: marker.length + padding.columns, content: rest.slice(marker.length + padding.bytes) };
137
+ }
138
+ /**
139
+ * The fence a line opens, if any. The caller has already established that the
140
+ * line is not indented code.
141
+ */
142
+ function opensFence(prefix, itemContentColumn) {
143
+ const run = fenceRun(prefix.rest);
144
+ if (run === undefined)
145
+ return undefined;
146
+ // A backtick fence's info string may not contain a backtick, so ``` `` ``` is
147
+ // a paragraph with inline code in it, not a block that swallows what follows.
148
+ if (run.fenceChar === '`' && prefix.rest.slice(run.run).includes('`'))
149
+ return undefined;
150
+ return { depth: prefix.depth, indent: prefix.column, itemContentColumn, ...run };
151
+ }
152
+ /**
153
+ * A fence closes on a run of the same character, at least as long as the open,
154
+ * at the same blockquote depth and no more than three columns further in, with
155
+ * nothing but whitespace after it. Everything else inside the block — an info
156
+ * string, a `>`, a list bullet — is code.
157
+ */
158
+ function closesFence(line, open) {
159
+ const prefix = containerPrefix(line, false);
160
+ if (prefix.depth !== open.depth || prefix.column > open.indent + 3)
161
+ return false;
162
+ const run = fenceRun(prefix.rest);
163
+ if (run === undefined || run.fenceChar !== open.fenceChar || run.run < open.run)
164
+ return false;
165
+ return prefix.rest.slice(run.run).trim() === '';
166
+ }
167
+ /**
168
+ * Whether a line has stepped out of the list item a fence opened inside, which
169
+ * ends the block whether or not a closing delimiter ever arrived.
170
+ */
171
+ function leavesFenceContainer(line, open) {
172
+ if (open.itemContentColumn === 0 && open.depth === 0)
173
+ return false;
174
+ const prefix = containerPrefix(line, true);
175
+ if (prefix.rest.trim() === '' && !prefix.sawListMarker)
176
+ return false;
177
+ return prefix.depth < open.depth || startsAt(prefix) < open.itemContentColumn;
178
+ }
179
+ /**
180
+ * Walk a body's lines, reporting each with the marker it carries, if any.
181
+ *
182
+ * The list items a line sits inside are tracked as a stack of their content
183
+ * columns, because that is the whole difference between four spaces meaning an
184
+ * indented code block and four spaces meaning ordinary item content — and a
185
+ * delimiter that is a fence in one is code in the other.
186
+ */
187
+ function eachLine(markdown, visit) {
188
+ // Blockquote depth and content column of each open item, outermost first. The
189
+ // depth matters because an item inside a quote ends when the quote does,
190
+ // however its columns compare.
191
+ const openItems = [];
192
+ let fence;
193
+ for (const raw of markdown.split('\n')) {
194
+ // `lines()` in the Rust twin drops the carriage return; a body captured
195
+ // with CRLF must classify the same either way.
196
+ const line = raw.endsWith('\r') ? raw.slice(0, -1) : raw;
197
+ if (fence !== undefined) {
198
+ // A line that steps out of the fence's list item is not part of the
199
+ // block — the block ended above it — so it still has to be read.
200
+ if (leavesFenceContainer(line, fence)) {
201
+ fence = undefined;
202
+ }
203
+ else {
204
+ const closing = closesFence(line, fence);
205
+ if (closing)
206
+ fence = undefined;
207
+ // The delimiters belong to the document; only the body between them
208
+ // is code a consumer may drop.
209
+ visit(raw, undefined, !closing);
210
+ continue;
211
+ }
212
+ }
213
+ const prefix = containerPrefix(line, true);
214
+ // A blank line neither opens nor closes a container, and the items it sits
215
+ // inside continue after it. An empty list item (`10.` with its content on a
216
+ // later line) looks blank once its marker is stripped, and is not.
217
+ if (prefix.rest.trim() === '' && !prefix.sawListMarker) {
218
+ visit(raw, undefined, false);
219
+ continue;
220
+ }
221
+ while (openItems.length > 0) {
222
+ const innermost = openItems[openItems.length - 1];
223
+ if (innermost.depth <= prefix.depth && startsAt(prefix) >= innermost.column)
224
+ break;
225
+ openItems.pop();
226
+ }
227
+ const contentColumn = openItems[openItems.length - 1]?.column ?? 0;
228
+ // An indented code block is not a list item, not a fence, and not a
229
+ // marker — it is code, whatever it looks like.
230
+ if (isIndentedCode(prefix, contentColumn)) {
231
+ visit(raw, undefined, false);
232
+ continue;
233
+ }
234
+ for (const opened of prefix.openedItems)
235
+ openItems.push(opened);
236
+ const opening = opensFence(prefix, openItems[openItems.length - 1]?.column ?? 0);
237
+ if (opening !== undefined) {
238
+ fence = opening;
239
+ visit(raw, undefined, false);
240
+ continue;
241
+ }
242
+ visit(raw, parseAppendixMarkerLine(line), false);
243
+ }
244
+ }
245
+ /**
246
+ * A body with the *contents* of fenced code removed, delimiters kept. Evidence
247
+ * ids inside a code example are page text, not citations — but a code block's
248
+ * own id rides on its opening fence, so the delimiters have to stay.
249
+ */
250
+ export function withoutFencedCode(markdown) {
251
+ const kept = [];
252
+ eachLine(markdown, (line, _marker, fenced) => {
253
+ if (!fenced)
254
+ kept.push(line);
255
+ });
256
+ return kept.join('\n');
257
+ }
258
+ export function isAppendixMarkerLine(line) {
259
+ const body = markerBody(line);
260
+ return body.startsWith(APPENDIX_MARKER_PREFIX) && MARKER_LINE.test(body.trimEnd());
261
+ }
262
+ export function parseAppendixMarkerLine(line) {
263
+ const groups = MARKER_LINE.exec(markerBody(line).trimEnd())?.groups;
264
+ if (!groups)
265
+ return undefined;
266
+ const links = Number(groups.links);
267
+ const approxTokens = Number(groups.tokens);
268
+ if (!Number.isSafeInteger(links) || !Number.isSafeInteger(approxTokens))
269
+ return undefined;
270
+ const evidenceId = groups.id === undefined ? undefined : Number(groups.id);
271
+ const moreBlocks = groups.more === undefined ? undefined : Number(groups.more);
272
+ return {
273
+ evidenceId: evidenceId !== undefined && Number.isSafeInteger(evidenceId) ? evidenceId : undefined,
274
+ links,
275
+ approxTokens,
276
+ label: groups.label,
277
+ preview: groups.preview,
278
+ moreBlocks: moreBlocks !== undefined && Number.isSafeInteger(moreBlocks) ? moreBlocks : undefined,
279
+ };
280
+ }
281
+ /**
282
+ * Remove marker paragraphs from a Markdown body. Markers are synthetic: they
283
+ * are never search snippets, never citable, and never scored by quality evals.
284
+ */
285
+ export function stripAppendixMarkers(markdown) {
286
+ if (!markdown.includes(APPENDIX_MARKER_PREFIX))
287
+ return markdown;
288
+ const kept = [];
289
+ eachLine(markdown, (line, marker) => {
290
+ if (!marker)
291
+ kept.push(line);
292
+ });
293
+ return kept
294
+ .join('\n')
295
+ .replace(/\n{3,}/g, '\n\n')
296
+ .replace(/\n+$/u, '\n');
297
+ }
298
+ /** Every marker in a Markdown body, in document order. */
299
+ export function parseAppendixMarkers(markdown) {
300
+ const markers = [];
301
+ eachLine(markdown, (_line, marker) => {
302
+ if (marker)
303
+ markers.push(marker);
304
+ });
305
+ return markers;
306
+ }
307
+ //# sourceMappingURL=AppendixMarkers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppendixMarkers.js","sourceRoot":"","sources":["../../src/AppendixMarkers.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,8EAA8E;AAC9E,8DAA8D;AAC9D,oEAAoE;AACpE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,EAAE;AACF,qDAAqD;AACrD,gGAAgG;AAChG,gIAAgI;AAEhI,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAA;AAE3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AAG/E,MAAM,WAAW,GAChB,wKAAwK,CAAA;AAEzK,kEAAkE;AAClE,MAAM,gBAAgB,GAAG,mCAAmC,CAAA;AAE5D,MAAM,UAAU,GAAG,iBAAiB,CAAA;AAEpC,gEAAgE;AAChE,MAAM,WAAW,GAAG,gCAAgC,CAAA;AAEpD;;;;;GAKG;AACH,SAAS,UAAU,CAAC,IAAY;IAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;IAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;IAChD,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAiDD;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,gBAAyB;IAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IAChD,IAAI,IAAI,GAAG,IAAI,CAAA;IACf,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,IAAI,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAA;IAC1C,IAAI,YAAgC,CAAA;IACpC,MAAM,WAAW,GAAwC,EAAE,CAAA;IAC3D,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,SAAS,CAAC;QACT,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACtD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,MAAM,IAAI,OAAO,CAAA;QACjB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAA;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3E,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;YACpC,IAAI,GAAG,KAAK,CAAA;YACZ,YAAY,GAAG,MAAM,CAAA;YACrB,SAAQ;QACT,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACzG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACf,aAAa,GAAG,IAAI,CAAA;YACpB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAC7C,MAAM,IAAI,KAAK,CAAA;YACf,IAAI,GAAG,OAAO,CAAA;YACd,YAAY,GAAG,MAAM,CAAA;YACrB,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;YACnC,SAAQ;QACT,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;IAClG,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,MAAuB;IACxC,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;AAClE,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAuB,EAAE,aAAqB;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAA;IAChE,OAAO,MAAM,CAAC,SAAS,IAAI,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,CAAA;AAC5E,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,WAAmB;IACvD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,MAAM,GAAG,WAAW,CAAA;IACxB,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,SAAS,KAAK,GAAG;YAAE,MAAM,IAAI,CAAC,CAAA;QAClC,sEAAsE;QACtE,oBAAoB;aACf,IAAI,SAAS,KAAK,IAAI;YAAE,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;;YAClD,MAAK;QACV,KAAK,IAAI,CAAC,CAAA;IACX,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;AAChD,CAAC;AAED,4EAA4E;AAC5E,SAAS,QAAQ,CAAC,OAAe;IAChC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC3C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;AACpF,CAAC;AAED,wEAAwE;AACxE,SAAS,eAAe,CAAC,IAAY,EAAE,WAAmB;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IACvE,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;IAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAA;AACtG,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,MAAuB,EAAE,iBAAyB;IACrE,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACvC,8EAA8E;IAC9E,8EAA8E;IAC9E,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACvF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,EAAE,CAAA;AACjF,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,IAAe;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAChF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IAC7F,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,IAAe;IAC1D,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;QAAE,OAAO,KAAK,CAAA;IACpE,OAAO,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAA;AAC9E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAChB,QAAgB,EAChB,KAAkF;IAElF,8EAA8E;IAC9E,yEAAyE;IACzE,+BAA+B;IAC/B,MAAM,SAAS,GAAwC,EAAE,CAAA;IACzD,IAAI,KAA4B,CAAA;IAChC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,oEAAoE;YACpE,iEAAiE;YACjE,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACvC,KAAK,GAAG,SAAS,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACP,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACxC,IAAI,OAAO;oBAAE,KAAK,GAAG,SAAS,CAAA;gBAC9B,oEAAoE;gBACpE,+BAA+B;gBAC/B,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAA;gBAC/B,SAAQ;YACT,CAAC;QACF,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,2EAA2E;QAC3E,4EAA4E;QAC5E,mEAAmE;QACnE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACxD,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;YAC5B,SAAQ;QACT,CAAC;QACD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACjD,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM;gBAAE,MAAK;YAClF,SAAS,CAAC,GAAG,EAAE,CAAA;QAChB,CAAC;QACD,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;QAClE,oEAAoE;QACpE,+CAA+C;QAC/C,IAAI,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;YAC5B,SAAQ;QACT,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,WAAW;YAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAA;QAChF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,KAAK,GAAG,OAAO,CAAA;YACf,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;YAC5B,SAAQ;QACT,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;IACjD,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IACjD,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAaD,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IACnD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAA;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAA;IACzF,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9E,OAAO;QACN,UAAU,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACjG,KAAK;QACL,YAAY;QACZ,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KACjG,CAAA;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC/D,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IACF,OAAO,IAAI;SACT,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACpD,MAAM,OAAO,GAAqB,EAAE,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -1,6 +1,33 @@
1
+ import { Undici } from '@effect/platform-node';
1
2
  import { Effect, Either, Exit, Layer } from 'effect';
3
+ import { makeCrawlProjectionsClient, makeCrawlsClient, } from './Crawls.js';
4
+ import { ExpandClientError } from './Error.js';
2
5
  import { InternalClient } from './Internal.js';
3
6
  import { buildServiceConfig, } from './Service.js';
7
+ export class SnapshotService {
8
+ baseUrl;
9
+ readSnapshot;
10
+ constructor(baseUrl, readSnapshot) {
11
+ this.baseUrl = baseUrl;
12
+ this.readSnapshot = readSnapshot;
13
+ }
14
+ get(params, options = {}) {
15
+ return this.readSnapshot(params, options);
16
+ }
17
+ async network(params) {
18
+ return this.request(`${params.snapshotId}/network${params.q ? `?q=${encodeURIComponent(params.q)}` : ''}`);
19
+ }
20
+ async preview(params) {
21
+ const suffix = `/artifacts/${encodeURIComponent(params.artifactId)}/preview${params.maxBytes !== undefined ? `?maxBytes=${params.maxBytes}` : ''}`;
22
+ return this.request(`${params.snapshotId}${suffix}`);
23
+ }
24
+ async request(path) {
25
+ const response = await globalThis.fetch(`${this.baseUrl.replace(/\/+$/u, '')}/v1/public/snapshots/${path}`);
26
+ if (!response.ok)
27
+ throw new Error(`Snapshot request failed with HTTP ${response.status}`);
28
+ return (await response.json());
29
+ }
30
+ }
4
31
  /**
5
32
  * Promise-based client for the Expand API. Holds an {@link InternalClient} layer and runs Effects
6
33
  * against it, translating typed failures into the `ExpandClient*Error` hierarchy that async/await
@@ -14,6 +41,18 @@ import { buildServiceConfig, } from './Service.js';
14
41
  */
15
42
  export class ExpandClient {
16
43
  layer;
44
+ lifetime = new AbortController();
45
+ activeRequests = new Set();
46
+ dispatcher;
47
+ closePromise;
48
+ /** Create, list and control crawls, and read their event streams. */
49
+ crawls;
50
+ /** Read stored crawl captures: Markdown, HTML, State JSON and evidence. */
51
+ captures;
52
+ /** Read a crawled page's versions and diffs. */
53
+ pages;
54
+ snapshots;
55
+ projections;
17
56
  constructor(options = {}) {
18
57
  // Eagerly validate so the Promise constructor matches the documented sync-throw contract.
19
58
  // `buildServiceConfig` is a pure-sync Effect (env-var read + Schema.decode), so runSync is safe.
@@ -25,6 +64,44 @@ export class ExpandClient {
25
64
  // Layer.orDie narrows the error channel to `never` while keeping a die fallback as a defensive
26
65
  // net (translateCause picks up dies via Cause.dieOption and converts via toPublicError).
27
66
  this.layer = InternalClient.layer(options).pipe(Layer.orDie);
67
+ const apiKey = options.apiKey ?? process.env.EXPAND_API_KEY;
68
+ if (apiKey === undefined)
69
+ throw new Error('Missing Expand API key.');
70
+ const proxyAwareFetch = (input, init) => {
71
+ if (this.lifetime.signal.aborted) {
72
+ const reason = this.lifetime.signal.reason;
73
+ return Promise.reject(reason instanceof Error ? reason : new ExpandClientError('The Expand client is closed.'));
74
+ }
75
+ this.dispatcher ??= new Undici.EnvHttpProxyAgent();
76
+ const requestSignal = init?.signal === undefined && input instanceof Request ? input.signal : init?.signal;
77
+ const signal = AbortSignal.any([this.lifetime.signal, ...(requestSignal == null ? [] : [requestSignal])]);
78
+ const proxyInit = {
79
+ ...init,
80
+ signal,
81
+ dispatcher: this.dispatcher,
82
+ };
83
+ return globalThis.fetch(input, proxyInit);
84
+ };
85
+ const transport = {
86
+ apiKey,
87
+ baseUrl: options.baseUrl ?? 'https://api.expand.ai',
88
+ fetch: proxyAwareFetch,
89
+ timeoutMs: options.timeoutMs,
90
+ maxRetries: options.maxRetries,
91
+ signal: this.lifetime.signal,
92
+ };
93
+ this.crawls = makeCrawlsClient(transport);
94
+ this.projections = makeCrawlProjectionsClient(transport);
95
+ this.captures = this.projections.captures;
96
+ this.pages = this.projections.pages;
97
+ this.snapshots = new SnapshotService(options.baseUrl ?? 'https://api.expand.ai', (params, requestOptions) => this.run((client) => client.getSnapshot(params, requestOptions)));
98
+ }
99
+ /** Abort active requests and release this client's HTTP connections. Repeated calls are safe. */
100
+ close() {
101
+ if (!this.lifetime.signal.aborted)
102
+ this.lifetime.abort(new ExpandClientError('The Expand client is closed.'));
103
+ this.closePromise ??= Promise.all([...this.activeRequests, this.dispatcher?.destroy() ?? Promise.resolve()]).then(() => undefined);
104
+ return this.closePromise;
28
105
  }
29
106
  /**
30
107
  * Fetch a URL through the Expand API.
@@ -37,20 +114,11 @@ export class ExpandClient {
37
114
  async fetch(params, options = {}) {
38
115
  return this.run((client) => client.fetch(params, options));
39
116
  }
40
- /**
41
- * Fetch a URL through the object-mode endpoint.
42
- *
43
- * Returns `{ meta, markdown, json }`; use {@link fetch} for the raw markdown document.
44
- */
45
117
  async fetchJson(params, options = {}) {
118
+ if (typeof params === 'string')
119
+ return this.projections.fetchJson(params, options);
46
120
  return this.run((client) => client.fetchJson(params, options));
47
121
  }
48
- /**
49
- * Search a previous Fetch response by `snapshotId` without starting a new capture.
50
- */
51
- async fetchSearch(params, options = {}) {
52
- return this.run((client) => client.fetchSearch(params, options));
53
- }
54
122
  /**
55
123
  * Kick off an asynchronous batched fetch over one or more URLs. Returns a batched-run ID that can
56
124
  * be polled via {@link getBatched}.
@@ -85,11 +153,24 @@ export class ExpandClient {
85
153
  return this.run((client) => client.cancelBatched(id, options));
86
154
  }
87
155
  async run(body) {
88
- const exit = await Effect.runPromiseExit(InternalClient.use(body).pipe(Effect.provide(this.layer)));
89
- if (Exit.isSuccess(exit)) {
90
- return exit.value;
156
+ this.lifetime.signal.throwIfAborted();
157
+ const running = Effect.runPromiseExit(InternalClient.use(body).pipe(Effect.provide(this.layer)), {
158
+ signal: this.lifetime.signal,
159
+ });
160
+ this.activeRequests.add(running);
161
+ try {
162
+ const exit = await running;
163
+ this.lifetime.signal.throwIfAborted();
164
+ if (Exit.isSuccess(exit))
165
+ return exit.value;
166
+ throw InternalClient.translateCause(exit.cause);
167
+ }
168
+ finally {
169
+ this.activeRequests.delete(running);
91
170
  }
92
- throw InternalClient.translateCause(exit.cause);
93
171
  }
94
172
  }
173
+ /** Concise public name used by the Crawl API examples. */
174
+ export class Expand extends ExpandClient {
175
+ }
95
176
  //# sourceMappingURL=Client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAIN,kBAAkB,GAclB,MAAM,cAAc,CAAA;AAsBrB;;;;;;;;;;GAUG;AACH,MAAM,OAAO,YAAY;IACP,KAAK,CAA6B;IAEnD,YAAY,OAAO,GAAwB,EAAE;QAC5C,0FAA0F;QAC1F,iGAAiG;QACjG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAA;QAClC,CAAC;QACD,+FAA+F;QAC/F,+FAA+F;QAC/F,yFAAyF;QACzF,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CAAC,MAAmB,EAAE,OAAO,GAAwB,EAAE;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,MAAuB,EAAE,OAAO,GAA4B,EAAE;QAC7E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB,EAAE,OAAO,GAAmB,EAAE;QACxE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,CAAC,MAAqB,EAAE,OAAO,GAA0B,EAAE;QACvE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,OAAO,GAAsC,EAAE;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,OAAO,GAAmB,EAAE;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,IAAqD;QACzE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAA;QAClB,CAAC;QACD,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;CACD"}
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"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"}