@x12i/sdk 0.3.0 → 1.0.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 (48) hide show
  1. package/README.md +47 -0
  2. package/dist/admin-import.d.ts +6 -0
  3. package/dist/admin-import.js +127 -0
  4. package/dist/admin-import.js.map +1 -0
  5. package/dist/admin-mcp.d.ts +3 -0
  6. package/dist/admin-mcp.js +60 -0
  7. package/dist/admin-mcp.js.map +1 -0
  8. package/dist/admin.d.ts +63 -0
  9. package/dist/admin.js +259 -0
  10. package/dist/admin.js.map +1 -0
  11. package/dist/cli.d.ts +2 -0
  12. package/dist/cli.js +68 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/client.d.ts +74 -118
  15. package/dist/client.js +183 -379
  16. package/dist/client.js.map +1 -1
  17. package/dist/identity.d.ts +8 -0
  18. package/dist/identity.js +34 -0
  19. package/dist/identity.js.map +1 -0
  20. package/dist/index.d.ts +6 -20
  21. package/dist/index.js +6 -11
  22. package/dist/index.js.map +1 -1
  23. package/dist/init.d.ts +18 -0
  24. package/dist/init.js +147 -0
  25. package/dist/init.js.map +1 -0
  26. package/dist/maturity.d.ts +65 -0
  27. package/dist/maturity.js +138 -0
  28. package/dist/maturity.js.map +1 -0
  29. package/dist/mcp.d.ts +27 -0
  30. package/dist/mcp.js +168 -0
  31. package/dist/mcp.js.map +1 -0
  32. package/dist/protocol.d.ts +38 -0
  33. package/dist/protocol.js +168 -0
  34. package/dist/protocol.js.map +1 -0
  35. package/dist/rank.d.ts +19 -0
  36. package/dist/rank.js +82 -0
  37. package/dist/rank.js.map +1 -0
  38. package/dist/runner.d.ts +22 -0
  39. package/dist/runner.js +99 -0
  40. package/dist/runner.js.map +1 -0
  41. package/package.json +66 -60
  42. package/LICENSE +0 -21
  43. package/dist/client.d.ts.map +0 -1
  44. package/dist/index.d.ts.map +0 -1
  45. package/dist/registry.d.ts +0 -8
  46. package/dist/registry.d.ts.map +0 -1
  47. package/dist/registry.js +0 -21
  48. package/dist/registry.js.map +0 -1
package/dist/client.js CHANGED
@@ -1,416 +1,220 @@
1
- import { fetchUrl, launchBrowser, retrieve, retrieveBatch, retrieveWithCache, checkChanges, InMemoryFetchCache, InMemorySnapshotStore, } from "@x12i/fetcher";
2
- import { ingestRepository } from "@x12i/ingest";
3
- import { createSerperProvider, loadSearchConfig, search as runSearch, } from "@x12i/search";
4
- import { crawl } from "@x12i/crawl";
5
- import { research } from "@x12i/research";
6
- import { extract, } from "@x12i/extract";
7
- import { InMemoryRunStore, } from "@x12i/runs";
8
- import { createHash } from "node:crypto";
9
- import { createDefaultRegistry } from "./registry.js";
10
- function requestHash(value) {
11
- return createHash("sha256").update(JSON.stringify(value)).digest("hex").slice(0, 24);
12
- }
13
- /**
14
- * Per-site fetch defaults so client-rendered pages actually populate before
15
- * we snapshot HTML. Caller-supplied options still win (spread after this).
16
- */
17
- function siteFetchDefaults(url) {
18
- try {
19
- const parsed = new URL(url);
20
- const host = parsed.hostname;
21
- const path = parsed.pathname;
22
- if ((host === "openrouter.ai" || host.endsWith(".openrouter.ai")) &&
23
- (path === "/rankings" || path.startsWith("/rankings/"))) {
24
- return {
25
- waitForSelector: "div.grid.grid-cols-12.items-center",
26
- settleMs: 500,
27
- };
28
- }
29
- if ((host === "linkedin.com" || host === "www.linkedin.com" || host.endsWith(".linkedin.com")) &&
30
- path.startsWith("/company/")) {
31
- return { waitForSelector: "h1", settleMs: 1000 };
32
- }
33
- if (host === "medium.com" ||
34
- host.endsWith(".medium.com") ||
35
- host === "towardsdatascience.com") {
36
- return { waitForSelector: "article h1, h1", settleMs: 800 };
37
- }
38
- if (host === "g2.com" || host === "www.g2.com" || host.endsWith(".g2.com")) {
39
- return { settleMs: 1500 };
40
- }
1
+ import { createRequire } from "node:module";
2
+ import { getReadme, searchPackages } from "@x12i/npm-core";
3
+ import { loadOrCreateIdentity, saveIdentity, defaultIdentityPath } from "./identity.js";
4
+ import { rankPackages } from "./rank.js";
5
+ import { canonicalRequest, randomNonce, reviewRating, sign, solveWork, usageFields, } from "./protocol.js";
6
+ const require = createRequire(import.meta.url);
7
+ export const SDK_VERSION = require("../package.json").version;
8
+ /** Catalog service. Override with X12I_SDK_URL. */
9
+ export const DEFAULT_SERVICE_URL = "https://x12i-sdk.x12i.com";
10
+ export class SdkError extends Error {
11
+ status;
12
+ code;
13
+ constructor(message, status = 0, code = "REQUEST_FAILED") {
14
+ super(message);
15
+ this.status = status;
16
+ this.code = code;
17
+ this.name = "SdkError";
41
18
  }
42
- catch {
43
- // ignore unparseable URLs
44
- }
45
- return {};
46
19
  }
47
- /**
48
- * Canonical programmatic surface: fetch/retrieve/research/crawl/extract/runs.
49
- * CLI, REST, and MCP are thin adapters around this client.
50
- */
51
- export class WebAgentClient {
52
- registry;
53
- defaultFetchOptions;
54
- reuseBrowser;
55
- searchProvider;
56
- browserPromise;
57
- fetchCache;
58
- snapshotStore;
59
- runStore;
60
- extractionAdapter;
61
- ownsCache;
62
- ownsSnapshots;
63
- ownsRuns;
20
+ export class X12iClient {
21
+ baseUrl;
22
+ identityPath;
23
+ fetchImpl;
64
24
  constructor(options = {}) {
65
- this.registry = options.registry ?? createDefaultRegistry();
66
- this.defaultFetchOptions = options.fetchOptions ?? {};
67
- this.reuseBrowser = options.reuseBrowser ?? false;
68
- this.searchProvider = resolveSearchProvider(options.search);
69
- this.ownsCache = !options.fetchCache;
70
- this.ownsSnapshots = !options.snapshotStore;
71
- this.ownsRuns = !options.runStore;
72
- this.fetchCache = options.fetchCache ?? new InMemoryFetchCache();
73
- this.snapshotStore = options.snapshotStore ?? new InMemorySnapshotStore();
74
- this.runStore = options.runStore ?? new InMemoryRunStore();
75
- this.extractionAdapter = options.extractionAdapter;
76
- }
77
- use(parser) {
78
- this.registry.register(parser);
79
- return this;
80
- }
81
- /** Download a URL via Playwright (compatibility default: browser strategy). */
82
- async fetch(url, options = {}) {
83
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
84
- return fetchUrl(url, {
85
- ...this.defaultFetchOptions,
86
- ...siteFetchDefaults(url),
87
- ...options,
88
- browser: browser ?? options.browser,
89
- });
90
- }
91
- /** Strategy-aware multi-format retrieval (default strategy: auto). */
92
- async retrieve(url, options = {}) {
93
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
94
- return retrieve(url, {
95
- ...this.defaultFetchOptions,
96
- ...siteFetchDefaults(url),
97
- strategy: "auto",
98
- ...options,
99
- browser: browser ?? options.browser,
100
- });
25
+ this.baseUrl = (options.baseUrl ?? process.env.X12I_SDK_URL ?? DEFAULT_SERVICE_URL).replace(/\/$/, "");
26
+ this.identityPath = options.identityPath ?? defaultIdentityPath();
27
+ this.fetchImpl = options.fetch ?? fetch;
101
28
  }
102
- async fetchBatch(request) {
103
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
104
- return retrieveBatch({
105
- ...request,
106
- retrieveOptions: {
107
- ...this.defaultFetchOptions,
108
- strategy: "auto",
109
- ...request.retrieveOptions,
110
- browser: browser ?? request.retrieveOptions?.browser,
111
- },
112
- });
113
- }
114
- async retrieveCached(url, options = {}) {
115
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
116
- return retrieveWithCache(url, {
117
- ...this.defaultFetchOptions,
118
- ...siteFetchDefaults(url),
119
- strategy: "auto",
120
- cache: this.fetchCache,
121
- ...options,
122
- browser: browser ?? options.browser,
123
- });
124
- }
125
- async classify(url, options = {}) {
126
- const fetched = await this.fetch(url, options);
127
- return this.registry.classify(fetched);
29
+ async search(task) {
30
+ try {
31
+ const body = await this.send("POST", "/v1/recommend", JSON.stringify({ task }), { "content-type": "application/json" });
32
+ const parsed = body;
33
+ return { source: "service", ranked: parsed.ranked === true, task, results: parsed.results ?? [] };
34
+ }
35
+ catch (error) {
36
+ if (error instanceof SdkError && error.status >= 400 && error.status < 500)
37
+ throw error;
38
+ const found = await searchPackages(task, { scope: "@x12i/", size: 20, fetch: this.fetchImpl });
39
+ const results = rankPackages(task, found.map((pkg) => ({ name: pkg.name, description: pkg.description, keywords: pkg.keywords })));
40
+ return { source: "registry", ranked: results.some((item) => item.confidence === "high"), task, results };
41
+ }
128
42
  }
129
- async parse(url, options = {}) {
130
- const fetched = await this.fetch(url, options);
131
- return this.registry.parse(fetched);
43
+ catalog(cursor, limit = 50) {
44
+ const query = new URLSearchParams();
45
+ if (cursor)
46
+ query.set("cursor", cursor);
47
+ query.set("limit", String(limit));
48
+ return this.send("GET", `/v1/catalog?${query}`);
132
49
  }
133
- async parseAs(type, url, options = {}) {
134
- const fetched = await this.fetch(url, options);
135
- return this.registry.parseAs(type, fetched);
50
+ package(name) {
51
+ return this.readThrough(packagePath(name), name);
136
52
  }
137
- listParsers() {
138
- return this.registry.list();
53
+ readme(name) {
54
+ return this.readThrough(`${packagePath(name)}/readme`, name);
139
55
  }
140
- ingest(rootUrl, options = {}) {
141
- return ingestRepository(rootUrl, options);
56
+ reviews(name) {
57
+ return this.send("GET", `${packagePath(name)}/reviews`);
142
58
  }
143
- search(request, options = {}) {
144
- return runSearch(request, {
145
- provider: this.searchProvider ?? null,
146
- signal: options.signal,
147
- });
59
+ async report(input) {
60
+ const fields = usageFields(input);
61
+ const identity = await this.ensureEnrolled();
62
+ return this.signedPost("/v1/reports", { ...fields, sdkVersion: SDK_VERSION }, identity);
148
63
  }
149
- searchConfigured() {
150
- return this.searchProvider !== undefined;
64
+ async review(input) {
65
+ const fields = usageFields(input);
66
+ const rating = reviewRating(input.rating);
67
+ const identity = await this.ensureEnrolled();
68
+ return this.signedPost("/v1/reviews", { ...fields, rating, sdkVersion: SDK_VERSION }, identity);
151
69
  }
152
- async fetchSearchResults(searchResult, options = {}) {
153
- const targets = resolveFetchTargets(searchResult, options);
154
- const concurrency = Math.max(1, options.concurrency ?? 2);
155
- const continueOnError = options.continueOnError !== false;
156
- const pages = [];
157
- for (let i = 0; i < targets.length; i += concurrency) {
158
- if (options.signal?.aborted)
159
- break;
160
- const batch = targets.slice(i, i + concurrency);
161
- const settled = await Promise.all(batch.map(async (t) => {
162
- try {
163
- const fetched = await this.fetch(t.url, {
164
- ...options.fetchOptions,
165
- });
166
- return {
167
- position: t.position,
168
- url: t.url,
169
- title: fetched.title ?? t.title,
170
- fetch: fetched,
171
- };
172
- }
173
- catch (err) {
174
- const error = err instanceof Error ? err.message : String(err);
175
- if (!continueOnError)
176
- throw err;
177
- return { position: t.position, url: t.url, title: t.title, error };
178
- }
179
- }));
180
- pages.push(...settled);
70
+ async status() {
71
+ let identity;
72
+ try {
73
+ identity = await loadOrCreateIdentity(this.identityPath);
181
74
  }
182
- return pages;
183
- }
184
- async searchAndFetch(request) {
185
- const { top, positions, urls, concurrency, continueOnError, fetchOptions, signal, ...searchRequest } = request;
186
- const searchResult = await this.search(searchRequest, { signal });
187
- const pages = await this.fetchSearchResults(searchResult, {
188
- positions: positions ?? (urls ? undefined : range(1, top ?? 3)),
189
- urls,
190
- concurrency,
191
- continueOnError,
192
- fetchOptions,
193
- signal,
194
- });
195
- return { search: searchResult, pages };
196
- }
197
- async research(request, options = {}) {
198
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
199
- const deps = {
200
- searchFn: (req, opts) => this.search(req, opts),
201
- retrieveFn: (url, ropts) => retrieve(url, {
202
- ...this.defaultFetchOptions,
203
- strategy: "auto",
204
- ...ropts,
205
- browser,
206
- }),
207
- registry: this.registry,
208
- signal: options.signal,
209
- };
210
- return research(request, deps);
211
- }
212
- async startResearch(request, opts) {
213
- const run = await this.runStore.create({
214
- type: "research",
215
- request,
216
- requestHash: requestHash(request),
217
- idempotencyKey: opts?.idempotencyKey,
218
- });
219
- void this.runResearchJob(run.id, request);
220
- return run;
221
- }
222
- async runResearchJob(runId, request) {
223
- await this.runStore.update(runId, { status: "planning" });
224
- await this.runStore.update(runId, { status: "running", phase: "research" });
75
+ catch {
76
+ identity = undefined;
77
+ }
78
+ let service;
225
79
  try {
226
- const packet = await this.research(request);
227
- const status = packet.status === "completed"
228
- ? "completed"
229
- : packet.status === "failed"
230
- ? "failed"
231
- : packet.status === "cancelled"
232
- ? "cancelled"
233
- : packet.status === "partial"
234
- ? "partial"
235
- : "completed_with_errors";
236
- await this.runStore.update(runId, { status });
237
- await this.runStore.appendItem?.(runId, {
238
- kind: "packet",
239
- data: packet,
240
- });
80
+ service = await this.send("GET", "/v1/status");
241
81
  }
242
- catch (err) {
243
- await this.runStore.update(runId, {
244
- status: "failed",
245
- errors: [
246
- {
247
- code: "PARSER_FAILED",
248
- message: err instanceof Error ? err.message : String(err),
249
- phase: "export",
250
- retryable: false,
251
- },
252
- ],
253
- });
82
+ catch (error) {
83
+ service = { ok: false, error: error instanceof Error ? error.message : String(error) };
254
84
  }
85
+ return {
86
+ sdkVersion: SDK_VERSION,
87
+ serviceUrl: this.baseUrl,
88
+ identity: identity ? { fingerprint: identity.fingerprint, enrolled: identity.enrolledService === this.baseUrl } : null,
89
+ service,
90
+ };
255
91
  }
256
- async crawl(request, options = {}) {
257
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
258
- return crawl(request, {
259
- retrieve: (url, ropts) => retrieve(url, {
260
- ...this.defaultFetchOptions,
261
- strategy: "auto",
262
- includeLinks: true,
263
- ...ropts,
264
- browser,
265
- }),
266
- signal: options.signal,
92
+ async ensureEnrolled() {
93
+ const identity = await loadOrCreateIdentity(this.identityPath);
94
+ if (identity.enrolledService === this.baseUrl)
95
+ return identity;
96
+ const challenge = await this.send("POST", "/v1/enrollment/challenges", JSON.stringify({ publicKey: identity.publicKey }), {
97
+ "content-type": "application/json",
267
98
  });
268
- }
269
- async startCrawl(request, opts) {
270
- const run = await this.runStore.create({
271
- type: "crawl",
272
- request,
273
- requestHash: requestHash(request),
274
- idempotencyKey: opts?.idempotencyKey,
99
+ const work = await solveWork(challenge.challenge, challenge.workBits ?? 0);
100
+ await this.signedPost("/v1/installs/enroll", { challenge: challenge.challenge, work }, identity);
101
+ identity.enrolledService = this.baseUrl;
102
+ await saveIdentity(this.identityPath, identity);
103
+ return identity;
104
+ }
105
+ async signedPost(path, payload, identity) {
106
+ const body = JSON.stringify(payload);
107
+ const timestamp = String(Date.now());
108
+ const nonce = randomNonce();
109
+ const message = await canonicalRequest("POST", path, timestamp, nonce, body);
110
+ const signature = await sign(identity.privateKey, message);
111
+ return this.send("POST", path, body, {
112
+ "content-type": "application/json",
113
+ "x-x12i-key": identity.publicKey,
114
+ "x-x12i-timestamp": timestamp,
115
+ "x-x12i-nonce": nonce,
116
+ "x-x12i-signature": signature,
275
117
  });
276
- void this.runCrawlJob(run.id, request);
277
- return run;
278
118
  }
279
- async runCrawlJob(runId, request) {
280
- await this.runStore.update(runId, { status: "running", phase: "crawl" });
119
+ async readThrough(path, name) {
120
+ let cachedBody;
281
121
  try {
282
- const result = await this.crawl(request);
283
- await this.runStore.update(runId, {
284
- status: result.terminationReason === "cancelled" ? "cancelled" : "completed",
285
- usage: {
286
- pagesFetched: result.usage.pagesFetched,
287
- bytesFetched: result.usage.bytesFetched,
288
- },
289
- });
290
- await this.runStore.appendItem?.(runId, {
291
- kind: "crawl_result",
292
- data: result,
293
- });
122
+ cachedBody = await this.send("GET", path);
294
123
  }
295
- catch (err) {
296
- await this.runStore.update(runId, {
297
- status: "failed",
298
- errors: [
299
- {
300
- code: "PARSER_FAILED",
301
- message: err instanceof Error ? err.message : String(err),
302
- phase: "crawl",
303
- retryable: false,
304
- },
305
- ],
306
- });
124
+ catch (error) {
125
+ if (error instanceof SdkError && error.status >= 400 && error.status < 500)
126
+ throw error;
127
+ return this.readmeFromRegistry(name);
307
128
  }
308
- }
309
- async extract(request) {
310
- const browser = this.reuseBrowser ? await this.getBrowser() : undefined;
311
- return extract(request, {
312
- registry: this.registry,
313
- adapter: this.extractionAdapter,
314
- retrieveFn: (url, opts) => retrieve(url, {
315
- ...this.defaultFetchOptions,
316
- strategy: "auto",
317
- ...opts,
318
- browser,
319
- }),
320
- });
321
- }
322
- async checkChanges(request) {
323
- let current = request.current;
324
- if (!current && request.url) {
325
- current = await this.retrieve(request.url, { strategy: "auto" });
326
- if (current.canonicalUrl) {
327
- await this.snapshotStore.put({
328
- canonicalUrl: current.canonicalUrl,
329
- markdown: current.markdown,
330
- rawContentHash: current.rawContentHash,
331
- normalizedContentHash: current.normalizedContentHash,
332
- });
333
- }
129
+ const cached = snapshotPackage(cachedBody);
130
+ if (cached.readmeStatus === "fresh")
131
+ return packageView(cachedBody, cached, false, "service");
132
+ try {
133
+ const freshBody = await this.send("GET", `${path}?update=1`);
134
+ const fresh = snapshotPackage(freshBody);
135
+ const updated = fresh.readme !== cached.readme || fresh.version !== cached.version || fresh.description !== cached.description;
136
+ return packageView(freshBody, cached, updated, "service");
334
137
  }
335
- let previousSnapshot = request.previousSnapshot;
336
- if (!previousSnapshot && !request.previous && current?.canonicalUrl) {
337
- previousSnapshot = await this.snapshotStore.latestForUrl(current.canonicalUrl);
138
+ catch (error) {
139
+ return { ...packageView(cachedBody, cached, false, "service"), refreshError: error instanceof Error ? error.message : String(error) };
338
140
  }
339
- return checkChanges({ ...request, current, previousSnapshot });
340
- }
341
- getRun(runId) {
342
- return this.runStore.get(runId);
343
- }
344
- listRunItems(runId, options) {
345
- return this.runStore.listItems(runId, options);
346
141
  }
347
- cancelRun(runId) {
348
- return this.runStore.requestCancel(runId);
142
+ async readmeFromRegistry(name) {
143
+ const info = await getReadme(name, { fetch: this.fetchImpl });
144
+ const cached = { readme: "", readmeStatus: "missing", version: null, description: "", modifiedAt: null, refreshedAt: null };
145
+ return {
146
+ name: info.name,
147
+ readme: info.readme,
148
+ readmeStatus: "fresh",
149
+ version: info.version,
150
+ description: info.description,
151
+ modifiedAt: info.modifiedAt,
152
+ refreshedAt: null,
153
+ updated: Boolean(info.readme),
154
+ source: "registry",
155
+ cached,
156
+ detail: { ...info },
157
+ };
349
158
  }
350
- async resumeRun(runId) {
351
- const run = await this.runStore.get(runId);
352
- if (!run)
353
- throw new Error("RUN_NOT_FOUND");
354
- if (!["partial", "cancelled", "failed"].includes(run.status)) {
355
- throw new Error("RUN_NOT_RESUMABLE");
356
- }
357
- await this.runStore.update(runId, { status: "queued", cancellationRequested: false });
358
- if (run.type === "research") {
359
- void this.runResearchJob(runId, run.request);
159
+ async send(method, path, body, headers = {}) {
160
+ let response;
161
+ try {
162
+ response = await this.fetchImpl(`${this.baseUrl}${path}`, { method, headers, body });
360
163
  }
361
- else if (run.type === "crawl") {
362
- void this.runCrawlJob(runId, run.request);
164
+ catch (error) {
165
+ throw new SdkError(error instanceof Error ? error.message : "Service unreachable");
363
166
  }
364
- return (await this.runStore.get(runId));
365
- }
366
- async getBrowser() {
367
- this.browserPromise ??= launchBrowser(this.defaultFetchOptions.executablePath);
368
- return this.browserPromise;
369
- }
370
- async close() {
371
- if (this.browserPromise) {
372
- const browser = await this.browserPromise;
373
- await browser.close();
374
- this.browserPromise = undefined;
167
+ const text = await response.text();
168
+ const parsed = text ? safeJson(text) : {};
169
+ if (!response.ok) {
170
+ const record = parsed;
171
+ throw new SdkError(record.error?.message ?? `Service returned ${response.status}`, response.status, record.error?.code ?? "HTTP");
375
172
  }
376
- void this.ownsCache;
377
- void this.ownsSnapshots;
378
- void this.ownsRuns;
173
+ return parsed;
379
174
  }
380
175
  }
381
- function resolveSearchProvider(search) {
382
- if (search === null)
383
- return undefined;
384
- if (!search) {
385
- return createSerperProvider(loadSearchConfig());
386
- }
387
- if ("search" in search && typeof search.search === "function") {
388
- return search;
176
+ function snapshotPackage(body) {
177
+ const status = body.readmeStatus;
178
+ return {
179
+ readme: typeof body.readme === "string" ? body.readme : "",
180
+ readmeStatus: status === "fresh" || status === "stale" || status === "missing" ? status : "missing",
181
+ version: typeof body.version === "string" ? body.version : null,
182
+ description: typeof body.description === "string" ? body.description : "",
183
+ modifiedAt: typeof body.modifiedAt === "string" ? body.modifiedAt : null,
184
+ refreshedAt: typeof body.refreshedAt === "string" ? body.refreshedAt : null,
185
+ };
186
+ }
187
+ function packageView(body, cached, updated, source) {
188
+ const current = updated || cached.readmeStatus !== "fresh" ? snapshotPackage(body) : cached;
189
+ const name = typeof body.name === "string" ? body.name : "";
190
+ return {
191
+ name,
192
+ readme: current.readme,
193
+ readmeStatus: current.readmeStatus,
194
+ version: current.version,
195
+ description: current.description,
196
+ modifiedAt: current.modifiedAt,
197
+ refreshedAt: current.refreshedAt,
198
+ updated,
199
+ source,
200
+ cached,
201
+ detail: body,
202
+ };
203
+ }
204
+ function packagePath(name) {
205
+ if (name.startsWith("@")) {
206
+ const slash = name.indexOf("/");
207
+ if (slash > 1)
208
+ return `/v1/packages/${encodeURIComponent(name.slice(0, slash))}/${encodeURIComponent(name.slice(slash + 1))}`;
389
209
  }
390
- return createSerperProvider(search);
210
+ return `/v1/packages/${encodeURIComponent(name)}`;
391
211
  }
392
- function resolveFetchTargets(searchResult, options) {
393
- if (options.urls?.length) {
394
- return options.urls.map((url) => {
395
- const match = searchResult.organic.find((o) => o.url === url);
396
- return { url, position: match?.position, title: match?.title };
397
- });
212
+ function safeJson(text) {
213
+ try {
214
+ return JSON.parse(text);
398
215
  }
399
- const positions = options.positions?.length
400
- ? options.positions
401
- : searchResult.organic.map((o) => o.position);
402
- const out = [];
403
- for (const pos of positions) {
404
- const hit = searchResult.organic.find((o) => o.position === pos);
405
- if (hit)
406
- out.push({ url: hit.url, position: hit.position, title: hit.title });
216
+ catch {
217
+ return { text };
407
218
  }
408
- return out;
409
- }
410
- function range(start, endInclusive) {
411
- const out = [];
412
- for (let i = start; i <= endInclusive; i++)
413
- out.push(i);
414
- return out;
415
219
  }
416
220
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}