@littlebearapps/australian-history-mcp 0.6.0 → 0.6.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 (49) hide show
  1. package/package.json +1 -1
  2. package/dist/clients/datagovau_client.d.ts +0 -61
  3. package/dist/clients/datagovau_client.d.ts.map +0 -1
  4. package/dist/clients/datagovau_client.js +0 -421
  5. package/dist/clients/datagovau_client.js.map +0 -1
  6. package/dist/clients/prov_client.d.ts +0 -64
  7. package/dist/clients/prov_client.d.ts.map +0 -1
  8. package/dist/clients/prov_client.js +0 -393
  9. package/dist/clients/prov_client.js.map +0 -1
  10. package/dist/clients/trove_client.d.ts +0 -77
  11. package/dist/clients/trove_client.d.ts.map +0 -1
  12. package/dist/clients/trove_client.js +0 -374
  13. package/dist/clients/trove_client.js.map +0 -1
  14. package/dist/tools/datagovau_browse.d.ts +0 -96
  15. package/dist/tools/datagovau_browse.d.ts.map +0 -1
  16. package/dist/tools/datagovau_browse.js +0 -297
  17. package/dist/tools/datagovau_browse.js.map +0 -1
  18. package/dist/tools/datagovau_dataset.d.ts +0 -79
  19. package/dist/tools/datagovau_dataset.d.ts.map +0 -1
  20. package/dist/tools/datagovau_dataset.js +0 -246
  21. package/dist/tools/datagovau_dataset.js.map +0 -1
  22. package/dist/tools/datagovau_search.d.ts +0 -58
  23. package/dist/tools/datagovau_search.d.ts.map +0 -1
  24. package/dist/tools/datagovau_search.js +0 -112
  25. package/dist/tools/datagovau_search.js.map +0 -1
  26. package/dist/tools/harvest.d.ts +0 -175
  27. package/dist/tools/harvest.d.ts.map +0 -1
  28. package/dist/tools/harvest.js +0 -426
  29. package/dist/tools/harvest.js.map +0 -1
  30. package/dist/tools/prov_images.d.ts +0 -38
  31. package/dist/tools/prov_images.d.ts.map +0 -1
  32. package/dist/tools/prov_images.js +0 -87
  33. package/dist/tools/prov_images.js.map +0 -1
  34. package/dist/tools/prov_search.d.ts +0 -60
  35. package/dist/tools/prov_search.d.ts.map +0 -1
  36. package/dist/tools/prov_search.js +0 -131
  37. package/dist/tools/prov_search.js.map +0 -1
  38. package/dist/tools/trove_newspaper.d.ts +0 -100
  39. package/dist/tools/trove_newspaper.d.ts.map +0 -1
  40. package/dist/tools/trove_newspaper.js +0 -282
  41. package/dist/tools/trove_newspaper.js.map +0 -1
  42. package/dist/tools/trove_search.d.ts +0 -62
  43. package/dist/tools/trove_search.d.ts.map +0 -1
  44. package/dist/tools/trove_search.js +0 -143
  45. package/dist/tools/trove_search.js.map +0 -1
  46. package/dist/types.d.ts +0 -231
  47. package/dist/types.d.ts.map +0 -1
  48. package/dist/types.js +0 -5
  49. package/dist/types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@littlebearapps/australian-history-mcp",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "MCP server for Australian history - PROV, Trove, data.gov.au, Museums Victoria, ALA, NMA, VHD, ACMI, PM Transcripts, IIIF, GA HAP",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,61 +0,0 @@
1
- /**
2
- * data.gov.au (CKAN) API Client
3
- *
4
- * data.gov.au is Australia's national open data portal, powered by CKAN.
5
- * It aggregates datasets from federal, state, and local government agencies.
6
- * No API key is required for read-only access.
7
- *
8
- * API Documentation: https://docs.ckan.org/en/latest/api/
9
- * Portal: https://data.gov.au/
10
- */
11
- import type { DataGovAUSearchParams, DataGovAUSearchResult, DataGovAUDataset, DataGovAUResource, DataGovAUOrganization, DataGovAUGroup, DataGovAUDatastoreParams, DataGovAUDatastoreResult } from '../types.js';
12
- export declare class DataGovAUClient {
13
- private readonly baseUrl;
14
- constructor();
15
- /**
16
- * Search datasets (packages) in data.gov.au
17
- */
18
- search(params: DataGovAUSearchParams): Promise<DataGovAUSearchResult>;
19
- /**
20
- * Get a specific dataset by ID or name
21
- */
22
- getDataset(idOrName: string): Promise<DataGovAUDataset | null>;
23
- /**
24
- * List all dataset names (for discovery)
25
- */
26
- listDatasets(limit?: number, offset?: number): Promise<string[]>;
27
- /**
28
- * Get a specific resource by ID
29
- */
30
- getResource(resourceId: string): Promise<DataGovAUResource | null>;
31
- /**
32
- * Search the datastore (tabular data) for a resource
33
- */
34
- datastoreSearch(params: DataGovAUDatastoreParams): Promise<DataGovAUDatastoreResult | null>;
35
- /**
36
- * List all organizations
37
- */
38
- listOrganizations(allFields?: boolean, limit?: number): Promise<DataGovAUOrganization[]>;
39
- /**
40
- * Get organization details
41
- */
42
- getOrganization(idOrName: string, includeDatasets?: boolean): Promise<DataGovAUOrganization | null>;
43
- /**
44
- * List all groups (categories)
45
- */
46
- listGroups(allFields?: boolean): Promise<DataGovAUGroup[]>;
47
- /**
48
- * Get group details
49
- */
50
- getGroup(idOrName: string, includeDatasets?: boolean): Promise<DataGovAUGroup | null>;
51
- /**
52
- * List all tags
53
- */
54
- listTags(query?: string): Promise<string[]>;
55
- private parseDataset;
56
- private parseResource;
57
- private parseOrganization;
58
- private parseGroup;
59
- }
60
- export declare const dataGovAUClient: DataGovAUClient;
61
- //# sourceMappingURL=datagovau_client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"datagovau_client.d.ts","sourceRoot":"","sources":["../../src/clients/datagovau_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,aAAa,CAAC;AAIrB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;;IAUjC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsE3E;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA+BpE;;OAEG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BtE;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA8BxE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAgEjG;;OAEG;IACG,iBAAiB,CAAC,SAAS,UAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAwC3F;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAuCvG;;OAEG;IACG,UAAU,CAAC,SAAS,UAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC7D;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAuCzF;;OAEG;IACG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCjD,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,UAAU;CAUnB;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -1,421 +0,0 @@
1
- /**
2
- * data.gov.au (CKAN) API Client
3
- *
4
- * data.gov.au is Australia's national open data portal, powered by CKAN.
5
- * It aggregates datasets from federal, state, and local government agencies.
6
- * No API key is required for read-only access.
7
- *
8
- * API Documentation: https://docs.ckan.org/en/latest/api/
9
- * Portal: https://data.gov.au/
10
- */
11
- const DATAGOVAU_API_BASE = 'https://data.gov.au/data/api/3/action';
12
- export class DataGovAUClient {
13
- baseUrl;
14
- constructor() {
15
- this.baseUrl = DATAGOVAU_API_BASE;
16
- }
17
- // =========================================================================
18
- // Dataset/Package Operations
19
- // =========================================================================
20
- /**
21
- * Search datasets (packages) in data.gov.au
22
- */
23
- async search(params) {
24
- const urlParams = new URLSearchParams();
25
- // Main query
26
- if (params.query) {
27
- urlParams.set('q', params.query);
28
- }
29
- // Filter queries
30
- const fqParts = [];
31
- if (params.organization) {
32
- fqParts.push(`organization:${params.organization}`);
33
- }
34
- if (params.groups && params.groups.length > 0) {
35
- params.groups.forEach(g => fqParts.push(`groups:${g}`));
36
- }
37
- if (params.tags && params.tags.length > 0) {
38
- params.tags.forEach(t => fqParts.push(`tags:${t}`));
39
- }
40
- if (params.format) {
41
- fqParts.push(`res_format:${params.format}`);
42
- }
43
- if (fqParts.length > 0) {
44
- urlParams.set('fq', fqParts.join(' AND '));
45
- }
46
- // Pagination
47
- urlParams.set('rows', (params.limit ?? 20).toString());
48
- urlParams.set('start', (params.offset ?? 0).toString());
49
- // Sorting
50
- if (params.sort) {
51
- urlParams.set('sort', params.sort);
52
- }
53
- const url = `${this.baseUrl}/package_search?${urlParams.toString()}`;
54
- try {
55
- const response = await fetch(url);
56
- if (!response.ok) {
57
- throw new Error(`data.gov.au API error: ${response.status} ${response.statusText}`);
58
- }
59
- const data = await response.json();
60
- if (!data.success) {
61
- throw new Error(`data.gov.au API error: ${data.error?.message ?? 'Unknown error'}`);
62
- }
63
- return {
64
- count: data.result.count,
65
- datasets: data.result.results.map(d => this.parseDataset(d)),
66
- };
67
- }
68
- catch (error) {
69
- if (error instanceof Error) {
70
- throw new Error(`data.gov.au search failed: ${error.message}`);
71
- }
72
- throw error;
73
- }
74
- }
75
- /**
76
- * Get a specific dataset by ID or name
77
- */
78
- async getDataset(idOrName) {
79
- const url = `${this.baseUrl}/package_show?id=${encodeURIComponent(idOrName)}`;
80
- try {
81
- const response = await fetch(url);
82
- if (!response.ok) {
83
- if (response.status === 404) {
84
- return null;
85
- }
86
- throw new Error(`data.gov.au API error: ${response.status}`);
87
- }
88
- const data = await response.json();
89
- if (!data.success) {
90
- return null;
91
- }
92
- return this.parseDataset(data.result);
93
- }
94
- catch (error) {
95
- if (error instanceof Error) {
96
- throw new Error(`data.gov.au getDataset failed: ${error.message}`);
97
- }
98
- throw error;
99
- }
100
- }
101
- /**
102
- * List all dataset names (for discovery)
103
- */
104
- async listDatasets(limit, offset) {
105
- const urlParams = new URLSearchParams();
106
- if (limit)
107
- urlParams.set('limit', limit.toString());
108
- if (offset)
109
- urlParams.set('offset', offset.toString());
110
- const url = `${this.baseUrl}/package_list?${urlParams.toString()}`;
111
- try {
112
- const response = await fetch(url);
113
- if (!response.ok) {
114
- throw new Error(`data.gov.au API error: ${response.status}`);
115
- }
116
- const data = await response.json();
117
- return data.result ?? [];
118
- }
119
- catch (error) {
120
- if (error instanceof Error) {
121
- throw new Error(`data.gov.au listDatasets failed: ${error.message}`);
122
- }
123
- throw error;
124
- }
125
- }
126
- // =========================================================================
127
- // Resource Operations
128
- // =========================================================================
129
- /**
130
- * Get a specific resource by ID
131
- */
132
- async getResource(resourceId) {
133
- const url = `${this.baseUrl}/resource_show?id=${encodeURIComponent(resourceId)}`;
134
- try {
135
- const response = await fetch(url);
136
- if (!response.ok) {
137
- if (response.status === 404) {
138
- return null;
139
- }
140
- throw new Error(`data.gov.au API error: ${response.status}`);
141
- }
142
- const data = await response.json();
143
- if (!data.success) {
144
- return null;
145
- }
146
- return this.parseResource(data.result);
147
- }
148
- catch (error) {
149
- if (error instanceof Error) {
150
- throw new Error(`data.gov.au getResource failed: ${error.message}`);
151
- }
152
- throw error;
153
- }
154
- }
155
- /**
156
- * Search the datastore (tabular data) for a resource
157
- */
158
- async datastoreSearch(params) {
159
- const urlParams = new URLSearchParams({
160
- resource_id: params.resourceId,
161
- });
162
- if (params.query) {
163
- urlParams.set('q', params.query);
164
- }
165
- if (params.filters) {
166
- urlParams.set('filters', JSON.stringify(params.filters));
167
- }
168
- if (params.limit) {
169
- urlParams.set('limit', params.limit.toString());
170
- }
171
- if (params.offset) {
172
- urlParams.set('offset', params.offset.toString());
173
- }
174
- const url = `${this.baseUrl}/datastore_search?${urlParams.toString()}`;
175
- try {
176
- const response = await fetch(url);
177
- if (!response.ok) {
178
- if (response.status === 404) {
179
- return null; // Datastore not enabled for this resource
180
- }
181
- throw new Error(`data.gov.au API error: ${response.status}`);
182
- }
183
- const data = await response.json();
184
- if (!data.success) {
185
- return null;
186
- }
187
- return {
188
- resourceId: data.result.resource_id,
189
- fields: data.result.fields,
190
- records: data.result.records,
191
- total: data.result.total,
192
- };
193
- }
194
- catch (error) {
195
- if (error instanceof Error) {
196
- throw new Error(`data.gov.au datastoreSearch failed: ${error.message}`);
197
- }
198
- throw error;
199
- }
200
- }
201
- // =========================================================================
202
- // Organization Operations
203
- // =========================================================================
204
- /**
205
- * List all organizations
206
- */
207
- async listOrganizations(allFields = true, limit) {
208
- const urlParams = new URLSearchParams({
209
- all_fields: allFields.toString(),
210
- });
211
- if (limit) {
212
- urlParams.set('limit', limit.toString());
213
- }
214
- const url = `${this.baseUrl}/organization_list?${urlParams.toString()}`;
215
- try {
216
- const response = await fetch(url);
217
- if (!response.ok) {
218
- throw new Error(`data.gov.au API error: ${response.status}`);
219
- }
220
- const data = await response.json();
221
- if (!allFields) {
222
- // Just names returned
223
- return (data.result ?? []).map((name) => ({
224
- id: name,
225
- name,
226
- title: name,
227
- packageCount: 0,
228
- }));
229
- }
230
- return (data.result ?? []).map(org => this.parseOrganization(org));
231
- }
232
- catch (error) {
233
- if (error instanceof Error) {
234
- throw new Error(`data.gov.au listOrganizations failed: ${error.message}`);
235
- }
236
- throw error;
237
- }
238
- }
239
- /**
240
- * Get organization details
241
- */
242
- async getOrganization(idOrName, includeDatasets = false) {
243
- const urlParams = new URLSearchParams({
244
- id: idOrName,
245
- include_datasets: includeDatasets.toString(),
246
- });
247
- const url = `${this.baseUrl}/organization_show?${urlParams.toString()}`;
248
- try {
249
- const response = await fetch(url);
250
- if (!response.ok) {
251
- if (response.status === 404) {
252
- return null;
253
- }
254
- throw new Error(`data.gov.au API error: ${response.status}`);
255
- }
256
- const data = await response.json();
257
- if (!data.success) {
258
- return null;
259
- }
260
- return this.parseOrganization(data.result);
261
- }
262
- catch (error) {
263
- if (error instanceof Error) {
264
- throw new Error(`data.gov.au getOrganization failed: ${error.message}`);
265
- }
266
- throw error;
267
- }
268
- }
269
- // =========================================================================
270
- // Group Operations
271
- // =========================================================================
272
- /**
273
- * List all groups (categories)
274
- */
275
- async listGroups(allFields = true) {
276
- const urlParams = new URLSearchParams({
277
- all_fields: allFields.toString(),
278
- });
279
- const url = `${this.baseUrl}/group_list?${urlParams.toString()}`;
280
- try {
281
- const response = await fetch(url);
282
- if (!response.ok) {
283
- throw new Error(`data.gov.au API error: ${response.status}`);
284
- }
285
- const data = await response.json();
286
- if (!allFields) {
287
- return (data.result ?? []).map((name) => ({
288
- id: name,
289
- name,
290
- title: name,
291
- packageCount: 0,
292
- }));
293
- }
294
- return (data.result ?? []).map(g => this.parseGroup(g));
295
- }
296
- catch (error) {
297
- if (error instanceof Error) {
298
- throw new Error(`data.gov.au listGroups failed: ${error.message}`);
299
- }
300
- throw error;
301
- }
302
- }
303
- /**
304
- * Get group details
305
- */
306
- async getGroup(idOrName, includeDatasets = false) {
307
- const urlParams = new URLSearchParams({
308
- id: idOrName,
309
- include_datasets: includeDatasets.toString(),
310
- });
311
- const url = `${this.baseUrl}/group_show?${urlParams.toString()}`;
312
- try {
313
- const response = await fetch(url);
314
- if (!response.ok) {
315
- if (response.status === 404) {
316
- return null;
317
- }
318
- throw new Error(`data.gov.au API error: ${response.status}`);
319
- }
320
- const data = await response.json();
321
- if (!data.success) {
322
- return null;
323
- }
324
- return this.parseGroup(data.result);
325
- }
326
- catch (error) {
327
- if (error instanceof Error) {
328
- throw new Error(`data.gov.au getGroup failed: ${error.message}`);
329
- }
330
- throw error;
331
- }
332
- }
333
- // =========================================================================
334
- // Tag Operations
335
- // =========================================================================
336
- /**
337
- * List all tags
338
- */
339
- async listTags(query) {
340
- const urlParams = new URLSearchParams();
341
- if (query) {
342
- urlParams.set('query', query);
343
- }
344
- const url = `${this.baseUrl}/tag_list?${urlParams.toString()}`;
345
- try {
346
- const response = await fetch(url);
347
- if (!response.ok) {
348
- throw new Error(`data.gov.au API error: ${response.status}`);
349
- }
350
- const data = await response.json();
351
- return data.result ?? [];
352
- }
353
- catch (error) {
354
- if (error instanceof Error) {
355
- throw new Error(`data.gov.au listTags failed: ${error.message}`);
356
- }
357
- throw error;
358
- }
359
- }
360
- // =========================================================================
361
- // Private Helpers
362
- // =========================================================================
363
- parseDataset(doc) {
364
- return {
365
- id: doc.id ?? '',
366
- name: doc.name ?? '',
367
- title: doc.title ?? 'Untitled',
368
- notes: doc.notes ?? undefined,
369
- organization: doc.organization ? {
370
- name: doc.organization.name ?? '',
371
- title: doc.organization.title ?? '',
372
- description: doc.organization.description ?? undefined,
373
- } : undefined,
374
- resources: (doc.resources ?? []).map((r) => this.parseResource(r)),
375
- tags: (doc.tags ?? []).map((t) => typeof t === 'string' ? t : t.name),
376
- metadataCreated: doc.metadata_created ?? '',
377
- metadataModified: doc.metadata_modified ?? '',
378
- licenseId: doc.license_id ?? undefined,
379
- licenseTitle: doc.license_title ?? undefined,
380
- author: doc.author ?? undefined,
381
- maintainer: doc.maintainer ?? undefined,
382
- url: doc.url ?? undefined,
383
- };
384
- }
385
- parseResource(doc) {
386
- return {
387
- id: doc.id ?? '',
388
- name: doc.name ?? 'Unnamed',
389
- description: doc.description ?? undefined,
390
- format: doc.format ?? 'Unknown',
391
- url: doc.url ?? '',
392
- size: doc.size ?? undefined,
393
- lastModified: doc.last_modified ?? undefined,
394
- datastoreActive: doc.datastore_active ?? false,
395
- };
396
- }
397
- parseOrganization(doc) {
398
- return {
399
- id: doc.id ?? '',
400
- name: doc.name ?? '',
401
- title: doc.title ?? '',
402
- description: doc.description ?? undefined,
403
- packageCount: doc.package_count ?? 0,
404
- imageUrl: doc.image_url ?? undefined,
405
- created: doc.created ?? undefined,
406
- };
407
- }
408
- parseGroup(doc) {
409
- return {
410
- id: doc.id ?? '',
411
- name: doc.name ?? '',
412
- title: doc.title ?? '',
413
- description: doc.description ?? undefined,
414
- packageCount: doc.package_count ?? 0,
415
- imageUrl: doc.image_url ?? undefined,
416
- };
417
- }
418
- }
419
- // Export singleton instance
420
- export const dataGovAUClient = new DataGovAUClient();
421
- //# sourceMappingURL=datagovau_client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"datagovau_client.js","sourceRoot":"","sources":["../../src/clients/datagovau_client.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- /**
2
- * PROV (Public Record Office Victoria) API Client
3
- *
4
- * The PROV Collection API is a Solr-based search interface for Victorian
5
- * state government archives. No API key is required (CC-BY-NC license).
6
- *
7
- * API Documentation: https://prov.vic.gov.au/prov-collection-api
8
- * GLAM Workbench: https://glam-workbench.net/prov/
9
- */
10
- import type { PROVSearchParams, PROVSearchResult, PROVSeries, PROVImagesResult } from '../types.js';
11
- export declare class PROVClient {
12
- private readonly baseUrl;
13
- constructor();
14
- /**
15
- * Search the PROV collection
16
- */
17
- search(params: PROVSearchParams): Promise<PROVSearchResult>;
18
- /**
19
- * Get details of a specific series (VPRS)
20
- */
21
- getSeries(seriesId: string): Promise<PROVSeries | null>;
22
- /**
23
- * Get IIIF manifest URL for a digitised item
24
- */
25
- getIIIFManifest(itemId: string): Promise<string | null>;
26
- /**
27
- * Get image URLs from a PROV IIIF manifest
28
- *
29
- * Parses the manifest and returns URLs for different sizes.
30
- * PROV uses a Loris IIIF Image Server with standard size parameters.
31
- */
32
- getImages(manifestUrl: string, options?: {
33
- pages?: number[];
34
- pageRange?: string;
35
- }): Promise<PROVImagesResult>;
36
- /**
37
- * Search for digitised photos
38
- */
39
- searchPhotos(query: string, options?: {
40
- dateFrom?: string;
41
- dateTo?: string;
42
- limit?: number;
43
- }): Promise<PROVSearchResult>;
44
- /**
45
- * Search for maps
46
- */
47
- searchMaps(query: string, options?: {
48
- dateFrom?: string;
49
- dateTo?: string;
50
- limit?: number;
51
- }): Promise<PROVSearchResult>;
52
- private escapeQuery;
53
- private parseSearchResponse;
54
- private parseRecordDoc;
55
- private parseSeriesDoc;
56
- private buildRecordUrl;
57
- private formatDateRange;
58
- private extractManifestTitle;
59
- private extractManifestDescription;
60
- private parsePageFilter;
61
- private extractImageUrls;
62
- }
63
- export declare const provClient: PROVClient;
64
- //# sourceMappingURL=prov_client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prov_client.d.ts","sourceRoot":"","sources":["../../src/clients/prov_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAEhB,UAAU,EAEV,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAIrB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;;IAMjC;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0EjE;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiC7D;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgC7D;;;;;OAKG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC7C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0D7B;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAW7B;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAe7B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,gBAAgB;CA+CzB;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}