@refkit/provider-flickr 0.3.1 → 0.4.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 CHANGED
@@ -5,7 +5,8 @@ import {
5
5
  ccVersionFor,
6
6
  setIfString,
7
7
  setIfInt,
8
- setIfStringList
8
+ setIfStringList,
9
+ setIfPositiveInt
9
10
  } from "@refkit/core";
10
11
  var FLICKR_LICENSE = {
11
12
  0: { license: "proprietary" },
@@ -111,6 +112,7 @@ function toReference(p) {
111
112
  return {
112
113
  id: referenceId("flickr", canonicalUrl),
113
114
  modality: "image",
115
+ kind: "photo",
114
116
  title: p.title || void 0,
115
117
  source: { providerId: "flickr", sourceUrl: canonicalUrl },
116
118
  canonicalUrl,
@@ -127,8 +129,9 @@ function flickr(config) {
127
129
  return defineProvider({
128
130
  id: "flickr",
129
131
  modalities: ["image"],
130
- queryFeatures: ["keyword"],
131
- capabilities: { controls: ["sort", "safety", "license.commercial", "license.modification", "license.allowUnknown", "creator.id"] },
132
+ kinds: ["photo"],
133
+ description: "Community photography with per-item CC licensing (Flickr)",
134
+ capabilities: { controls: ["sort", "safety", "license.commercial", "license.modification", "license.allowUnknown", "creator.id", "page"] },
132
135
  async search(q, ctx) {
133
136
  const opts = q.providerOptions;
134
137
  const url = new URL("https://api.flickr.com/services/rest/");
@@ -165,6 +168,7 @@ function flickr(config) {
165
168
  setBooleanFlag(url, "in_gallery", opts?.inGallery);
166
169
  setBooleanFlag(url, "is_getty", opts?.isGetty);
167
170
  url.searchParams.set("extras", flickrExtras(opts?.extras));
171
+ setIfPositiveInt(url, "page", q.controls?.page);
168
172
  setIfInt(url, "page", opts?.page, { min: 1 });
169
173
  url.searchParams.set("per_page", String(q.limit ?? 20));
170
174
  setIfInt(url, "per_page", opts?.perPage, { min: 1, max: 500 });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n defineProvider, referenceId, ccVersionFor,\n setIfString, setIfInt, setIfStringList,\n type Reference, type RightsRecord, type LicenseId, type SearchLicenseControls,\n type NormalizedQuery, type ProviderContext,\n} from '@refkit/core'\n\nexport interface FlickrConfig {\n apiKey: string\n /** Server-side license filter (comma-separated Flickr license ids). Defaults to the\n * CC/PD/CC0 set — a relevance hint only; mapFlickrLicense below is authoritative. */\n licenseFilter?: string\n}\n\nexport interface FlickrSearchOptions {\n licenseFilter?: string\n sort?: 'date-posted-asc' | 'date-posted-desc' | 'date-taken-asc' | 'date-taken-desc' | 'interestingness-desc' | 'interestingness-asc' | 'relevance'\n safeSearch?: 1 | 2 | 3\n tags?: string | readonly string[]\n tagMode?: 'any' | 'all'\n userId?: string\n minUploadDate?: string | number\n maxUploadDate?: string | number\n minTakenDate?: string | number\n maxTakenDate?: string | number\n bbox?: string\n accuracy?: number\n machineTags?: string | readonly string[]\n machineTagMode?: 'any' | 'all'\n groupId?: string\n woeId?: string\n placeId?: string\n hasGeo?: boolean\n geoContext?: 0 | 1 | 2\n lat?: string\n lon?: string\n radius?: number\n radiusUnits?: 'mi' | 'km'\n isCommons?: boolean\n inGallery?: boolean\n isGetty?: boolean\n extras?: string | readonly string[]\n page?: number\n perPage?: number\n}\n\n// Flickr numeric license id → our LicenseId (+ CC version). See\n// flickr.photos.licenses.getInfo. All Rights Reserved (0) → proprietary; NC/ND\n// variants map to their CC families and gate through core's LICENSE_FACTS —\n// NC stays denied for commercial/AI use; ND permits verbatim commercial reuse\n// (allowed-with-attribution) but stays denied for AI/derivative use.\nconst FLICKR_LICENSE: Record<number, { license: LicenseId; version?: string }> = {\n 0: { license: 'proprietary' }, // All Rights Reserved\n 1: { license: 'CC-BY-NC-SA', version: '2.0' }, // CC BY-NC-SA 2.0\n 2: { license: 'CC-BY-NC', version: '2.0' }, // CC BY-NC 2.0\n 3: { license: 'CC-BY-NC-ND', version: '2.0' }, // CC BY-NC-ND 2.0\n 4: { license: 'CC-BY', version: '2.0' }, // CC BY 2.0\n 5: { license: 'CC-BY-SA', version: '2.0' }, // CC BY-SA 2.0\n 6: { license: 'CC-BY-ND', version: '2.0' }, // CC BY-ND 2.0\n 7: { license: 'unknown' }, // \"No known copyright restrictions\" — NOT a guaranteed-free grant → needs-review\n 8: { license: 'PD' }, // United States Government Work\n 9: { license: 'CC0-1.0' }, // Public Domain Dedication (CC0)\n 10: { license: 'PD' }, // Public Domain Mark\n 11: { license: 'CC-BY', version: '4.0' }, // CC BY 4.0\n 12: { license: 'CC-BY-SA', version: '4.0' }, // CC BY-SA 4.0\n 13: { license: 'CC-BY-ND', version: '4.0' }, // CC BY-ND 4.0\n 14: { license: 'CC-BY-NC', version: '4.0' }, // CC BY-NC 4.0\n 15: { license: 'CC-BY-NC-SA', version: '4.0' }, // CC BY-NC-SA 4.0\n 16: { license: 'CC-BY-NC-ND', version: '4.0' }, // CC BY-NC-ND 4.0\n}\n\n/** Map a Flickr numeric license id (string or number) to our license + CC version. */\nexport function mapFlickrLicense(id: string | number): { license: LicenseId; version?: string } {\n const n = typeof id === 'string' ? Number(id) : id\n return FLICKR_LICENSE[n] ?? { license: 'unknown' }\n}\n\n// Usable-license relevance hint (CC-BY/BY-SA 2.0+4.0, PD ×3, CC0). Flickr is mostly\n// All-Rights-Reserved, so without this most results would gate straight to denied.\nconst DEFAULT_LICENSE_FILTER = '4,5,7,8,9,10,11,12'\n\ninterface FlickrPhoto {\n id: string\n owner: string\n title: string\n license: string\n ownername?: string\n url_t?: string; width_t?: number; height_t?: number\n url_m?: string; width_m?: number; height_m?: number\n url_l?: string; width_l?: number; height_l?: number\n}\ninterface FlickrResponse { photos?: { photo: FlickrPhoto[] }; stat: string }\n\nfunction setIfSafeSearch(url: URL, value: unknown) {\n if (value !== 1 && value !== 2 && value !== 3) return\n url.searchParams.set('safe_search', String(value))\n}\n\nfunction setTags(url: URL, value: unknown) {\n if (typeof value === 'string' && value) url.searchParams.set('tags', value)\n if (Array.isArray(value) && value.every(v => typeof v === 'string')) url.searchParams.set('tags', value.join(','))\n}\n\nfunction setStringOrNumber(url: URL, key: string, value: unknown) {\n if (typeof value === 'string' && value) url.searchParams.set(key, value)\n if (typeof value === 'number' && Number.isFinite(value)) url.searchParams.set(key, String(value))\n}\n\nfunction setBooleanFlag(url: URL, key: string, value: unknown) {\n if (typeof value !== 'boolean') return\n url.searchParams.set(key, value ? '1' : '0')\n}\n\nfunction flickrExtras(value: unknown): string {\n const required = ['license', 'owner_name', 'url_t', 'url_m', 'url_l']\n const extras = new Set(required)\n if (typeof value === 'string') {\n for (const item of value.split(',')) if (item.trim()) extras.add(item.trim())\n }\n if (Array.isArray(value) && value.every(v => typeof v === 'string')) {\n for (const item of value) if (item) extras.add(item)\n }\n return Array.from(extras).join(',')\n}\n\nfunction flickrLicenseForControls(license: SearchLicenseControls | undefined): string | undefined {\n if (!license) return undefined\n if (license.allowUnknown) return DEFAULT_LICENSE_FILTER\n if (license.commercial && license.modification) return '4,5,9,10,11,12'\n if (license.commercial) return '4,5,6,8,9,10,11,12,13'\n return undefined\n}\n\nfunction flickrSort(sort: string | undefined): string | undefined {\n if (sort === 'interesting') return 'interestingness-desc'\n if (sort === 'latest') return 'date-posted-desc'\n if (sort === 'relevance') return 'relevance'\n return undefined\n}\n\nfunction flickrSafeSearch(safety: string | undefined): 1 | 2 | 3 | undefined {\n if (safety === 'strict') return 1\n if (safety === 'moderate') return 2\n if (safety === 'off') return 3\n return undefined\n}\n\nfunction toReference(p: FlickrPhoto): Reference {\n const { license, version } = mapFlickrLicense(p.license)\n const canonicalUrl = `https://www.flickr.com/photos/${p.owner}/${p.id}`\n const rights: RightsRecord = {\n license,\n licenseVersion: ccVersionFor(license, version),\n author: p.ownername || undefined,\n rehostPolicy: 'cache-allowed',\n raw: { sourceTerms: 'https://www.flickr.com/help/terms', sourceUrl: canonicalUrl },\n }\n const previewUrl = p.url_l ?? p.url_m\n const previewW = p.url_l ? p.width_l : p.width_m\n const previewH = p.url_l ? p.height_l : p.height_m\n const thumbUrl = p.url_t ?? p.url_m\n return {\n id: referenceId('flickr', canonicalUrl),\n modality: 'image',\n title: p.title || undefined,\n source: { providerId: 'flickr', sourceUrl: canonicalUrl },\n canonicalUrl,\n rights,\n verifiedAt: new Date().toISOString(),\n ...(thumbUrl ? { thumbnail: { url: thumbUrl } } : {}),\n ...(previewUrl ? { preview: { url: previewUrl, mediaType: 'image/jpeg', width: previewW, height: previewH } } : {}),\n ...(previewW && previewH ? { visual: { width: previewW, height: previewH } } : {}),\n relevance: 0,\n raw: p,\n }\n}\n\nexport function flickr(config: FlickrConfig) {\n return defineProvider({\n id: 'flickr',\n modalities: ['image'],\n queryFeatures: ['keyword'],\n capabilities: { controls: ['sort', 'safety', 'license.commercial', 'license.modification', 'license.allowUnknown', 'creator.id'] },\n async search(q: NormalizedQuery, ctx: ProviderContext): Promise<Reference[]> {\n const opts = q.providerOptions as FlickrSearchOptions | undefined\n const url = new URL('https://api.flickr.com/services/rest/')\n url.searchParams.set('method', 'flickr.photos.search')\n url.searchParams.set('api_key', config.apiKey)\n url.searchParams.set('text', q.text)\n url.searchParams.set('license', opts?.licenseFilter ?? flickrLicenseForControls(q.controls?.license) ?? config.licenseFilter ?? DEFAULT_LICENSE_FILTER)\n url.searchParams.set('content_type', '1') // photos only (no screenshots/other)\n url.searchParams.set('media', 'photos')\n url.searchParams.set('sort', 'relevance')\n setIfString(url, 'sort', opts?.sort ?? flickrSort(q.controls?.sort), ['date-posted-asc', 'date-posted-desc', 'date-taken-asc', 'date-taken-desc', 'interestingness-desc', 'interestingness-asc', 'relevance'])\n setIfSafeSearch(url, opts?.safeSearch ?? flickrSafeSearch(q.controls?.safety))\n setTags(url, opts?.tags)\n setIfString(url, 'tag_mode', opts?.tagMode, ['any', 'all'])\n setIfString(url, 'user_id', opts?.userId ?? q.controls?.creator?.id)\n setStringOrNumber(url, 'min_upload_date', opts?.minUploadDate)\n setStringOrNumber(url, 'max_upload_date', opts?.maxUploadDate)\n setStringOrNumber(url, 'min_taken_date', opts?.minTakenDate)\n setStringOrNumber(url, 'max_taken_date', opts?.maxTakenDate)\n setIfString(url, 'bbox', opts?.bbox)\n setIfInt(url, 'accuracy', opts?.accuracy, { min: 1, max: 16 })\n setIfStringList(url, 'machine_tags', opts?.machineTags)\n setIfString(url, 'machine_tag_mode', opts?.machineTagMode, ['any', 'all'])\n setIfString(url, 'group_id', opts?.groupId)\n setIfString(url, 'woe_id', opts?.woeId)\n setIfString(url, 'place_id', opts?.placeId)\n setBooleanFlag(url, 'has_geo', opts?.hasGeo)\n setIfInt(url, 'geo_context', opts?.geoContext, { min: 0, max: 2 })\n setIfString(url, 'lat', opts?.lat)\n setIfString(url, 'lon', opts?.lon)\n setStringOrNumber(url, 'radius', opts?.radius)\n setIfString(url, 'radius_units', opts?.radiusUnits, ['mi', 'km'])\n setBooleanFlag(url, 'is_commons', opts?.isCommons)\n setBooleanFlag(url, 'in_gallery', opts?.inGallery)\n setBooleanFlag(url, 'is_getty', opts?.isGetty)\n url.searchParams.set('extras', flickrExtras(opts?.extras))\n setIfInt(url, 'page', opts?.page, { min: 1 })\n url.searchParams.set('per_page', String(q.limit ?? 20))\n setIfInt(url, 'per_page', opts?.perPage, { min: 1, max: 500 })\n url.searchParams.set('format', 'json')\n url.searchParams.set('nojsoncallback', '1')\n const res = await ctx.fetch(url.toString(), { signal: ctx.signal })\n if (!res.ok) throw new Error(`flickr search failed: ${res.status}`)\n const json = (await res.json()) as FlickrResponse\n if (json.stat !== 'ok' || !json.photos) throw new Error(`flickr search error: stat=${json.stat}`)\n return json.photos.photo.map(toReference)\n },\n })\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n defineProvider, referenceId, ccVersionFor,\n setIfString, setIfInt, setIfStringList,\n type Reference, type RightsRecord, type LicenseId, type SearchLicenseControls,\n type NormalizedQuery, type ProviderContext,\n setIfPositiveInt,\n} from '@refkit/core'\n\nexport interface FlickrConfig {\n apiKey: string\n /** Server-side license filter (comma-separated Flickr license ids). Defaults to the\n * CC/PD/CC0 set — a relevance hint only; mapFlickrLicense below is authoritative. */\n licenseFilter?: string\n}\n\nexport interface FlickrSearchOptions {\n licenseFilter?: string\n sort?: 'date-posted-asc' | 'date-posted-desc' | 'date-taken-asc' | 'date-taken-desc' | 'interestingness-desc' | 'interestingness-asc' | 'relevance'\n safeSearch?: 1 | 2 | 3\n tags?: string | readonly string[]\n tagMode?: 'any' | 'all'\n userId?: string\n minUploadDate?: string | number\n maxUploadDate?: string | number\n minTakenDate?: string | number\n maxTakenDate?: string | number\n bbox?: string\n accuracy?: number\n machineTags?: string | readonly string[]\n machineTagMode?: 'any' | 'all'\n groupId?: string\n woeId?: string\n placeId?: string\n hasGeo?: boolean\n geoContext?: 0 | 1 | 2\n lat?: string\n lon?: string\n radius?: number\n radiusUnits?: 'mi' | 'km'\n isCommons?: boolean\n inGallery?: boolean\n isGetty?: boolean\n extras?: string | readonly string[]\n page?: number\n perPage?: number\n}\n\n// Flickr numeric license id → our LicenseId (+ CC version). See\n// flickr.photos.licenses.getInfo. All Rights Reserved (0) → proprietary; NC/ND\n// variants map to their CC families and gate through core's LICENSE_FACTS —\n// NC stays denied for commercial/AI use; ND permits verbatim commercial reuse\n// (allowed-with-attribution) but stays denied for AI/derivative use.\nconst FLICKR_LICENSE: Record<number, { license: LicenseId; version?: string }> = {\n 0: { license: 'proprietary' }, // All Rights Reserved\n 1: { license: 'CC-BY-NC-SA', version: '2.0' }, // CC BY-NC-SA 2.0\n 2: { license: 'CC-BY-NC', version: '2.0' }, // CC BY-NC 2.0\n 3: { license: 'CC-BY-NC-ND', version: '2.0' }, // CC BY-NC-ND 2.0\n 4: { license: 'CC-BY', version: '2.0' }, // CC BY 2.0\n 5: { license: 'CC-BY-SA', version: '2.0' }, // CC BY-SA 2.0\n 6: { license: 'CC-BY-ND', version: '2.0' }, // CC BY-ND 2.0\n 7: { license: 'unknown' }, // \"No known copyright restrictions\" — NOT a guaranteed-free grant → needs-review\n 8: { license: 'PD' }, // United States Government Work\n 9: { license: 'CC0-1.0' }, // Public Domain Dedication (CC0)\n 10: { license: 'PD' }, // Public Domain Mark\n 11: { license: 'CC-BY', version: '4.0' }, // CC BY 4.0\n 12: { license: 'CC-BY-SA', version: '4.0' }, // CC BY-SA 4.0\n 13: { license: 'CC-BY-ND', version: '4.0' }, // CC BY-ND 4.0\n 14: { license: 'CC-BY-NC', version: '4.0' }, // CC BY-NC 4.0\n 15: { license: 'CC-BY-NC-SA', version: '4.0' }, // CC BY-NC-SA 4.0\n 16: { license: 'CC-BY-NC-ND', version: '4.0' }, // CC BY-NC-ND 4.0\n}\n\n/** Map a Flickr numeric license id (string or number) to our license + CC version. */\nexport function mapFlickrLicense(id: string | number): { license: LicenseId; version?: string } {\n const n = typeof id === 'string' ? Number(id) : id\n return FLICKR_LICENSE[n] ?? { license: 'unknown' }\n}\n\n// Usable-license relevance hint (CC-BY/BY-SA 2.0+4.0, PD ×3, CC0). Flickr is mostly\n// All-Rights-Reserved, so without this most results would gate straight to denied.\nconst DEFAULT_LICENSE_FILTER = '4,5,7,8,9,10,11,12'\n\ninterface FlickrPhoto {\n id: string\n owner: string\n title: string\n license: string\n ownername?: string\n url_t?: string; width_t?: number; height_t?: number\n url_m?: string; width_m?: number; height_m?: number\n url_l?: string; width_l?: number; height_l?: number\n}\ninterface FlickrResponse { photos?: { photo: FlickrPhoto[] }; stat: string }\n\nfunction setIfSafeSearch(url: URL, value: unknown) {\n if (value !== 1 && value !== 2 && value !== 3) return\n url.searchParams.set('safe_search', String(value))\n}\n\nfunction setTags(url: URL, value: unknown) {\n if (typeof value === 'string' && value) url.searchParams.set('tags', value)\n if (Array.isArray(value) && value.every(v => typeof v === 'string')) url.searchParams.set('tags', value.join(','))\n}\n\nfunction setStringOrNumber(url: URL, key: string, value: unknown) {\n if (typeof value === 'string' && value) url.searchParams.set(key, value)\n if (typeof value === 'number' && Number.isFinite(value)) url.searchParams.set(key, String(value))\n}\n\nfunction setBooleanFlag(url: URL, key: string, value: unknown) {\n if (typeof value !== 'boolean') return\n url.searchParams.set(key, value ? '1' : '0')\n}\n\nfunction flickrExtras(value: unknown): string {\n const required = ['license', 'owner_name', 'url_t', 'url_m', 'url_l']\n const extras = new Set(required)\n if (typeof value === 'string') {\n for (const item of value.split(',')) if (item.trim()) extras.add(item.trim())\n }\n if (Array.isArray(value) && value.every(v => typeof v === 'string')) {\n for (const item of value) if (item) extras.add(item)\n }\n return Array.from(extras).join(',')\n}\n\nfunction flickrLicenseForControls(license: SearchLicenseControls | undefined): string | undefined {\n if (!license) return undefined\n if (license.allowUnknown) return DEFAULT_LICENSE_FILTER\n if (license.commercial && license.modification) return '4,5,9,10,11,12'\n if (license.commercial) return '4,5,6,8,9,10,11,12,13'\n return undefined\n}\n\nfunction flickrSort(sort: string | undefined): string | undefined {\n if (sort === 'interesting') return 'interestingness-desc'\n if (sort === 'latest') return 'date-posted-desc'\n if (sort === 'relevance') return 'relevance'\n return undefined\n}\n\nfunction flickrSafeSearch(safety: string | undefined): 1 | 2 | 3 | undefined {\n if (safety === 'strict') return 1\n if (safety === 'moderate') return 2\n if (safety === 'off') return 3\n return undefined\n}\n\nfunction toReference(p: FlickrPhoto): Reference {\n const { license, version } = mapFlickrLicense(p.license)\n const canonicalUrl = `https://www.flickr.com/photos/${p.owner}/${p.id}`\n const rights: RightsRecord = {\n license,\n licenseVersion: ccVersionFor(license, version),\n author: p.ownername || undefined,\n rehostPolicy: 'cache-allowed',\n raw: { sourceTerms: 'https://www.flickr.com/help/terms', sourceUrl: canonicalUrl },\n }\n const previewUrl = p.url_l ?? p.url_m\n const previewW = p.url_l ? p.width_l : p.width_m\n const previewH = p.url_l ? p.height_l : p.height_m\n const thumbUrl = p.url_t ?? p.url_m\n return {\n id: referenceId('flickr', canonicalUrl),\n modality: 'image',\n kind: 'photo',\n title: p.title || undefined,\n source: { providerId: 'flickr', sourceUrl: canonicalUrl },\n canonicalUrl,\n rights,\n verifiedAt: new Date().toISOString(),\n ...(thumbUrl ? { thumbnail: { url: thumbUrl } } : {}),\n ...(previewUrl ? { preview: { url: previewUrl, mediaType: 'image/jpeg', width: previewW, height: previewH } } : {}),\n ...(previewW && previewH ? { visual: { width: previewW, height: previewH } } : {}),\n relevance: 0,\n raw: p,\n }\n}\n\nexport function flickr(config: FlickrConfig) {\n return defineProvider({\n id: 'flickr',\n modalities: ['image'],\n kinds: ['photo'],\n description: 'Community photography with per-item CC licensing (Flickr)',\n capabilities: { controls: ['sort', 'safety', 'license.commercial', 'license.modification', 'license.allowUnknown', 'creator.id', 'page'] },\n async search(q: NormalizedQuery, ctx: ProviderContext): Promise<Reference[]> {\n const opts = q.providerOptions as FlickrSearchOptions | undefined\n const url = new URL('https://api.flickr.com/services/rest/')\n url.searchParams.set('method', 'flickr.photos.search')\n url.searchParams.set('api_key', config.apiKey)\n url.searchParams.set('text', q.text)\n url.searchParams.set('license', opts?.licenseFilter ?? flickrLicenseForControls(q.controls?.license) ?? config.licenseFilter ?? DEFAULT_LICENSE_FILTER)\n url.searchParams.set('content_type', '1') // photos only (no screenshots/other)\n url.searchParams.set('media', 'photos')\n url.searchParams.set('sort', 'relevance')\n setIfString(url, 'sort', opts?.sort ?? flickrSort(q.controls?.sort), ['date-posted-asc', 'date-posted-desc', 'date-taken-asc', 'date-taken-desc', 'interestingness-desc', 'interestingness-asc', 'relevance'])\n setIfSafeSearch(url, opts?.safeSearch ?? flickrSafeSearch(q.controls?.safety))\n setTags(url, opts?.tags)\n setIfString(url, 'tag_mode', opts?.tagMode, ['any', 'all'])\n setIfString(url, 'user_id', opts?.userId ?? q.controls?.creator?.id)\n setStringOrNumber(url, 'min_upload_date', opts?.minUploadDate)\n setStringOrNumber(url, 'max_upload_date', opts?.maxUploadDate)\n setStringOrNumber(url, 'min_taken_date', opts?.minTakenDate)\n setStringOrNumber(url, 'max_taken_date', opts?.maxTakenDate)\n setIfString(url, 'bbox', opts?.bbox)\n setIfInt(url, 'accuracy', opts?.accuracy, { min: 1, max: 16 })\n setIfStringList(url, 'machine_tags', opts?.machineTags)\n setIfString(url, 'machine_tag_mode', opts?.machineTagMode, ['any', 'all'])\n setIfString(url, 'group_id', opts?.groupId)\n setIfString(url, 'woe_id', opts?.woeId)\n setIfString(url, 'place_id', opts?.placeId)\n setBooleanFlag(url, 'has_geo', opts?.hasGeo)\n setIfInt(url, 'geo_context', opts?.geoContext, { min: 0, max: 2 })\n setIfString(url, 'lat', opts?.lat)\n setIfString(url, 'lon', opts?.lon)\n setStringOrNumber(url, 'radius', opts?.radius)\n setIfString(url, 'radius_units', opts?.radiusUnits, ['mi', 'km'])\n setBooleanFlag(url, 'is_commons', opts?.isCommons)\n setBooleanFlag(url, 'in_gallery', opts?.inGallery)\n setBooleanFlag(url, 'is_getty', opts?.isGetty)\n url.searchParams.set('extras', flickrExtras(opts?.extras))\n setIfPositiveInt(url, 'page', q.controls?.page)\n setIfInt(url, 'page', opts?.page, { min: 1 })\n url.searchParams.set('per_page', String(q.limit ?? 20))\n setIfInt(url, 'per_page', opts?.perPage, { min: 1, max: 500 })\n url.searchParams.set('format', 'json')\n url.searchParams.set('nojsoncallback', '1')\n const res = await ctx.fetch(url.toString(), { signal: ctx.signal })\n if (!res.ok) throw new Error(`flickr search failed: ${res.status}`)\n const json = (await res.json()) as FlickrResponse\n if (json.stat !== 'ok' || !json.photos) throw new Error(`flickr search error: stat=${json.stat}`)\n return json.photos.photo.map(toReference)\n },\n })\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@refkit/provider-flickr",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Flickr provider satellite for refkit.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -31,14 +31,14 @@
31
31
  }
32
32
  },
33
33
  "dependencies": {
34
- "@refkit/core": "0.6.1"
34
+ "@refkit/core": "0.8.0"
35
35
  },
36
36
  "files": [
37
37
  "dist",
38
38
  "LICENSE"
39
39
  ],
40
40
  "devDependencies": {
41
- "@refkit/provider-testkit": "0.0.2"
41
+ "@refkit/provider-testkit": "0.1.0"
42
42
  },
43
43
  "scripts": {
44
44
  "typecheck": "tsc --noEmit",