builtwith-api 1.0.8 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,469 @@
1
+ // src/config.ts
2
+ var VALID_RESPONSE_TYPES = {
3
+ XML: "xml",
4
+ JSON: "json",
5
+ TXT: "txt",
6
+ CSV: "csv",
7
+ TSV: "tsv"
8
+ };
9
+
10
+ // src/schemas.ts
11
+ import { z } from "zod/v4";
12
+ var ResponseFormatSchema = z.enum(["xml", "json", "txt", "csv", "tsv"]);
13
+ var ClientOptionsSchema = z.strictObject({
14
+ responseFormat: ResponseFormatSchema.optional()
15
+ });
16
+ var dateRangePattern = /^\d{4}-\d{2}-\d{2}(-\d{4}-\d{2}-\d{2})?$/;
17
+ var DomainParamsSchema = z.strictObject({
18
+ hideAll: z.boolean().optional(),
19
+ hideDescriptionAndLinks: z.boolean().optional(),
20
+ onlyLiveTechnologies: z.boolean().optional(),
21
+ noMetaData: z.boolean().optional(),
22
+ noAttributeData: z.boolean().optional(),
23
+ noPII: z.boolean().optional(),
24
+ firstDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD").optional(),
25
+ lastDetectedRange: z.string().regex(dateRangePattern, "Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD").optional()
26
+ });
27
+ var ListsParamsSchema = z.strictObject({
28
+ includeMetaData: z.boolean().optional(),
29
+ offset: z.string().optional(),
30
+ since: z.string().optional()
31
+ });
32
+ var TrendsParamsSchema = z.strictObject({
33
+ date: z.string().optional()
34
+ });
35
+ var CompanyToUrlParamsSchema = z.strictObject({
36
+ tld: z.string().optional(),
37
+ amount: z.number().optional()
38
+ });
39
+ var TrustParamsSchema = z.strictObject({
40
+ words: z.string().optional(),
41
+ live: z.boolean().optional()
42
+ });
43
+ var SingleLookupSchema = z.string().min(1);
44
+ var MultiLookupSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1).max(16)]);
45
+ var FreeResponseSchema = z.strictObject({
46
+ domain: z.string(),
47
+ first: z.number(),
48
+ last: z.number(),
49
+ groups: z.array(z.strictObject({
50
+ name: z.string(),
51
+ live: z.number(),
52
+ dead: z.number(),
53
+ latest: z.number(),
54
+ oldest: z.number(),
55
+ categories: z.array(z.strictObject({
56
+ live: z.number(),
57
+ dead: z.number(),
58
+ latest: z.number(),
59
+ oldest: z.number(),
60
+ name: z.string()
61
+ }))
62
+ }))
63
+ });
64
+ var TechnologySchema = z.strictObject({
65
+ Name: z.string(),
66
+ Description: z.string(),
67
+ Link: z.string(),
68
+ Parent: z.string().optional(),
69
+ Tag: z.string(),
70
+ FirstDetected: z.number(),
71
+ LastDetected: z.number(),
72
+ IsPremium: z.string(),
73
+ Categories: z.array(z.string()).optional()
74
+ });
75
+ var PathSchema = z.strictObject({
76
+ Technologies: z.array(TechnologySchema),
77
+ FirstIndexed: z.number(),
78
+ LastIndexed: z.number(),
79
+ Domain: z.string(),
80
+ Url: z.string(),
81
+ SubDomain: z.string()
82
+ });
83
+ var MetaSchema = z.strictObject({
84
+ Majestic: z.number(),
85
+ Vertical: z.string(),
86
+ Social: z.array(z.string()),
87
+ CompanyName: z.string(),
88
+ Telephones: z.array(z.string()),
89
+ Emails: z.array(z.string()),
90
+ City: z.string(),
91
+ State: z.string(),
92
+ Postcode: z.string(),
93
+ Country: z.string(),
94
+ Names: z.array(z.strictObject({
95
+ Name: z.string(),
96
+ Type: z.number(),
97
+ Level: z.string(),
98
+ Email: z.string()
99
+ })),
100
+ ARank: z.number(),
101
+ QRank: z.number()
102
+ });
103
+ var AttributesSchema = z.strictObject({
104
+ MJRank: z.number(),
105
+ MJTLDRank: z.number(),
106
+ RefSN: z.number(),
107
+ RefIP: z.number(),
108
+ Sitemap: z.number(),
109
+ GTMTags: z.number(),
110
+ QubitTags: z.number(),
111
+ TealiumTags: z.number(),
112
+ AdobeTags: z.number(),
113
+ CDimensions: z.number(),
114
+ CGoals: z.number(),
115
+ CMetrics: z.number()
116
+ });
117
+ var DomainResponseSchema = z.strictObject({
118
+ Results: z.array(z.strictObject({
119
+ Result: z.strictObject({
120
+ SpendHistory: z.array(z.strictObject({
121
+ D: z.number(),
122
+ S: z.number()
123
+ })),
124
+ IsDB: z.string(),
125
+ Spend: z.number(),
126
+ Paths: z.array(PathSchema)
127
+ }),
128
+ Meta: MetaSchema,
129
+ Attributes: AttributesSchema,
130
+ FirstIndexed: z.number(),
131
+ LastIndexed: z.number(),
132
+ Lookup: z.string(),
133
+ SalesRevenue: z.number()
134
+ })),
135
+ Errors: z.array(z.string())
136
+ });
137
+ var ListsResponseSchema = z.strictObject({
138
+ NextOffset: z.string(),
139
+ Results: z.array(z.strictObject({
140
+ D: z.string(),
141
+ FI: z.number().optional(),
142
+ LI: z.number().optional(),
143
+ LOS: z.array(z.string()).optional(),
144
+ Q: z.number().optional(),
145
+ A: z.number().optional(),
146
+ U: z.number().optional(),
147
+ M: z.number().optional(),
148
+ SKU: z.number().optional(),
149
+ F: z.number().optional(),
150
+ E: z.number().optional(),
151
+ FD: z.number().optional(),
152
+ LD: z.number().optional(),
153
+ S: z.number().optional(),
154
+ R: z.number().optional(),
155
+ Country: z.string().optional()
156
+ }))
157
+ });
158
+ var RelationshipsResponseSchema = z.strictObject({
159
+ Relationships: z.array(z.strictObject({
160
+ Domain: z.string(),
161
+ Identifiers: z.array(z.strictObject({
162
+ Value: z.string(),
163
+ Type: z.string(),
164
+ First: z.number(),
165
+ Last: z.number(),
166
+ Matches: z.array(z.strictObject({
167
+ Domain: z.string(),
168
+ First: z.number(),
169
+ Last: z.number(),
170
+ Overlap: z.boolean()
171
+ }))
172
+ }))
173
+ })),
174
+ Errors: z.array(z.string()),
175
+ results: z.number(),
176
+ max_per_page: z.number(),
177
+ next_skip: z.number(),
178
+ more_results: z.boolean()
179
+ });
180
+ var KeywordsResponseSchema = z.strictObject({
181
+ Keywords: z.array(z.strictObject({
182
+ Domain: z.string(),
183
+ Keywords: z.array(z.string())
184
+ }))
185
+ });
186
+ var TrendsResponseSchema = z.strictObject({
187
+ Tech: z.strictObject({
188
+ icon: z.string(),
189
+ categories: z.array(z.string()),
190
+ tag: z.string(),
191
+ is_premium: z.string(),
192
+ name: z.string(),
193
+ description: z.string(),
194
+ link: z.string(),
195
+ trends_link: z.string(),
196
+ coverage: z.strictObject({
197
+ ten_k: z.number(),
198
+ hundred_k: z.number(),
199
+ milly: z.number(),
200
+ live: z.number(),
201
+ expired: z.number()
202
+ })
203
+ })
204
+ });
205
+ var CompanyToUrlResponseSchema = z.array(z.strictObject({
206
+ Domain: z.string(),
207
+ CompanyName: z.string(),
208
+ Spend: z.number(),
209
+ PageRank: z.number(),
210
+ BuiltWithRank: z.number(),
211
+ Parked: z.boolean(),
212
+ Country: z.string(),
213
+ State: z.string(),
214
+ Postcode: z.string(),
215
+ City: z.string(),
216
+ Socials: z.array(z.string())
217
+ }));
218
+ var TrustResponseSchema = z.strictObject({
219
+ Domain: z.string(),
220
+ DBRecord: z.strictObject({
221
+ EarliestRecord: z.number(),
222
+ LatestUpdate: z.number(),
223
+ PremiumTechs: z.number(),
224
+ LiveTechs: z.boolean(),
225
+ AffiliateLinks: z.boolean(),
226
+ PaymentOptions: z.boolean(),
227
+ Ecommerce: z.boolean(),
228
+ Parked: z.boolean(),
229
+ Spend: z.number(),
230
+ Established: z.boolean(),
231
+ DBIndexed: z.boolean()
232
+ }),
233
+ LiveRecord: z.object({}).passthrough().nullable(),
234
+ Status: z.number()
235
+ });
236
+ var TagsResponseSchema = z.array(z.strictObject({
237
+ Value: z.string(),
238
+ Matches: z.array(z.strictObject({
239
+ Domain: z.string(),
240
+ First: z.string(),
241
+ Last: z.string()
242
+ }))
243
+ }));
244
+ var RecommendationsResponseSchema = z.array(z.strictObject({
245
+ Domain: z.string(),
246
+ Compiled: z.string(),
247
+ Recommendations: z.array(z.strictObject({
248
+ link: z.string(),
249
+ name: z.string(),
250
+ tag: z.string(),
251
+ categories: z.array(z.string()),
252
+ stars: z.number(),
253
+ match: z.number()
254
+ }))
255
+ }));
256
+ var RedirectsResponseSchema = z.strictObject({
257
+ Lookup: z.string(),
258
+ Inbound: z.array(z.strictObject({
259
+ Domain: z.string(),
260
+ FirstDetected: z.string(),
261
+ LastDetected: z.string()
262
+ })),
263
+ Outbound: z.array(z.strictObject({
264
+ Domain: z.string(),
265
+ FirstDetected: z.string(),
266
+ LastDetected: z.string()
267
+ }))
268
+ });
269
+ var ProductResponseSchema = z.strictObject({
270
+ query: z.string(),
271
+ is_more: z.boolean(),
272
+ page: z.number(),
273
+ limit: z.number(),
274
+ results: z.number(),
275
+ shop_count: z.number(),
276
+ credits: z.number(),
277
+ used: z.number(),
278
+ remaining: z.number(),
279
+ used_this_query: z.number(),
280
+ next_page: z.string(),
281
+ shops: z.array(z.strictObject({
282
+ Domain: z.string(),
283
+ Products: z.array(z.strictObject({
284
+ Title: z.string(),
285
+ Url: z.string(),
286
+ Indexed: z.string(),
287
+ FirstIndexed: z.string(),
288
+ Price: z.number()
289
+ })),
290
+ Type: z.number(),
291
+ Spend: z.number()
292
+ }))
293
+ });
294
+
295
+ // src/params.ts
296
+ var toQueryString = (params) => Object.entries(params).filter((entry) => entry[1] !== undefined).map(([k, v]) => `${k}=${encodeURIComponent(v).replace(/%2C/gi, ",")}`).join("&");
297
+ var booleanFlag = (value) => value ? "yes" : undefined;
298
+ var booleanParams = (params, mapping) => Object.fromEntries(Object.entries(mapping).map(([jsKey, apiKey]) => [apiKey, booleanFlag(params?.[jsKey])]));
299
+ var cleanWords = (words) => words ? words.split(",").map((w) => w.trim()).join(",") : undefined;
300
+ var buildURL = (apiKey, format, path, params, subdomain = "api") => {
301
+ const base = `https://${subdomain}.builtwith.com/${path}/api.${format}?KEY=${apiKey}`;
302
+ const qs = toQueryString(params);
303
+ return qs ? `${base}&${qs}` : base;
304
+ };
305
+ var validateLookup = (url, { multi = false } = {}) => {
306
+ if (multi) {
307
+ MultiLookupSchema.parse(url);
308
+ } else {
309
+ SingleLookupSchema.parse(url);
310
+ }
311
+ if (Array.isArray(url)) {
312
+ if (!multi)
313
+ throw new Error("API does not allow for multi-domain LOOKUP");
314
+ if (url.length > 16)
315
+ throw new Error("Domain LOOKUP size too big (16 max)");
316
+ }
317
+ };
318
+
319
+ // src/request.ts
320
+ var TEXT_FORMATS = [
321
+ VALID_RESPONSE_TYPES.TXT,
322
+ VALID_RESPONSE_TYPES.XML,
323
+ VALID_RESPONSE_TYPES.CSV,
324
+ VALID_RESPONSE_TYPES.TSV
325
+ ];
326
+ var request = async (url, format, schema) => {
327
+ const res = await fetch(url);
328
+ if (!res.ok) {
329
+ const body = await res.text();
330
+ throw new Error(`BuiltWith API error ${res.status}: ${body}`);
331
+ }
332
+ if (TEXT_FORMATS.includes(format)) {
333
+ return res.text();
334
+ }
335
+ const data = await res.json();
336
+ return schema.parse(data);
337
+ };
338
+ var requestSafe = async (url, format, schema) => {
339
+ const res = await fetch(url);
340
+ if (!res.ok) {
341
+ const body = await res.text();
342
+ throw new Error(`BuiltWith API error ${res.status}: ${body}`);
343
+ }
344
+ if (TEXT_FORMATS.includes(format)) {
345
+ return res.text();
346
+ }
347
+ const raw = await res.text();
348
+ let data;
349
+ try {
350
+ data = JSON.parse(raw);
351
+ } catch {
352
+ console.warn("BuiltWith sent an invalid JSON payload. Falling back to text parsing.");
353
+ return raw;
354
+ }
355
+ return schema.parse(data);
356
+ };
357
+
358
+ // src/index.ts
359
+ var DOMAIN_BOOLEANS = {
360
+ hideAll: "HIDETEXT",
361
+ hideDescriptionAndLinks: "HIDEDL",
362
+ onlyLiveTechnologies: "LIVEONLY",
363
+ noMetaData: "NOMETA",
364
+ noAttributeData: "NOATTR",
365
+ noPII: "NOPII"
366
+ };
367
+ function createClient(apiKey, moduleParams = {}) {
368
+ if (!apiKey) {
369
+ throw new Error("You must initialize the BuiltWith module with an api key");
370
+ }
371
+ const parsed = ClientOptionsSchema.parse(moduleParams);
372
+ const format = parsed.responseFormat || "json";
373
+ if (format === VALID_RESPONSE_TYPES.TXT) {
374
+ console.warn("TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api");
375
+ }
376
+ const url = (path, params) => buildURL(apiKey, format, path, params);
377
+ const get = (bwURL, schema) => request(bwURL, format, schema);
378
+ const getSafe = (bwURL, schema) => requestSafe(bwURL, format, schema);
379
+ return {
380
+ free: async (lookup) => {
381
+ validateLookup(lookup);
382
+ return get(url("free1", { LOOKUP: lookup }), FreeResponseSchema);
383
+ },
384
+ domain: async (lookup, params) => {
385
+ validateLookup(lookup, { multi: true });
386
+ if (params)
387
+ DomainParamsSchema.parse(params);
388
+ return get(url("v22", {
389
+ LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup,
390
+ ...booleanParams(params, DOMAIN_BOOLEANS),
391
+ FDRANGE: params?.firstDetectedRange,
392
+ LDRANGE: params?.lastDetectedRange
393
+ }), DomainResponseSchema);
394
+ },
395
+ lists: async (technology, params) => {
396
+ if (params)
397
+ ListsParamsSchema.parse(params);
398
+ return getSafe(url("lists12", {
399
+ TECH: technology,
400
+ META: params?.includeMetaData ? "yes" : undefined,
401
+ OFFSET: params?.offset,
402
+ SINCE: params?.since
403
+ }), ListsResponseSchema);
404
+ },
405
+ relationships: async (lookup) => {
406
+ validateLookup(lookup, { multi: true });
407
+ return get(url("rv4", {
408
+ LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup
409
+ }), RelationshipsResponseSchema);
410
+ },
411
+ keywords: async (lookup) => {
412
+ validateLookup(lookup, { multi: true });
413
+ return get(url("kw2", {
414
+ LOOKUP: Array.isArray(lookup) ? lookup.join(",") : lookup
415
+ }), KeywordsResponseSchema);
416
+ },
417
+ trends: async (technology, params) => {
418
+ if (params)
419
+ TrendsParamsSchema.parse(params);
420
+ return getSafe(url("trends/v6", {
421
+ TECH: technology,
422
+ DATE: params?.date
423
+ }), TrendsResponseSchema);
424
+ },
425
+ companyToUrl: async (companyName, params) => {
426
+ if (params)
427
+ CompanyToUrlParamsSchema.parse(params);
428
+ return get(url("ctu3", {
429
+ COMPANY: companyName,
430
+ TLD: params?.tld,
431
+ AMOUNT: params?.amount
432
+ }), CompanyToUrlResponseSchema);
433
+ },
434
+ domainLive: async (lookup) => {
435
+ validateLookup(lookup);
436
+ return get(url("ddlv2", { LOOKUP: lookup }), DomainResponseSchema);
437
+ },
438
+ trust: async (lookup, params) => {
439
+ validateLookup(lookup);
440
+ if (params)
441
+ TrustParamsSchema.parse(params);
442
+ return get(url("trustv1", {
443
+ LOOKUP: lookup,
444
+ WORDS: cleanWords(params?.words),
445
+ LIVE: params?.live ? "yes" : undefined
446
+ }), TrustResponseSchema);
447
+ },
448
+ tags: async (lookup) => {
449
+ validateLookup(lookup);
450
+ return get(url("tag1", { LOOKUP: lookup }), TagsResponseSchema);
451
+ },
452
+ recommendations: async (lookup) => {
453
+ validateLookup(lookup);
454
+ return get(url("rec1", { LOOKUP: lookup }), RecommendationsResponseSchema);
455
+ },
456
+ redirects: async (lookup) => {
457
+ validateLookup(lookup);
458
+ return get(url("redirect1", { LOOKUP: lookup }), RedirectsResponseSchema);
459
+ },
460
+ product: async (query) => {
461
+ return get(url("productv1", { QUERY: query }), ProductResponseSchema);
462
+ }
463
+ };
464
+ }
465
+ export {
466
+ createClient
467
+ };
468
+
469
+ //# debugId=4FAA4EF09F1A022A64756E2164756E21
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/config.ts", "../src/schemas.ts", "../src/params.ts", "../src/request.ts", "../src/index.ts"],
4
+ "sourcesContent": [
5
+ "import type { ResponseFormat } from \"./schemas.js\";\n\nexport const VALID_RESPONSE_TYPES = {\n XML: \"xml\",\n JSON: \"json\",\n TXT: \"txt\",\n CSV: \"csv\",\n TSV: \"tsv\",\n} as const satisfies Record<string, ResponseFormat>;\n",
6
+ "import { z } from \"zod/v4\";\n\n// ─── Input Schemas ───────────────────────────────────────────────────────────\n\n/** Supported API response formats. */\nexport const ResponseFormatSchema = z.enum([\"xml\", \"json\", \"txt\", \"csv\", \"tsv\"]);\n/**\n * Response format returned by the BuiltWith API.\n *\n * - `\"json\"` — parsed and validated (default)\n * - `\"xml\"` / `\"txt\"` / `\"csv\"` / `\"tsv\"` — returned as raw strings\n */\nexport type ResponseFormat = z.infer<typeof ResponseFormatSchema>;\n\n/** Validation schema for {@link ClientOptions}. */\nexport const ClientOptionsSchema = z.strictObject({\n responseFormat: ResponseFormatSchema.optional(),\n});\n/**\n * Options passed to `createClient`.\n *\n * @example\n * ```ts\n * const client = createClient(API_KEY, { responseFormat: \"xml\" });\n * ```\n */\nexport type ClientOptions = z.infer<typeof ClientOptionsSchema>;\n\n/** Matches YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD date range format. */\nconst dateRangePattern = /^\\d{4}-\\d{2}-\\d{2}(-\\d{4}-\\d{2}-\\d{2})?$/;\n\n/** Validation schema for {@link DomainParams}. */\nexport const DomainParamsSchema = z.strictObject({\n hideAll: z.boolean().optional(),\n hideDescriptionAndLinks: z.boolean().optional(),\n onlyLiveTechnologies: z.boolean().optional(),\n noMetaData: z.boolean().optional(),\n noAttributeData: z.boolean().optional(),\n noPII: z.boolean().optional(),\n firstDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD\").optional(),\n lastDetectedRange: z.string().regex(dateRangePattern, \"Expected YYYY-MM-DD or YYYY-MM-DD-YYYY-MM-DD\").optional(),\n});\n/**\n * Optional parameters for the Domain API endpoint.\n *\n * @example\n * ```ts\n * await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * hideAll: true,\n * });\n * ```\n */\nexport type DomainParams = z.infer<typeof DomainParamsSchema>;\n\n/** Validation schema for {@link ListsParams}. */\nexport const ListsParamsSchema = z.strictObject({\n includeMetaData: z.boolean().optional(),\n offset: z.string().optional(),\n since: z.string().optional(),\n});\n/**\n * Optional parameters for the Lists API endpoint.\n *\n * @example\n * ```ts\n * await client.lists(\"Shopify\", { since: \"2024-01-01\" });\n * ```\n */\nexport type ListsParams = z.infer<typeof ListsParamsSchema>;\n\n/** Validation schema for {@link TrendsParams}. */\nexport const TrendsParamsSchema = z.strictObject({\n date: z.string().optional(),\n});\n/**\n * Optional parameters for the Trends API endpoint.\n *\n * @example\n * ```ts\n * await client.trends(\"jQuery\", { date: \"2024-06\" });\n * ```\n */\nexport type TrendsParams = z.infer<typeof TrendsParamsSchema>;\n\n/** Validation schema for {@link CompanyToUrlParams}. */\nexport const CompanyToUrlParamsSchema = z.strictObject({\n tld: z.string().optional(),\n amount: z.number().optional(),\n});\n/**\n * Optional parameters for the Company-to-URL API endpoint.\n *\n * @example\n * ```ts\n * await client.companyToUrl(\"Google\", { tld: \"com\", amount: 5 });\n * ```\n */\nexport type CompanyToUrlParams = z.infer<typeof CompanyToUrlParamsSchema>;\n\n/** Validation schema for {@link TrustParams}. */\nexport const TrustParamsSchema = z.strictObject({\n words: z.string().optional(),\n live: z.boolean().optional(),\n});\n/**\n * Optional parameters for the Trust API endpoint.\n *\n * @example\n * ```ts\n * await client.trust(\"example.com\", { words: \"shop,buy\", live: true });\n * ```\n */\nexport type TrustParams = z.infer<typeof TrustParamsSchema>;\n\nexport const SingleLookupSchema = z.string().min(1);\nexport const MultiLookupSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1).max(16)]);\n\n// ─── Response Schemas ────────────────────────────────────────────────────────\n// Use z.strictObject() to catch upstream API drift — if BuiltWith adds or\n// removes fields, the parse will fail, signaling the schema needs updating.\n\n/** Validation schema for {@link FreeResponse}. */\nexport const FreeResponseSchema = z.strictObject({\n domain: z.string(),\n first: z.number(),\n last: z.number(),\n groups: z.array(\n z.strictObject({\n name: z.string(),\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n categories: z.array(\n z.strictObject({\n live: z.number(),\n dead: z.number(),\n latest: z.number(),\n oldest: z.number(),\n name: z.string(),\n }),\n ),\n }),\n ),\n});\n/** Response from the Free API — basic technology profile for a single domain. */\nexport type FreeResponse = z.infer<typeof FreeResponseSchema>;\n\nconst TechnologySchema = z.strictObject({\n Name: z.string(),\n Description: z.string(),\n Link: z.string(),\n Parent: z.string().optional(),\n Tag: z.string(),\n FirstDetected: z.number(),\n LastDetected: z.number(),\n IsPremium: z.string(),\n Categories: z.array(z.string()).optional(),\n});\n\nconst PathSchema = z.strictObject({\n Technologies: z.array(TechnologySchema),\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Domain: z.string(),\n Url: z.string(),\n SubDomain: z.string(),\n});\n\nconst MetaSchema = z.strictObject({\n Majestic: z.number(),\n Vertical: z.string(),\n Social: z.array(z.string()),\n CompanyName: z.string(),\n Telephones: z.array(z.string()),\n Emails: z.array(z.string()),\n City: z.string(),\n State: z.string(),\n Postcode: z.string(),\n Country: z.string(),\n Names: z.array(\n z.strictObject({\n Name: z.string(),\n Type: z.number(),\n Level: z.string(),\n Email: z.string(),\n }),\n ),\n ARank: z.number(),\n QRank: z.number(),\n});\n\nconst AttributesSchema = z.strictObject({\n MJRank: z.number(),\n MJTLDRank: z.number(),\n RefSN: z.number(),\n RefIP: z.number(),\n Sitemap: z.number(),\n GTMTags: z.number(),\n QubitTags: z.number(),\n TealiumTags: z.number(),\n AdobeTags: z.number(),\n CDimensions: z.number(),\n CGoals: z.number(),\n CMetrics: z.number(),\n});\n\n/** Validation schema for {@link DomainResponse}. */\nexport const DomainResponseSchema = z.strictObject({\n Results: z.array(\n z.strictObject({\n Result: z.strictObject({\n SpendHistory: z.array(\n z.strictObject({\n D: z.number(),\n S: z.number(),\n }),\n ),\n IsDB: z.string(),\n Spend: z.number(),\n Paths: z.array(PathSchema),\n }),\n Meta: MetaSchema,\n Attributes: AttributesSchema,\n FirstIndexed: z.number(),\n LastIndexed: z.number(),\n Lookup: z.string(),\n SalesRevenue: z.number(),\n }),\n ),\n Errors: z.array(z.string()),\n});\n/** Response from the Domain API — detailed technology profile with metadata and attributes. */\nexport type DomainResponse = z.infer<typeof DomainResponseSchema>;\n\n/** Validation schema for {@link ListsResponse}. */\nexport const ListsResponseSchema = z.strictObject({\n NextOffset: z.string(),\n Results: z.array(\n z.strictObject({\n D: z.string(),\n FI: z.number().optional(),\n LI: z.number().optional(),\n LOS: z.array(z.string()).optional(),\n Q: z.number().optional(),\n A: z.number().optional(),\n U: z.number().optional(),\n M: z.number().optional(),\n SKU: z.number().optional(),\n F: z.number().optional(),\n E: z.number().optional(),\n FD: z.number().optional(),\n LD: z.number().optional(),\n S: z.number().optional(),\n R: z.number().optional(),\n Country: z.string().optional(),\n }),\n ),\n});\n/** Response from the Lists API — domains using a specific technology. */\nexport type ListsResponse = z.infer<typeof ListsResponseSchema>;\n\n/** Validation schema for {@link RelationshipsResponse}. */\nexport const RelationshipsResponseSchema = z.strictObject({\n Relationships: z.array(\n z.strictObject({\n Domain: z.string(),\n Identifiers: z.array(\n z.strictObject({\n Value: z.string(),\n Type: z.string(),\n First: z.number(),\n Last: z.number(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.number(),\n Last: z.number(),\n Overlap: z.boolean(),\n }),\n ),\n }),\n ),\n }),\n ),\n Errors: z.array(z.string()),\n results: z.number(),\n max_per_page: z.number(),\n next_skip: z.number(),\n more_results: z.boolean(),\n});\n/** Response from the Relationships API — domains sharing identifiers (analytics IDs, ad accounts, etc.). */\nexport type RelationshipsResponse = z.infer<typeof RelationshipsResponseSchema>;\n\n/** Validation schema for {@link KeywordsResponse}. */\nexport const KeywordsResponseSchema = z.strictObject({\n Keywords: z.array(\n z.strictObject({\n Domain: z.string(),\n Keywords: z.array(z.string()),\n }),\n ),\n});\n/** Response from the Keywords API — SEO keywords associated with domains. */\nexport type KeywordsResponse = z.infer<typeof KeywordsResponseSchema>;\n\n/** Validation schema for {@link TrendsResponse}. */\nexport const TrendsResponseSchema = z.strictObject({\n Tech: z.strictObject({\n icon: z.string(),\n categories: z.array(z.string()),\n tag: z.string(),\n is_premium: z.string(),\n name: z.string(),\n description: z.string(),\n link: z.string(),\n trends_link: z.string(),\n coverage: z.strictObject({\n ten_k: z.number(),\n hundred_k: z.number(),\n milly: z.number(),\n live: z.number(),\n expired: z.number(),\n }),\n }),\n});\n/** Response from the Trends API — technology adoption coverage data. */\nexport type TrendsResponse = z.infer<typeof TrendsResponseSchema>;\n\n/** Validation schema for {@link CompanyToUrlResponse}. */\nexport const CompanyToUrlResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n CompanyName: z.string(),\n Spend: z.number(),\n PageRank: z.number(),\n BuiltWithRank: z.number(),\n Parked: z.boolean(),\n Country: z.string(),\n State: z.string(),\n Postcode: z.string(),\n City: z.string(),\n Socials: z.array(z.string()),\n }),\n);\n/** Response from the Company-to-URL API — domains associated with a company name. */\nexport type CompanyToUrlResponse = z.infer<typeof CompanyToUrlResponseSchema>;\n\n/** Validation schema for {@link TrustResponse}. */\nexport const TrustResponseSchema = z.strictObject({\n Domain: z.string(),\n DBRecord: z.strictObject({\n EarliestRecord: z.number(),\n LatestUpdate: z.number(),\n PremiumTechs: z.number(),\n LiveTechs: z.boolean(),\n AffiliateLinks: z.boolean(),\n PaymentOptions: z.boolean(),\n Ecommerce: z.boolean(),\n Parked: z.boolean(),\n Spend: z.number(),\n Established: z.boolean(),\n DBIndexed: z.boolean(),\n }),\n // Intentionally loose — BuiltWith does not document the LiveRecord shape.\n // Populated only when `live: true` is passed; otherwise null.\n LiveRecord: z.object({}).passthrough().nullable(),\n Status: z.number(),\n});\n/** Response from the Trust API — domain verification and trust score. */\nexport type TrustResponse = z.infer<typeof TrustResponseSchema>;\n\n/** Validation schema for {@link TagsResponse}. */\nexport const TagsResponseSchema = z.array(\n z.strictObject({\n Value: z.string(),\n Matches: z.array(\n z.strictObject({\n Domain: z.string(),\n First: z.string(),\n Last: z.string(),\n }),\n ),\n }),\n);\n/** Response from the Tags API — tracking and analytics tags found on a domain. */\nexport type TagsResponse = z.infer<typeof TagsResponseSchema>;\n\n/** Validation schema for {@link RecommendationsResponse}. */\nexport const RecommendationsResponseSchema = z.array(\n z.strictObject({\n Domain: z.string(),\n Compiled: z.string(),\n Recommendations: z.array(\n z.strictObject({\n link: z.string(),\n name: z.string(),\n tag: z.string(),\n categories: z.array(z.string()),\n stars: z.number(),\n match: z.number(),\n }),\n ),\n }),\n);\n/** Response from the Recommendations API — suggested technologies for a domain. */\nexport type RecommendationsResponse = z.infer<typeof RecommendationsResponseSchema>;\n\n/** Validation schema for {@link RedirectsResponse}. */\nexport const RedirectsResponseSchema = z.strictObject({\n Lookup: z.string(),\n Inbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n Outbound: z.array(\n z.strictObject({\n Domain: z.string(),\n FirstDetected: z.string(),\n LastDetected: z.string(),\n }),\n ),\n});\n/** Response from the Redirects API — inbound and outbound redirect chains. */\nexport type RedirectsResponse = z.infer<typeof RedirectsResponseSchema>;\n\n/** Validation schema for {@link ProductResponse}. */\nexport const ProductResponseSchema = z.strictObject({\n query: z.string(),\n is_more: z.boolean(),\n page: z.number(),\n limit: z.number(),\n results: z.number(),\n shop_count: z.number(),\n credits: z.number(),\n used: z.number(),\n remaining: z.number(),\n used_this_query: z.number(),\n next_page: z.string(),\n shops: z.array(\n z.strictObject({\n Domain: z.string(),\n Products: z.array(\n z.strictObject({\n Title: z.string(),\n Url: z.string(),\n Indexed: z.string(),\n FirstIndexed: z.string(),\n Price: z.number(),\n }),\n ),\n Type: z.number(),\n Spend: z.number(),\n }),\n ),\n});\n/** Response from the Product API — e-commerce product search results. */\nexport type ProductResponse = z.infer<typeof ProductResponseSchema>;\n\n// ─── Client Interface ────────────────────────────────────────────────────────\n\n/**\n * The BuiltWith API client. Created via `createClient()`.\n *\n * All methods return validated, typed responses when using JSON format,\n * or raw strings for XML/TXT/CSV/TSV formats.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n * const profile = await client.free(\"example.com\");\n * ```\n */\nexport interface BuiltWithClient {\n /** Free lookup — basic technology profile for a single domain. */\n free(lookup: string): Promise<FreeResponse | string>;\n /**\n * Detailed technology profile for one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n * @param params - Optional filters (hide fields, date ranges, etc.).\n */\n domain(lookup: string | string[], params?: DomainParams): Promise<DomainResponse | string>;\n /**\n * List domains using a specific technology.\n * @param technology - Technology name (e.g. \"Shopify\", \"React\").\n * @param params - Optional pagination and filtering.\n */\n lists(technology: string, params?: ListsParams): Promise<ListsResponse | string>;\n /**\n * Find related domains via shared identifiers (analytics IDs, ad accounts, etc.).\n * @param lookup - Single domain or array of up to 16 domains.\n */\n relationships(lookup: string | string[]): Promise<RelationshipsResponse | string>;\n /**\n * Get SEO keywords associated with one or more domains.\n * @param lookup - Single domain or array of up to 16 domains.\n */\n keywords(lookup: string | string[]): Promise<KeywordsResponse | string>;\n /**\n * Technology adoption trends and coverage data.\n * @param technology - Technology name to look up.\n * @param params - Optional date filter.\n */\n trends(technology: string, params?: TrendsParams): Promise<TrendsResponse | string>;\n /**\n * Find domains associated with a company name.\n * @param companyName - Company name to search.\n * @param params - Optional TLD filter and result count.\n */\n companyToUrl(companyName: string, params?: CompanyToUrlParams): Promise<CompanyToUrlResponse | string>;\n /** Live technology lookup — scans the domain in real time. */\n domainLive(lookup: string): Promise<DomainResponse | string>;\n /**\n * Trust and verification score for a domain.\n * @param lookup - Domain to look up.\n * @param params - Optional keywords and live analysis toggle.\n */\n trust(lookup: string, params?: TrustParams): Promise<TrustResponse | string>;\n /** Get tracking and analytics tags found on a domain. */\n tags(lookup: string): Promise<TagsResponse | string>;\n /** Get technology recommendations for a domain. */\n recommendations(lookup: string): Promise<RecommendationsResponse | string>;\n /** Get inbound and outbound redirect chains for a domain. */\n redirects(lookup: string): Promise<RedirectsResponse | string>;\n /** Search for products across e-commerce sites. */\n product(query: string): Promise<ProductResponse | string>;\n}\n\n// ─── Utility Types ───────────────────────────────────────────────────────────\n\n/** @internal Maps JS param names to BuiltWith API query string keys. */\nexport type BooleanMapping = Record<string, string>;\n/** @internal URL query parameters — `undefined` values are omitted. */\nexport type QueryParams = Record<string, string | number | undefined>;\n",
7
+ "import type { BooleanMapping, QueryParams } from \"./schemas.js\";\nimport { MultiLookupSchema, SingleLookupSchema } from \"./schemas.js\";\n\nexport const toQueryString = (params: QueryParams): string =>\n Object.entries(params)\n .filter((entry): entry is [string, string | number] => entry[1] !== undefined)\n .map(([k, v]) => `${k}=${encodeURIComponent(v).replace(/%2C/gi, \",\")}`)\n .join(\"&\");\n\nconst booleanFlag = (value: unknown): \"yes\" | undefined => (value ? \"yes\" : undefined);\n\nexport const booleanParams = (\n params: Record<string, unknown> | null | undefined,\n mapping: BooleanMapping,\n): QueryParams =>\n Object.fromEntries(Object.entries(mapping).map(([jsKey, apiKey]) => [apiKey, booleanFlag(params?.[jsKey])]));\n\nexport const cleanWords = (words: string | undefined): string | undefined =>\n words\n ? words\n .split(\",\")\n .map((w) => w.trim())\n .join(\",\")\n : undefined;\n\nexport const buildURL = (\n apiKey: string,\n format: string,\n path: string,\n params: QueryParams,\n subdomain: string = \"api\",\n): string => {\n const base = `https://${subdomain}.builtwith.com/${path}/api.${format}?KEY=${apiKey}`;\n const qs = toQueryString(params);\n return qs ? `${base}&${qs}` : base;\n};\n\nexport const validateLookup = (url: string | string[], { multi = false }: { multi?: boolean } = {}): void => {\n if (multi) {\n MultiLookupSchema.parse(url);\n } else {\n SingleLookupSchema.parse(url);\n }\n if (Array.isArray(url)) {\n if (!multi) throw new Error(\"API does not allow for multi-domain LOOKUP\");\n if (url.length > 16) throw new Error(\"Domain LOOKUP size too big (16 max)\");\n }\n};\n",
8
+ "import type { z } from \"zod/v4\";\nimport { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport type { ResponseFormat } from \"./schemas.js\";\n\nconst TEXT_FORMATS: readonly ResponseFormat[] = [\n VALID_RESPONSE_TYPES.TXT,\n VALID_RESPONSE_TYPES.XML,\n VALID_RESPONSE_TYPES.CSV,\n VALID_RESPONSE_TYPES.TSV,\n];\n\nexport const request = async <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const data: unknown = await res.json();\n return schema.parse(data);\n};\n\nexport const requestSafe = async <T>(\n url: string,\n format: ResponseFormat,\n schema: z.ZodType<T>,\n): Promise<T | string> => {\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(`BuiltWith API error ${res.status}: ${body}`);\n }\n if (TEXT_FORMATS.includes(format)) {\n return res.text();\n }\n const raw = await res.text();\n let data: unknown;\n try {\n data = JSON.parse(raw);\n } catch {\n console.warn(\"BuiltWith sent an invalid JSON payload. Falling back to text parsing.\");\n return raw;\n }\n return schema.parse(data);\n};\n",
9
+ "import { VALID_RESPONSE_TYPES } from \"./config.js\";\nimport { booleanParams, buildURL, cleanWords, validateLookup } from \"./params.js\";\nimport { request, requestSafe } from \"./request.js\";\nimport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\nimport {\n ClientOptionsSchema,\n CompanyToUrlParamsSchema,\n CompanyToUrlResponseSchema,\n DomainParamsSchema,\n DomainResponseSchema,\n FreeResponseSchema,\n KeywordsResponseSchema,\n ListsParamsSchema,\n ListsResponseSchema,\n ProductResponseSchema,\n RecommendationsResponseSchema,\n RedirectsResponseSchema,\n RelationshipsResponseSchema,\n TagsResponseSchema,\n TrendsParamsSchema,\n TrendsResponseSchema,\n TrustParamsSchema,\n TrustResponseSchema,\n} from \"./schemas.js\";\n\nconst DOMAIN_BOOLEANS: BooleanMapping = {\n hideAll: \"HIDETEXT\",\n hideDescriptionAndLinks: \"HIDEDL\",\n onlyLiveTechnologies: \"LIVEONLY\",\n noMetaData: \"NOMETA\",\n noAttributeData: \"NOATTR\",\n noPII: \"NOPII\",\n};\n\n/**\n * Create a BuiltWith API client.\n *\n * @param apiKey - Your BuiltWith API key.\n * @param moduleParams - Optional client configuration (e.g. response format).\n * @returns A {@link BuiltWithClient} with methods for each BuiltWith API endpoint.\n *\n * @example\n * ```ts\n * import { createClient } from \"builtwith-api\";\n *\n * const client = createClient(process.env.BUILTWITH_API_KEY!);\n *\n * // Free lookup\n * const profile = await client.free(\"example.com\");\n *\n * // Domain lookup with filters\n * const details = await client.domain(\"example.com\", {\n * onlyLiveTechnologies: true,\n * });\n *\n * // Multi-domain lookup\n * const multi = await client.domain([\"example.com\", \"other.com\"]);\n * ```\n */\nexport function createClient(apiKey: string, moduleParams: ClientOptions = {}): BuiltWithClient {\n if (!apiKey) {\n throw new Error(\"You must initialize the BuiltWith module with an api key\");\n }\n\n const parsed = ClientOptionsSchema.parse(moduleParams);\n const format: ResponseFormat = parsed.responseFormat || \"json\";\n\n if (format === VALID_RESPONSE_TYPES.TXT) {\n console.warn(\n \"TXT response format is only supported for the BuiltWith Lists API. See: https://api.builtwith.com/lists-api\",\n );\n }\n\n const url = (path: string, params: QueryParams) => buildURL(apiKey, format, path, params);\n const get = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => request(bwURL, format, schema);\n const getSafe = <T>(bwURL: string, schema: import(\"zod/v4\").ZodType<T>) => requestSafe(bwURL, format, schema);\n\n return {\n free: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"free1\", { LOOKUP: lookup }), FreeResponseSchema);\n },\n\n domain: async (lookup: string | string[], params?: DomainParams) => {\n validateLookup(lookup, { multi: true });\n if (params) DomainParamsSchema.parse(params);\n return get(\n url(\"v22\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n ...booleanParams(params, DOMAIN_BOOLEANS),\n FDRANGE: params?.firstDetectedRange,\n LDRANGE: params?.lastDetectedRange,\n }),\n DomainResponseSchema,\n );\n },\n\n lists: async (technology: string, params?: ListsParams) => {\n if (params) ListsParamsSchema.parse(params);\n return getSafe(\n url(\"lists12\", {\n TECH: technology,\n META: params?.includeMetaData ? \"yes\" : undefined,\n OFFSET: params?.offset,\n SINCE: params?.since,\n }),\n ListsResponseSchema,\n );\n },\n\n relationships: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"rv4\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n RelationshipsResponseSchema,\n );\n },\n\n keywords: async (lookup: string | string[]) => {\n validateLookup(lookup, { multi: true });\n return get(\n url(\"kw2\", {\n LOOKUP: Array.isArray(lookup) ? lookup.join(\",\") : lookup,\n }),\n KeywordsResponseSchema,\n );\n },\n\n trends: async (technology: string, params?: TrendsParams) => {\n if (params) TrendsParamsSchema.parse(params);\n return getSafe(\n url(\"trends/v6\", {\n TECH: technology,\n DATE: params?.date,\n }),\n TrendsResponseSchema,\n );\n },\n\n companyToUrl: async (companyName: string, params?: CompanyToUrlParams) => {\n if (params) CompanyToUrlParamsSchema.parse(params);\n return get(\n url(\"ctu3\", {\n COMPANY: companyName,\n TLD: params?.tld,\n AMOUNT: params?.amount,\n }),\n CompanyToUrlResponseSchema,\n );\n },\n\n domainLive: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"ddlv2\", { LOOKUP: lookup }), DomainResponseSchema);\n },\n\n trust: async (lookup: string, params?: TrustParams) => {\n validateLookup(lookup);\n if (params) TrustParamsSchema.parse(params);\n return get(\n url(\"trustv1\", {\n LOOKUP: lookup,\n WORDS: cleanWords(params?.words),\n LIVE: params?.live ? \"yes\" : undefined,\n }),\n TrustResponseSchema,\n );\n },\n\n tags: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"tag1\", { LOOKUP: lookup }), TagsResponseSchema);\n },\n\n recommendations: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"rec1\", { LOOKUP: lookup }), RecommendationsResponseSchema);\n },\n\n redirects: async (lookup: string) => {\n validateLookup(lookup);\n return get(url(\"redirect1\", { LOOKUP: lookup }), RedirectsResponseSchema);\n },\n\n product: async (query: string) => {\n return get(url(\"productv1\", { QUERY: query }), ProductResponseSchema);\n },\n };\n}\n\nexport type {\n BooleanMapping,\n BuiltWithClient,\n ClientOptions,\n CompanyToUrlParams,\n DomainParams,\n ListsParams,\n QueryParams,\n ResponseFormat,\n TrendsParams,\n TrustParams,\n} from \"./schemas.js\";\n"
10
+ ],
11
+ "mappings": "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",
12
+ "debugId": "4FAA4EF09F1A022A64756E2164756E21",
13
+ "names": []
14
+ }
@@ -0,0 +1,9 @@
1
+ import type { BooleanMapping, QueryParams } from "./schemas.js";
2
+ export declare const toQueryString: (params: QueryParams) => string;
3
+ export declare const booleanParams: (params: Record<string, unknown> | null | undefined, mapping: BooleanMapping) => QueryParams;
4
+ export declare const cleanWords: (words: string | undefined) => string | undefined;
5
+ export declare const buildURL: (apiKey: string, format: string, path: string, params: QueryParams, subdomain?: string) => string;
6
+ export declare const validateLookup: (url: string | string[], { multi }?: {
7
+ multi?: boolean;
8
+ }) => void;
9
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhE,eAAO,MAAM,aAAa,GAAI,QAAQ,WAAW,KAAG,MAItC,CAAC;AAIf,eAAO,MAAM,aAAa,GACxB,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAClD,SAAS,cAAc,KACtB,WAC2G,CAAC;AAE/G,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAMjD,CAAC;AAEhB,eAAO,MAAM,QAAQ,GACnB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,QAAQ,WAAW,EACnB,YAAW,MAAc,KACxB,MAIF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,GAAG,MAAM,EAAE,EAAE,YAAmB;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KAAG,IAUpG,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { z } from "zod/v4";
2
+ import type { ResponseFormat } from "./schemas.js";
3
+ export declare const request: <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>) => Promise<T | string>;
4
+ export declare const requestSafe: <T>(url: string, format: ResponseFormat, schema: z.ZodType<T>) => Promise<T | string>;
5
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AASnD,eAAO,MAAM,OAAO,GAAU,CAAC,EAAE,KAAK,MAAM,EAAE,QAAQ,cAAc,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAW9G,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,CAAC,EACjC,KAAK,MAAM,EACX,QAAQ,cAAc,EACtB,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KACnB,OAAO,CAAC,CAAC,GAAG,MAAM,CAkBpB,CAAC"}