@refkit/provider-brave 0.3.0 → 0.5.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 +3 -9
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
2
|
import {
|
|
3
3
|
defineProvider,
|
|
4
|
-
|
|
4
|
+
okJson,
|
|
5
5
|
setIfString,
|
|
6
6
|
setIfPositiveInt,
|
|
7
7
|
setIfBoolean
|
|
@@ -20,17 +20,12 @@ function toReference(r) {
|
|
|
20
20
|
raw: { sourceTerms: "", sourceUrl: r.url }
|
|
21
21
|
};
|
|
22
22
|
return {
|
|
23
|
-
id: referenceId("brave", r.properties.url),
|
|
24
|
-
// origin image URL is the most stable identifier
|
|
25
23
|
modality: "image",
|
|
26
24
|
title: r.title,
|
|
27
|
-
|
|
28
|
-
canonicalUrl: r.url,
|
|
25
|
+
sourceUrl: r.url,
|
|
29
26
|
// the source webpage, not the raw image bytes
|
|
30
27
|
rights,
|
|
31
|
-
verifiedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
32
28
|
thumbnail: { url: r.thumbnail.src },
|
|
33
|
-
relevance: 0,
|
|
34
29
|
raw: r
|
|
35
30
|
};
|
|
36
31
|
}
|
|
@@ -55,8 +50,7 @@ function brave(config) {
|
|
|
55
50
|
headers: { "X-Subscription-Token": config.token, Accept: "application/json" },
|
|
56
51
|
signal: ctx.signal
|
|
57
52
|
});
|
|
58
|
-
|
|
59
|
-
const json = await res.json();
|
|
53
|
+
const json = await okJson(res, "brave search");
|
|
60
54
|
return json.results.map(toReference);
|
|
61
55
|
}
|
|
62
56
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n defineProvider,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n defineProvider, okJson, setIfString, setIfPositiveInt, setIfBoolean,\n type EmittedReference, type RightsRecord, type NormalizedQuery, type ProviderContext, type SearchSafety,\n} from '@refkit/core'\n\nexport interface BraveConfig {\n token: string\n /** Brave safesearch: 'strict' (default) or 'off'. */\n safesearch?: 'strict' | 'off'\n}\n\nexport interface BraveImageSearchOptions {\n country?: string\n searchLang?: string\n count?: number\n safesearch?: 'strict' | 'off'\n spellcheck?: boolean\n}\n\ninterface BraveImageResult {\n title: string\n url: string // the source webpage (canonical link)\n source: string // domain\n thumbnail: { src: string } // Brave-proxied thumbnail (safe to display)\n properties: { url: string; placeholder?: string } // origin/CDN full image (do NOT rehost)\n}\ninterface BraveResponse { results: BraveImageResult[] }\n\nfunction braveSafeSearch(control: SearchSafety | undefined, fallback: BraveConfig['safesearch']): 'strict' | 'off' {\n if (control === 'off') return 'off'\n if (control === 'strict' || control === 'moderate') return 'strict'\n return fallback ?? 'strict'\n}\n\nfunction toReference(r: BraveImageResult): EmittedReference {\n const rights: RightsRecord = {\n // open web → no license metadata → evaluateUse returns needs-review (never auto-allowed)\n license: 'unknown',\n // only the Brave-proxied thumbnail is safe to show; never rehost properties.url (origin image)\n rehostPolicy: 'thumbnail-only',\n raw: { sourceTerms: '', sourceUrl: r.url },\n }\n return {\n modality: 'image',\n title: r.title,\n sourceUrl: r.url, // the source webpage, not the raw image bytes\n rights,\n thumbnail: { url: r.thumbnail.src },\n raw: r,\n }\n}\n\nexport function brave(config: BraveConfig) {\n return defineProvider({\n id: 'brave',\n modalities: ['image'],\n description: 'Open-web image search (Brave)',\n capabilities: { controls: ['safety'] },\n async search(q: NormalizedQuery, ctx: ProviderContext): Promise<EmittedReference[]> {\n const url = new URL('https://api.search.brave.com/res/v1/images/search')\n url.searchParams.set('q', q.text)\n url.searchParams.set('count', String(Math.min(q.limit ?? 50, 200)))\n url.searchParams.set('safesearch', braveSafeSearch(q.controls?.safety, config.safesearch))\n const opts = q.providerOptions as BraveImageSearchOptions | undefined\n setIfString(url, 'country', opts?.country)\n setIfString(url, 'search_lang', opts?.searchLang)\n setIfPositiveInt(url, 'count', opts?.count, { max: 200, clamp: true })\n setIfString(url, 'safesearch', opts?.safesearch, ['strict', 'off'])\n setIfBoolean(url, 'spellcheck', opts?.spellcheck)\n const res = await ctx.fetch(url.toString(), {\n headers: { 'X-Subscription-Token': config.token, Accept: 'application/json' },\n signal: ctx.signal,\n })\n const json = await okJson<BraveResponse>(res, 'brave search')\n return json.results.map(toReference)\n },\n })\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAAgB;AAAA,EAAQ;AAAA,EAAa;AAAA,EAAkB;AAAA,OAElD;AAyBP,SAAS,gBAAgB,SAAmC,UAAuD;AACjH,MAAI,YAAY,MAAO,QAAO;AAC9B,MAAI,YAAY,YAAY,YAAY,WAAY,QAAO;AAC3D,SAAO,YAAY;AACrB;AAEA,SAAS,YAAY,GAAuC;AAC1D,QAAM,SAAuB;AAAA;AAAA,IAE3B,SAAS;AAAA;AAAA,IAET,cAAc;AAAA,IACd,KAAK,EAAE,aAAa,IAAI,WAAW,EAAE,IAAI;AAAA,EAC3C;AACA,SAAO;AAAA,IACL,UAAU;AAAA,IACV,OAAO,EAAE;AAAA,IACT,WAAW,EAAE;AAAA;AAAA,IACb;AAAA,IACA,WAAW,EAAE,KAAK,EAAE,UAAU,IAAI;AAAA,IAClC,KAAK;AAAA,EACP;AACF;AAEO,SAAS,MAAM,QAAqB;AACzC,SAAO,eAAe;AAAA,IACpB,IAAI;AAAA,IACJ,YAAY,CAAC,OAAO;AAAA,IACpB,aAAa;AAAA,IACb,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE;AAAA,IACrC,MAAM,OAAO,GAAoB,KAAmD;AAClF,YAAM,MAAM,IAAI,IAAI,mDAAmD;AACvE,UAAI,aAAa,IAAI,KAAK,EAAE,IAAI;AAChC,UAAI,aAAa,IAAI,SAAS,OAAO,KAAK,IAAI,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC;AAClE,UAAI,aAAa,IAAI,cAAc,gBAAgB,EAAE,UAAU,QAAQ,OAAO,UAAU,CAAC;AACzF,YAAM,OAAO,EAAE;AACf,kBAAY,KAAK,WAAW,MAAM,OAAO;AACzC,kBAAY,KAAK,eAAe,MAAM,UAAU;AAChD,uBAAiB,KAAK,SAAS,MAAM,OAAO,EAAE,KAAK,KAAK,OAAO,KAAK,CAAC;AACrE,kBAAY,KAAK,cAAc,MAAM,YAAY,CAAC,UAAU,KAAK,CAAC;AAClE,mBAAa,KAAK,cAAc,MAAM,UAAU;AAChD,YAAM,MAAM,MAAM,IAAI,MAAM,IAAI,SAAS,GAAG;AAAA,QAC1C,SAAS,EAAE,wBAAwB,OAAO,OAAO,QAAQ,mBAAmB;AAAA,QAC5E,QAAQ,IAAI;AAAA,MACd,CAAC;AACD,YAAM,OAAO,MAAM,OAAsB,KAAK,cAAc;AAC5D,aAAO,KAAK,QAAQ,IAAI,WAAW;AAAA,IACrC;AAAA,EACF,CAAC;AACH;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refkit/provider-brave",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Brave Search web-discovery provider satellite for refkit — open-web image breadth, license:unknown (use-gated to needs-review).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@refkit/core": "0.
|
|
34
|
+
"@refkit/core": "0.10.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@refkit/provider-openverse": "0.
|
|
38
|
-
"@refkit/provider-testkit": "0.1.
|
|
37
|
+
"@refkit/provider-openverse": "0.6.0",
|
|
38
|
+
"@refkit/provider-testkit": "0.1.2"
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"dist",
|