@cyanheads/libofcongress-mcp-server 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/AGENTS.md +388 -0
  2. package/CLAUDE.md +388 -0
  3. package/Dockerfile +83 -0
  4. package/LICENSE +201 -0
  5. package/README.md +316 -0
  6. package/changelog/0.1.x/0.1.0.md +22 -0
  7. package/changelog/0.1.x/0.1.1.md +29 -0
  8. package/changelog/0.2.x/0.2.0.md +13 -0
  9. package/changelog/0.2.x/0.2.1.md +14 -0
  10. package/changelog/template.md +119 -0
  11. package/dist/config/server-config.d.ts +13 -0
  12. package/dist/config/server-config.d.ts.map +1 -0
  13. package/dist/config/server-config.js +25 -0
  14. package/dist/config/server-config.js.map +1 -0
  15. package/dist/index.d.ts +7 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +35 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp-server/resources/definitions/libofcongress-item.resource.d.ts +9 -0
  20. package/dist/mcp-server/resources/definitions/libofcongress-item.resource.d.ts.map +1 -0
  21. package/dist/mcp-server/resources/definitions/libofcongress-item.resource.js +24 -0
  22. package/dist/mcp-server/resources/definitions/libofcongress-item.resource.js.map +1 -0
  23. package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.d.ts +35 -0
  24. package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.d.ts.map +1 -0
  25. package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.js +119 -0
  26. package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.js.map +1 -0
  27. package/dist/mcp-server/tools/definitions/libofcongress-get-item.tool.d.ts +32 -0
  28. package/dist/mcp-server/tools/definitions/libofcongress-get-item.tool.d.ts.map +1 -0
  29. package/dist/mcp-server/tools/definitions/libofcongress-get-item.tool.js +97 -0
  30. package/dist/mcp-server/tools/definitions/libofcongress-get-item.tool.js.map +1 -0
  31. package/dist/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.d.ts +29 -0
  32. package/dist/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.d.ts.map +1 -0
  33. package/dist/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.js +89 -0
  34. package/dist/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.js.map +1 -0
  35. package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.d.ts +40 -0
  36. package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.d.ts.map +1 -0
  37. package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.js +162 -0
  38. package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.js.map +1 -0
  39. package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.d.ts +24 -0
  40. package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.d.ts.map +1 -0
  41. package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.js +86 -0
  42. package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.js.map +1 -0
  43. package/dist/mcp-server/tools/definitions/libofcongress-search.tool.d.ts +50 -0
  44. package/dist/mcp-server/tools/definitions/libofcongress-search.tool.d.ts.map +1 -0
  45. package/dist/mcp-server/tools/definitions/libofcongress-search.tool.js +171 -0
  46. package/dist/mcp-server/tools/definitions/libofcongress-search.tool.js.map +1 -0
  47. package/dist/services/lc-linked-data/lc-linked-data-service.d.ts +17 -0
  48. package/dist/services/lc-linked-data/lc-linked-data-service.d.ts.map +1 -0
  49. package/dist/services/lc-linked-data/lc-linked-data-service.js +71 -0
  50. package/dist/services/lc-linked-data/lc-linked-data-service.js.map +1 -0
  51. package/dist/services/lc-linked-data/types.d.ts +11 -0
  52. package/dist/services/lc-linked-data/types.d.ts.map +1 -0
  53. package/dist/services/lc-linked-data/types.js +6 -0
  54. package/dist/services/lc-linked-data/types.js.map +1 -0
  55. package/dist/services/loc-api/loc-api-service.d.ts +65 -0
  56. package/dist/services/loc-api/loc-api-service.d.ts.map +1 -0
  57. package/dist/services/loc-api/loc-api-service.js +418 -0
  58. package/dist/services/loc-api/loc-api-service.js.map +1 -0
  59. package/dist/services/loc-api/types.d.ts +156 -0
  60. package/dist/services/loc-api/types.d.ts.map +1 -0
  61. package/dist/services/loc-api/types.js +6 -0
  62. package/dist/services/loc-api/types.js.map +1 -0
  63. package/package.json +92 -0
  64. package/server.json +127 -0
@@ -0,0 +1,418 @@
1
+ /**
2
+ * @fileoverview LOC JSON API service — wraps www.loc.gov with rate limiting, retry, and response normalization.
3
+ * @module services/loc-api/loc-api-service
4
+ */
5
+ import { notFound, rateLimited, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
6
+ import { getServerConfig } from '../../config/server-config.js';
7
+ const LOC_BASE = 'https://www.loc.gov';
8
+ /** Format slug → LOC endpoint path segment */
9
+ const FORMAT_SLUG_MAP = {
10
+ photo: 'photos',
11
+ map: 'maps',
12
+ newspaper: 'newspapers',
13
+ manuscript: 'manuscripts',
14
+ audio: 'audio',
15
+ film: 'film-and-videos',
16
+ book: 'books',
17
+ 'notated-music': 'notated-music',
18
+ };
19
+ /**
20
+ * Rate-limiting state: tracks when the 1-hour block expires.
21
+ * Stored in module-level variable (single service instance per process).
22
+ */
23
+ let rateLimitBlockedUntil = 0;
24
+ /** Paces requests to stay under 20 req/min: resolves after the configured delay. */
25
+ let lastRequestAt = 0;
26
+ async function pace(delayMs) {
27
+ const now = Date.now();
28
+ const elapsed = now - lastRequestAt;
29
+ if (elapsed < delayMs) {
30
+ await new Promise((resolve) => setTimeout(resolve, delayMs - elapsed));
31
+ }
32
+ lastRequestAt = Date.now();
33
+ }
34
+ function extractFirstString(value) {
35
+ if (!value)
36
+ return;
37
+ if (Array.isArray(value))
38
+ return value[0];
39
+ return value;
40
+ }
41
+ function extractStringArray(value) {
42
+ if (!value)
43
+ return [];
44
+ if (Array.isArray(value))
45
+ return value;
46
+ return [value];
47
+ }
48
+ function extractId(result) {
49
+ // LOC IDs come as full URLs like https://www.loc.gov/item/2009632251/
50
+ // or as short strings like loc.pnp.ppmsc.02404
51
+ const rawId = result.id ?? result.url ?? '';
52
+ // Strip URL to just the path component's last segment
53
+ const urlMatch = rawId.match(/\/item\/([^/]+)\/?$/);
54
+ if (urlMatch?.[1])
55
+ return urlMatch[1];
56
+ return rawId.replace(/^https?:\/\/[^/]+\//, '').replace(/\/$/, '');
57
+ }
58
+ function normalizeSearchResult(result) {
59
+ const title = extractFirstString(result.title) ?? 'Untitled';
60
+ const description = Array.isArray(result.description)
61
+ ? result.description.join(' ')
62
+ : result.description;
63
+ const format = (result.original_format ?? result.online_format ?? [])[0] ?? undefined;
64
+ const id = extractId(result);
65
+ const url = result.url ?? `${LOC_BASE}/item/${id}/`;
66
+ return {
67
+ id,
68
+ title,
69
+ ...(result.date && { date: result.date }),
70
+ ...(description && { description }),
71
+ ...(format && { format }),
72
+ url,
73
+ };
74
+ }
75
+ function normalizePagination(raw, page, limit) {
76
+ const total = raw?.total ?? raw?.results ?? 0;
77
+ const perPage = raw?.perpage ?? limit;
78
+ const pages = raw?.pages ?? (total > 0 ? Math.ceil(total / perPage) : 1);
79
+ const hasNext = page < pages;
80
+ return { total, page, perPage, pages, hasNext };
81
+ }
82
+ export class LocApiService {
83
+ userAgent;
84
+ requestDelayMs;
85
+ constructor(_config, _storage) {
86
+ const serverConfig = getServerConfig();
87
+ this.userAgent = serverConfig.userAgent;
88
+ this.requestDelayMs = serverConfig.requestDelayMs;
89
+ }
90
+ checkRateLimit() {
91
+ if (rateLimitBlockedUntil > Date.now()) {
92
+ const minutesLeft = Math.ceil((rateLimitBlockedUntil - Date.now()) / 60_000);
93
+ throw rateLimited(`LOC API rate limit exceeded. Requests are blocked for approximately ${minutesLeft} more minute(s). Reduce request frequency to stay under 20 req/min.`, {
94
+ reason: 'rate_limit_exceeded',
95
+ blockedUntil: new Date(rateLimitBlockedUntil).toISOString(),
96
+ recovery: {
97
+ hint: 'Wait for the block to expire before retrying. Reduce the number of API calls per minute.',
98
+ },
99
+ });
100
+ }
101
+ }
102
+ async fetch(url, ctx, opts) {
103
+ this.checkRateLimit();
104
+ await pace(this.requestDelayMs);
105
+ ctx.log.debug('LOC API request', { url });
106
+ const response = await fetch(url, {
107
+ headers: { 'User-Agent': this.userAgent, Accept: 'application/json' },
108
+ signal: ctx.signal,
109
+ });
110
+ if (response.status === 429) {
111
+ // Block for 1 hour
112
+ rateLimitBlockedUntil = Date.now() + 60 * 60 * 1000;
113
+ throw rateLimited('LOC API rate limit exceeded. Requests are blocked for approximately 1 hour. Reduce request frequency to stay under 20 req/min.', {
114
+ reason: 'rate_limit_exceeded',
115
+ recovery: {
116
+ hint: 'Wait at least 1 hour before retrying. Reduce request frequency to stay under 20 req/min.',
117
+ },
118
+ });
119
+ }
120
+ if (response.status === 404) {
121
+ return response; // Caller handles 404
122
+ }
123
+ // Callers can opt-in to receiving certain non-2xx statuses for graceful handling
124
+ if (opts?.allowStatus?.includes(response.status)) {
125
+ return response;
126
+ }
127
+ if (!response.ok) {
128
+ throw serviceUnavailable(`LOC API returned HTTP ${response.status}`, {
129
+ status: response.status,
130
+ });
131
+ }
132
+ return response;
133
+ }
134
+ async fetchJson(url, ctx) {
135
+ const response = await this.fetch(url, ctx);
136
+ if (response.status === 404) {
137
+ throw notFound('LOC resource not found', { url });
138
+ }
139
+ const text = await response.text();
140
+ if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(text)) {
141
+ throw serviceUnavailable('LOC API returned HTML — may be rate-limited or temporarily unavailable.', { url });
142
+ }
143
+ return JSON.parse(text);
144
+ }
145
+ /**
146
+ * Fetch a LOC search endpoint, treating HTTP 400 and 520 as out-of-range page responses
147
+ * (LOC returns these for page numbers beyond the result set).
148
+ * Returns null when the page is out of range.
149
+ */
150
+ async fetchSearchJson(url, ctx) {
151
+ const response = await this.fetch(url, ctx, { allowStatus: [400, 520] });
152
+ if (response.status === 404) {
153
+ throw notFound('LOC resource not found', { url });
154
+ }
155
+ // LOC returns 400 or 520 for out-of-range page numbers — treat as empty
156
+ if (response.status === 400 || response.status === 520) {
157
+ ctx.log.debug('LOC search returned out-of-range page', { status: response.status, url });
158
+ return null;
159
+ }
160
+ const text = await response.text();
161
+ if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(text)) {
162
+ throw serviceUnavailable('LOC API returned HTML — may be rate-limited or temporarily unavailable.', { url });
163
+ }
164
+ return JSON.parse(text);
165
+ }
166
+ /** Search LOC digital collections */
167
+ async search(params, ctx) {
168
+ const limit = Math.min(params.limit ?? 25, 100);
169
+ const page = params.page ?? 1;
170
+ const formatSlug = params.format ? FORMAT_SLUG_MAP[params.format] : undefined;
171
+ const endpoint = formatSlug ? `${LOC_BASE}/${formatSlug}/` : `${LOC_BASE}/search/`;
172
+ const qs = new URLSearchParams({ fo: 'json', q: params.query, at: 'results,pagination' });
173
+ qs.set('c', String(limit));
174
+ qs.set('sp', String(page));
175
+ if (params.dateStart !== undefined || params.dateEnd !== undefined) {
176
+ const start = params.dateStart ?? 1600;
177
+ const end = params.dateEnd ?? new Date().getFullYear();
178
+ qs.set('dates', `${start}/${end}`);
179
+ }
180
+ const fa = [];
181
+ if (params.subject)
182
+ fa.push(`subject:${params.subject}`);
183
+ if (params.location)
184
+ fa.push(`location:${params.location}`);
185
+ if (fa.length > 0)
186
+ qs.set('fa', fa.join('|'));
187
+ const url = `${endpoint}?${qs}`;
188
+ const data = await this.fetchSearchJson(url, ctx);
189
+ if (data === null) {
190
+ // Out-of-range page — return empty with pagination stub so callers can surface a message
191
+ return { items: [], pagination: normalizePagination(undefined, page, limit) };
192
+ }
193
+ const rawResults = data.results ?? data.content?.results ?? [];
194
+ const rawPagination = data.pagination ?? data.content?.pagination;
195
+ const items = rawResults.map(normalizeSearchResult);
196
+ return { items, pagination: normalizePagination(rawPagination, page, limit) };
197
+ }
198
+ /** Get full metadata for a single LOC item */
199
+ async getItem(itemId, ctx) {
200
+ const url = `${LOC_BASE}/item/${encodeURIComponent(itemId)}/?fo=json&at=item,resources,related_items`;
201
+ const data = await this.fetchJson(url, ctx);
202
+ const item = data.item;
203
+ if (!item) {
204
+ throw notFound(`LOC item not found: ${itemId}`, { itemId });
205
+ }
206
+ const title = extractFirstString(item.title) ?? 'Untitled';
207
+ const physDesc = extractFirstString(item.physical_description ?? item.medium);
208
+ // Collect resource links: flatten nested file arrays
209
+ const resourceLinks = [];
210
+ for (const resource of data.resources ?? []) {
211
+ if (resource.url)
212
+ resourceLinks.push(resource.url);
213
+ if (resource.image)
214
+ resourceLinks.push(resource.image);
215
+ if (resource.pdf)
216
+ resourceLinks.push(resource.pdf);
217
+ for (const fileGroup of resource.files ?? []) {
218
+ for (const file of fileGroup) {
219
+ if (file.url)
220
+ resourceLinks.push(file.url);
221
+ }
222
+ }
223
+ }
224
+ const relatedItems = [];
225
+ for (const rel of data.related_items ?? []) {
226
+ if (rel.id)
227
+ relatedItems.push(rel.id);
228
+ else if (rel.url)
229
+ relatedItems.push(rel.url);
230
+ }
231
+ // Also check item.related_items
232
+ relatedItems.push(...(item.related_items ?? []));
233
+ const rights = item.rights_information ?? item.rights;
234
+ return {
235
+ item_id: itemId,
236
+ title,
237
+ ...(item.date && { date: item.date }),
238
+ contributors: extractStringArray(item.contributor),
239
+ subject_headings: extractStringArray(item.subject),
240
+ notes: extractStringArray(item.notes),
241
+ ...(rights && { rights_information: rights }),
242
+ ...(physDesc && { physical_description: physDesc }),
243
+ resource_links: [...new Set(resourceLinks)],
244
+ related_items: [...new Set(relatedItems)],
245
+ url: item.url ?? `${LOC_BASE}/item/${itemId}/`,
246
+ };
247
+ }
248
+ /** Search historical newspaper pages via the /newspapers/ endpoint */
249
+ async searchNewspapers(params, ctx) {
250
+ const limit = Math.min(params.limit ?? 25, 100);
251
+ const page = params.page ?? 1;
252
+ const qs = new URLSearchParams({ fo: 'json', q: params.query, at: 'results,pagination' });
253
+ qs.set('c', String(limit));
254
+ qs.set('sp', String(page));
255
+ if (params.dateStart !== undefined || params.dateEnd !== undefined) {
256
+ const start = params.dateStart ?? 1770;
257
+ const end = params.dateEnd ?? 1963;
258
+ qs.set('dates', `${start}/${end}`);
259
+ }
260
+ const fa = [];
261
+ if (params.state)
262
+ fa.push(`location:${params.state.toLowerCase()}`);
263
+ if (params.newspaperTitle)
264
+ fa.push(`partof_title:${params.newspaperTitle}`);
265
+ if (fa.length > 0)
266
+ qs.set('fa', fa.join('|'));
267
+ const url = `${LOC_BASE}/newspapers/?${qs}`;
268
+ const data = await this.fetchSearchJson(url, ctx);
269
+ if (data === null) {
270
+ return { items: [], pagination: normalizePagination(undefined, page, limit) };
271
+ }
272
+ const rawResults = data.results ?? data.content?.results ?? [];
273
+ const rawPagination = data.pagination ?? data.content?.pagination;
274
+ const items = rawResults.map((r) => {
275
+ const descArr = Array.isArray(r.description)
276
+ ? r.description
277
+ : r.description
278
+ ? [r.description]
279
+ : [];
280
+ const description = descArr.slice(0, 3).join(' ').substring(0, 500);
281
+ // partof_title holds the canonical publication title for Chronicling America pages.
282
+ // Fall back to last entry of partof if partof_title absent.
283
+ const rawTitle = extractFirstString(r.partof_title) ??
284
+ (Array.isArray(r.partof) ? r.partof[r.partof.length - 1] : r.partof);
285
+ // location_state is the US state; location[0] is often a city or "united states".
286
+ const rawState = extractFirstString(r.location_state) ?? extractFirstString(r.location);
287
+ return {
288
+ url: r.url ?? '',
289
+ title: extractFirstString(r.title) ?? 'Untitled',
290
+ ...(description && { description }),
291
+ ...(r.date && { date: r.date }),
292
+ ...(rawState && { state: rawState }),
293
+ ...(rawTitle && { newspaper_title: rawTitle }),
294
+ };
295
+ });
296
+ return { items, pagination: normalizePagination(rawPagination, page, limit) };
297
+ }
298
+ /** Retrieve full OCR text for a specific newspaper page via its resource URL */
299
+ async getNewspaperPage(pageUrl, ctx) {
300
+ // Strip search-specific params (q=) that LOC echoes into fulltext_file URLs,
301
+ // causing tile.loc.gov OCR requests to 404. Keep sp= (selects the page within a resource).
302
+ const parsed = new URL(pageUrl);
303
+ parsed.searchParams.delete('q');
304
+ const cleanUrl = parsed.toString();
305
+ // Build the resource endpoint URL
306
+ const resourceUrl = cleanUrl.includes('?')
307
+ ? `${cleanUrl}&fo=json&at=resource`
308
+ : `${cleanUrl}?fo=json&at=resource`;
309
+ const resourceData = await this.fetchJson(resourceUrl, ctx);
310
+ const res = resourceData.resource;
311
+ if (!res) {
312
+ throw notFound(`LOC newspaper page not found: ${pageUrl}`, { pageUrl });
313
+ }
314
+ // Extract metadata
315
+ const title = res.title;
316
+ const dateIssued = res.date_issued;
317
+ const sequence = res.sequence;
318
+ // Try to get state from part_of or notes
319
+ let state;
320
+ const partOf = res.part_of;
321
+ if (partOf) {
322
+ // part_of is like "Oklahoma newspapers" or a title string
323
+ const stateMatch = partOf.match(/^([A-Za-z ]+)\s+newspapers?/i);
324
+ if (stateMatch?.[1])
325
+ state = stateMatch[1].trim();
326
+ }
327
+ // Fetch full OCR text if fulltext_file is available
328
+ let ocrText = '';
329
+ let ocrAvailable = false;
330
+ if (res.fulltext_file) {
331
+ ocrAvailable = true;
332
+ try {
333
+ // fulltext_file is already a fully-qualified URL from the LOC resource API.
334
+ // Strip q= to avoid echoed search terms causing tile.loc.gov 404s.
335
+ const fulltextUrl = new URL(res.fulltext_file);
336
+ fulltextUrl.searchParams.delete('q');
337
+ const textUrl = fulltextUrl.toString();
338
+ ctx.log.debug('Fetching OCR text', { url: textUrl });
339
+ const textResponse = await fetch(textUrl, {
340
+ headers: { 'User-Agent': this.userAgent },
341
+ signal: ctx.signal,
342
+ });
343
+ if (textResponse.ok) {
344
+ const altoXml = await textResponse.text();
345
+ // Extract plain text from ALTO XML <String CONTENT="..."> attributes
346
+ ocrText =
347
+ altoXml
348
+ .match(/CONTENT="([^"]*)"/g)
349
+ ?.map((m) => m.slice(9, -1))
350
+ .join(' ') ?? '';
351
+ }
352
+ else {
353
+ // OCR service unavailable — return empty text, still mark as available
354
+ ctx.log.warning('OCR text service returned error', {
355
+ status: textResponse.status,
356
+ });
357
+ }
358
+ }
359
+ catch (err) {
360
+ ctx.log.warning('OCR text fetch failed', { error: String(err) });
361
+ }
362
+ }
363
+ return {
364
+ page_url: pageUrl,
365
+ ...(title && { newspaper_title: title }),
366
+ ...(dateIssued && { date: dateIssued }),
367
+ ...(state && { state }),
368
+ ...(res.part_of && { edition: res.part_of }),
369
+ ...(sequence !== undefined && { sequence }),
370
+ ocr_text: ocrText,
371
+ ocr_available: ocrAvailable,
372
+ };
373
+ }
374
+ /** Browse LOC curated digital collections */
375
+ async browseCollections(params, ctx) {
376
+ const limit = Math.min(params.limit ?? 25, 100);
377
+ const page = params.page ?? 1;
378
+ const qs = new URLSearchParams({ fo: 'json', at: 'results,pagination' });
379
+ qs.set('c', String(limit));
380
+ qs.set('sp', String(page));
381
+ if (params.query)
382
+ qs.set('q', params.query);
383
+ const url = `${LOC_BASE}/collections/?${qs}`;
384
+ const data = await this.fetchSearchJson(url, ctx);
385
+ if (data === null) {
386
+ return { items: [], pagination: normalizePagination(undefined, page, limit) };
387
+ }
388
+ const rawResults = data.results ?? data.content?.results ?? [];
389
+ const rawPagination = data.pagination ?? data.content?.pagination;
390
+ const items = rawResults.map((r) => {
391
+ const title = extractFirstString(r.title) ?? 'Untitled';
392
+ const description = Array.isArray(r.description) ? r.description.join(' ') : r.description;
393
+ const itemUrl = r.url ?? '';
394
+ // Extract slug from URL: https://www.loc.gov/collections/civil-war-glass-negatives/ → civil-war-glass-negatives
395
+ const slugMatch = itemUrl.match(/\/collections\/([^/]+)\/?$/);
396
+ const slug = slugMatch?.[1] ?? title.toLowerCase().replace(/\s+/g, '-');
397
+ return {
398
+ slug,
399
+ title,
400
+ ...(description && { description }),
401
+ url: itemUrl,
402
+ };
403
+ });
404
+ return { items, pagination: normalizePagination(rawPagination, page, limit) };
405
+ }
406
+ }
407
+ // --- Init/accessor pattern ---
408
+ let _service;
409
+ export function initLocApiService(config, storage) {
410
+ _service = new LocApiService(config, storage);
411
+ }
412
+ export function getLocApiService() {
413
+ if (!_service) {
414
+ throw new Error('LocApiService not initialized — call initLocApiService() in setup()');
415
+ }
416
+ return _service;
417
+ }
418
+ //# sourceMappingURL=loc-api-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loc-api-service.js","sourceRoot":"","sources":["../../../src/services/loc-api/loc-api-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * @fileoverview Domain types for the LOC JSON API service.
3
+ * @module services/loc-api/types
4
+ */
5
+ /** Raw result item from LOC /search/ and format-specific endpoints */
6
+ export type RawLocSearchResult = {
7
+ id?: string;
8
+ url?: string;
9
+ title?: string | string[];
10
+ date?: string;
11
+ description?: string | string[];
12
+ original_format?: string[];
13
+ online_format?: string[];
14
+ subject?: string[];
15
+ contributor?: string[];
16
+ location?: string[];
17
+ /** State-level location facet (e.g. "new york (state)") — more precise than location[] for newspapers */
18
+ location_state?: string[];
19
+ language?: string[];
20
+ /** Canonical publication title for Chronicling America results (e.g. "The Evening World") */
21
+ partof_title?: string[];
22
+ /** Hierarchy of containing collections/publications */
23
+ partof?: string[];
24
+ /** Number of digitized items */
25
+ item?: Record<string, unknown>;
26
+ };
27
+ /** Raw pagination object from LOC search responses */
28
+ export type RawLocPagination = {
29
+ from?: number;
30
+ to?: number;
31
+ total?: number;
32
+ perpage?: number;
33
+ results?: number;
34
+ page?: number;
35
+ last?: number;
36
+ of?: number;
37
+ pages?: number;
38
+ next?: string;
39
+ previous?: string;
40
+ };
41
+ /** Raw LOC search API response envelope */
42
+ export type RawLocSearchResponse = {
43
+ results?: RawLocSearchResult[];
44
+ pagination?: RawLocPagination;
45
+ content?: {
46
+ results?: RawLocSearchResult[];
47
+ pagination?: RawLocPagination;
48
+ };
49
+ };
50
+ /** Raw LOC item detail response */
51
+ export type RawLocItemResponse = {
52
+ item?: {
53
+ id?: string;
54
+ title?: string | string[];
55
+ date?: string;
56
+ created_published?: string | string[];
57
+ contributor?: string[];
58
+ subject?: string[];
59
+ notes?: string[];
60
+ rights?: string;
61
+ rights_information?: string;
62
+ medium?: string | string[];
63
+ physical_description?: string | string[];
64
+ summary?: string | string[];
65
+ language?: string[];
66
+ location?: string[];
67
+ related_items?: string[];
68
+ url?: string;
69
+ other_title?: string[];
70
+ number_former_id?: string[];
71
+ call_number?: string[];
72
+ type?: string[];
73
+ format?: string[];
74
+ original_format?: string[];
75
+ access_restricted?: boolean;
76
+ online_format?: string[];
77
+ };
78
+ resources?: Array<{
79
+ url?: string;
80
+ caption?: string;
81
+ image?: string;
82
+ pdf?: string;
83
+ files?: Array<Array<{
84
+ url?: string;
85
+ mimeType?: string;
86
+ size?: number;
87
+ levels?: number;
88
+ info?: string;
89
+ }>>;
90
+ }>;
91
+ related_items?: Array<{
92
+ id?: string;
93
+ title?: string;
94
+ url?: string;
95
+ }>;
96
+ };
97
+ /** Normalized item summary returned from search */
98
+ export type LocItemSummary = {
99
+ id: string;
100
+ title: string;
101
+ date?: string;
102
+ description?: string;
103
+ format?: string;
104
+ url: string;
105
+ };
106
+ /** Normalized pagination info */
107
+ export type LocPagination = {
108
+ total: number;
109
+ page: number;
110
+ perPage: number;
111
+ pages: number;
112
+ hasNext: boolean;
113
+ };
114
+ /** Normalized full item record */
115
+ export type LocItemDetail = {
116
+ item_id: string;
117
+ title: string;
118
+ date?: string;
119
+ contributors: string[];
120
+ subject_headings: string[];
121
+ notes: string[];
122
+ rights_information?: string;
123
+ physical_description?: string;
124
+ resource_links: string[];
125
+ related_items: string[];
126
+ url: string;
127
+ };
128
+ /** Normalized newspaper page search result */
129
+ export type LocNewspaperPage = {
130
+ url: string;
131
+ title: string;
132
+ description?: string;
133
+ date?: string;
134
+ state?: string;
135
+ newspaper_title?: string;
136
+ };
137
+ /** Normalized newspaper page full detail */
138
+ export type LocNewspaperPageDetail = {
139
+ page_url: string;
140
+ newspaper_title?: string;
141
+ date?: string;
142
+ state?: string;
143
+ edition?: string;
144
+ sequence?: number;
145
+ ocr_text: string;
146
+ ocr_available: boolean;
147
+ };
148
+ /** Normalized collection record */
149
+ export type LocCollection = {
150
+ slug: string;
151
+ title: string;
152
+ description?: string;
153
+ item_count?: number;
154
+ url: string;
155
+ };
156
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/loc-api/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Domain types for the LOC JSON API service.
3
+ * @module services/loc-api/types
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/loc-api/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}