@refkit/provider-flickr 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/index.ts
2
2
  import {
3
3
  defineProvider,
4
- referenceId,
4
+ okJson,
5
5
  ccVersionFor,
6
6
  setIfString,
7
7
  setIfInt,
@@ -97,31 +97,27 @@ function flickrSafeSearch(safety) {
97
97
  }
98
98
  function toReference(p) {
99
99
  const { license, version } = mapFlickrLicense(p.license);
100
- const canonicalUrl = `https://www.flickr.com/photos/${p.owner}/${p.id}`;
100
+ const sourceUrl = `https://www.flickr.com/photos/${p.owner}/${p.id}`;
101
101
  const rights = {
102
102
  license,
103
103
  licenseVersion: ccVersionFor(license, version),
104
104
  author: p.ownername || void 0,
105
105
  rehostPolicy: "cache-allowed",
106
- raw: { sourceTerms: "https://www.flickr.com/help/terms", sourceUrl: canonicalUrl }
106
+ raw: { sourceTerms: "https://www.flickr.com/help/terms", sourceUrl }
107
107
  };
108
108
  const previewUrl = p.url_l ?? p.url_m;
109
109
  const previewW = p.url_l ? p.width_l : p.width_m;
110
110
  const previewH = p.url_l ? p.height_l : p.height_m;
111
111
  const thumbUrl = p.url_t ?? p.url_m;
112
112
  return {
113
- id: referenceId("flickr", canonicalUrl),
114
113
  modality: "image",
115
114
  kind: "photo",
116
115
  title: p.title || void 0,
117
- source: { providerId: "flickr", sourceUrl: canonicalUrl },
118
- canonicalUrl,
116
+ sourceUrl,
119
117
  rights,
120
- verifiedAt: (/* @__PURE__ */ new Date()).toISOString(),
121
118
  ...thumbUrl ? { thumbnail: { url: thumbUrl } } : {},
122
119
  ...previewUrl ? { preview: { url: previewUrl, mediaType: "image/jpeg", width: previewW, height: previewH } } : {},
123
120
  ...previewW && previewH ? { visual: { width: previewW, height: previewH } } : {},
124
- relevance: 0,
125
121
  raw: p
126
122
  };
127
123
  }
@@ -175,8 +171,7 @@ function flickr(config) {
175
171
  url.searchParams.set("format", "json");
176
172
  url.searchParams.set("nojsoncallback", "1");
177
173
  const res = await ctx.fetch(url.toString(), { signal: ctx.signal });
178
- if (!res.ok) throw new Error(`flickr search failed: ${res.status}`);
179
- const json = await res.json();
174
+ const json = await okJson(res, "flickr search");
180
175
  if (json.stat !== "ok" || !json.photos) throw new Error(`flickr search error: stat=${json.stat}`);
181
176
  return json.photos.photo.map(toReference);
182
177
  }
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 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":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n defineProvider, okJson, ccVersionFor,\n setIfString, setIfInt, setIfStringList,\n type EmittedReference, 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): EmittedReference {\n const { license, version } = mapFlickrLicense(p.license)\n const sourceUrl = `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 },\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 modality: 'image',\n kind: 'photo',\n title: p.title || undefined,\n sourceUrl,\n rights,\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 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<EmittedReference[]> {\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 const json = await okJson<FlickrResponse>(res, 'flickr search')\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.4.0",
3
+ "version": "0.5.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.8.0"
34
+ "@refkit/core": "0.9.0"
35
35
  },
36
36
  "files": [
37
37
  "dist",
38
38
  "LICENSE"
39
39
  ],
40
40
  "devDependencies": {
41
- "@refkit/provider-testkit": "0.1.0"
41
+ "@refkit/provider-testkit": "0.1.1"
42
42
  },
43
43
  "scripts": {
44
44
  "typecheck": "tsc --noEmit",