@usa-open-data-connectors/usa-sources 0.1.7 → 0.1.9
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/README.md +229 -32
- package/dist/btsTransportationStats.d.ts +4 -0
- package/dist/btsTransportationStats.d.ts.map +1 -1
- package/dist/btsTransportationStats.js +3 -0
- package/dist/btsTransportationStats.js.map +1 -1
- package/dist/californiaOpenDataCatalogue.d.ts +84 -0
- package/dist/californiaOpenDataCatalogue.d.ts.map +1 -0
- package/dist/californiaOpenDataCatalogue.js +153 -0
- package/dist/californiaOpenDataCatalogue.js.map +1 -0
- package/dist/cdcSocrataCatalogue.d.ts +4 -0
- package/dist/cdcSocrataCatalogue.d.ts.map +1 -1
- package/dist/cdcSocrataCatalogue.js +3 -0
- package/dist/cdcSocrataCatalogue.js.map +1 -1
- package/dist/chicagoOpenDataCatalogue.d.ts +91 -0
- package/dist/chicagoOpenDataCatalogue.d.ts.map +1 -0
- package/dist/chicagoOpenDataCatalogue.js +133 -0
- package/dist/chicagoOpenDataCatalogue.js.map +1 -0
- package/dist/coloradoOpenDataCatalogue.d.ts +42 -0
- package/dist/coloradoOpenDataCatalogue.d.ts.map +1 -0
- package/dist/coloradoOpenDataCatalogue.js +45 -0
- package/dist/coloradoOpenDataCatalogue.js.map +1 -0
- package/dist/fccSocrataCatalogue.d.ts +91 -0
- package/dist/fccSocrataCatalogue.d.ts.map +1 -0
- package/dist/fccSocrataCatalogue.js +133 -0
- package/dist/fccSocrataCatalogue.js.map +1 -0
- package/dist/federalRegisterDocuments.d.ts +78 -0
- package/dist/federalRegisterDocuments.d.ts.map +1 -0
- package/dist/federalRegisterDocuments.js +119 -0
- package/dist/federalRegisterDocuments.js.map +1 -0
- package/dist/healthdataSocrataCatalogue.d.ts +4 -0
- package/dist/healthdataSocrataCatalogue.d.ts.map +1 -1
- package/dist/healthdataSocrataCatalogue.js +3 -0
- package/dist/healthdataSocrataCatalogue.js.map +1 -1
- package/dist/http.d.ts +14 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +29 -1
- package/dist/http.js.map +1 -1
- package/dist/illinoisOpenDataCatalogue.d.ts +42 -0
- package/dist/illinoisOpenDataCatalogue.d.ts.map +1 -0
- package/dist/illinoisOpenDataCatalogue.js +45 -0
- package/dist/illinoisOpenDataCatalogue.js.map +1 -0
- package/dist/index.d.ts +76 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/losAngelesOpenDataCatalogue.d.ts +42 -0
- package/dist/losAngelesOpenDataCatalogue.d.ts.map +1 -0
- package/dist/losAngelesOpenDataCatalogue.js +48 -0
- package/dist/losAngelesOpenDataCatalogue.js.map +1 -0
- package/dist/michiganOpenDataCatalogue.d.ts +42 -0
- package/dist/michiganOpenDataCatalogue.d.ts.map +1 -0
- package/dist/michiganOpenDataCatalogue.js +45 -0
- package/dist/michiganOpenDataCatalogue.js.map +1 -0
- package/dist/newJerseyOpenDataCatalogue.d.ts +42 -0
- package/dist/newJerseyOpenDataCatalogue.d.ts.map +1 -0
- package/dist/newJerseyOpenDataCatalogue.js +48 -0
- package/dist/newJerseyOpenDataCatalogue.js.map +1 -0
- package/dist/nextBusTransitVehicles.d.ts.map +1 -1
- package/dist/nextBusTransitVehicles.js +14 -3
- package/dist/nextBusTransitVehicles.js.map +1 -1
- package/dist/nhtsaVehicleModels.d.ts +74 -0
- package/dist/nhtsaVehicleModels.d.ts.map +1 -0
- package/dist/nhtsaVehicleModels.js +139 -0
- package/dist/nhtsaVehicleModels.js.map +1 -0
- package/dist/nihReporterProjects.d.ts +98 -0
- package/dist/nihReporterProjects.d.ts.map +1 -0
- package/dist/nihReporterProjects.js +188 -0
- package/dist/nihReporterProjects.js.map +1 -0
- package/dist/nwsPointForecast.d.ts.map +1 -1
- package/dist/nwsPointForecast.js +13 -2
- package/dist/nwsPointForecast.js.map +1 -1
- package/dist/nyStateOpenDataCatalogue.d.ts +91 -0
- package/dist/nyStateOpenDataCatalogue.d.ts.map +1 -0
- package/dist/nyStateOpenDataCatalogue.js +133 -0
- package/dist/nyStateOpenDataCatalogue.js.map +1 -0
- package/dist/nycOpenDataCatalogue.d.ts +4 -0
- package/dist/nycOpenDataCatalogue.d.ts.map +1 -1
- package/dist/nycOpenDataCatalogue.js +3 -0
- package/dist/nycOpenDataCatalogue.js.map +1 -1
- package/dist/oregonOpenDataCatalogue.d.ts +42 -0
- package/dist/oregonOpenDataCatalogue.d.ts.map +1 -0
- package/dist/oregonOpenDataCatalogue.js +45 -0
- package/dist/oregonOpenDataCatalogue.js.map +1 -0
- package/dist/pennsylvaniaOpenDataCatalogue.d.ts +42 -0
- package/dist/pennsylvaniaOpenDataCatalogue.d.ts.map +1 -0
- package/dist/pennsylvaniaOpenDataCatalogue.js +48 -0
- package/dist/pennsylvaniaOpenDataCatalogue.js.map +1 -0
- package/dist/registry.d.ts +2 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +51 -3
- package/dist/registry.js.map +1 -1
- package/dist/sanFranciscoOpenDataCatalogue.d.ts +42 -0
- package/dist/sanFranciscoOpenDataCatalogue.d.ts.map +1 -0
- package/dist/sanFranciscoOpenDataCatalogue.js +48 -0
- package/dist/sanFranciscoOpenDataCatalogue.js.map +1 -0
- package/dist/seattleOpenDataCatalogue.d.ts +91 -0
- package/dist/seattleOpenDataCatalogue.d.ts.map +1 -0
- package/dist/seattleOpenDataCatalogue.js +133 -0
- package/dist/seattleOpenDataCatalogue.js.map +1 -0
- package/dist/socrataCatalogue.d.ts +121 -0
- package/dist/socrataCatalogue.d.ts.map +1 -0
- package/dist/socrataCatalogue.js +151 -0
- package/dist/socrataCatalogue.js.map +1 -0
- package/dist/socrataCatalogueMetadata.d.ts +19 -0
- package/dist/socrataCatalogueMetadata.d.ts.map +1 -0
- package/dist/socrataCatalogueMetadata.js +40 -0
- package/dist/socrataCatalogueMetadata.js.map +1 -0
- package/dist/texasOpenDataCatalogue.d.ts +91 -0
- package/dist/texasOpenDataCatalogue.d.ts.map +1 -0
- package/dist/texasOpenDataCatalogue.js +133 -0
- package/dist/texasOpenDataCatalogue.js.map +1 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vermontOpenDataCatalogue.d.ts +42 -0
- package/dist/vermontOpenDataCatalogue.d.ts.map +1 -0
- package/dist/vermontOpenDataCatalogue.js +45 -0
- package/dist/vermontOpenDataCatalogue.js.map +1 -0
- package/dist/washingtonStateOpenDataCatalogue.d.ts +42 -0
- package/dist/washingtonStateOpenDataCatalogue.d.ts.map +1 -0
- package/dist/washingtonStateOpenDataCatalogue.js +48 -0
- package/dist/washingtonStateOpenDataCatalogue.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nihReporterProjects.js","sourceRoot":"","sources":["../src/nihReporterProjects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nwsPointForecast.d.ts","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,wFAC4D,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,qDAAqD;AACrD,eAAO,MAAM,YAAY,4BAA4B,CAAC;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAmC9C;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAA6B,EACvC,SAAS,GAAE,MAA8B,GACxC,MAAM,CAER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAsD/E;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"nwsPointForecast.d.ts","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,wFAC4D,CAAC;AAExF;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,qDAAqD;AACrD,eAAO,MAAM,YAAY,4BAA4B,CAAC;AAEtD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAmC9C;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,GAAE,MAA6B,EACvC,SAAS,GAAE,MAA8B,GACxC,MAAM,CAER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAsD/E;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4B5B;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,gBAAgB,CAWnE,CAAC"}
|
package/dist/nwsPointForecast.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { UsSourceParseError } from './errors.js';
|
|
2
|
+
import { UsSourceApiError, UsSourceParseError } from './errors.js';
|
|
3
3
|
import { httpGet } from './http.js';
|
|
4
4
|
import { readFixtureJson } from './fixtures.js';
|
|
5
5
|
/** Adapter id for the National Weather Service point-forecast source. */
|
|
@@ -126,8 +126,19 @@ export function parseNwsPointForecastPayload(payload) {
|
|
|
126
126
|
* @returns the grid point, its place, and the URLs that lead to the forecast
|
|
127
127
|
*/
|
|
128
128
|
export async function fetchNwsPointForecast(options) {
|
|
129
|
+
if ((options?.latitude === undefined) !== (options?.longitude === undefined)) {
|
|
130
|
+
throw new UsSourceApiError(NWS_POINT_FORECAST_SOURCE_ID, 'Pass both latitude and longitude, or neither.');
|
|
131
|
+
}
|
|
132
|
+
const latitude = options?.latitude ?? NWS_DEFAULT_LATITUDE;
|
|
133
|
+
const longitude = options?.longitude ?? NWS_DEFAULT_LONGITUDE;
|
|
134
|
+
if (!Number.isFinite(latitude) || latitude < -90 || latitude > 90) {
|
|
135
|
+
throw new UsSourceApiError(NWS_POINT_FORECAST_SOURCE_ID, 'latitude must be a finite number between -90 and 90.');
|
|
136
|
+
}
|
|
137
|
+
if (!Number.isFinite(longitude) || longitude < -180 || longitude > 180) {
|
|
138
|
+
throw new UsSourceApiError(NWS_POINT_FORECAST_SOURCE_ID, 'longitude must be a finite number between -180 and 180.');
|
|
139
|
+
}
|
|
129
140
|
const fetchImpl = options?.fetchImpl ?? globalThis.fetch;
|
|
130
|
-
const url = buildNwsPointUrl(
|
|
141
|
+
const url = buildNwsPointUrl(latitude, longitude);
|
|
131
142
|
const response = await httpGet(NWS_POINT_FORECAST_SOURCE_ID, url, {
|
|
132
143
|
fetchImpl,
|
|
133
144
|
headers: { 'User-Agent': NWS_USER_AGENT },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nwsPointForecast.js","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"nwsPointForecast.js","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { UsDataAdapter } from './types.js';
|
|
2
|
+
/** Adapter id for the New York State Open Data catalogue source. */
|
|
3
|
+
export declare const NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID = "ny-state-open-data-catalogue";
|
|
4
|
+
/** Base URL for the New York State Open Data Socrata catalogue. */
|
|
5
|
+
export declare const NY_STATE_OPEN_DATA_API_BASE = "https://data.ny.gov/api/views.json";
|
|
6
|
+
/** How many catalogue entries one request reads. */
|
|
7
|
+
export declare const NY_STATE_OPEN_DATA_CATALOGUE_LIMIT = 10;
|
|
8
|
+
/** One catalogue entry from the New York State Socrata discovery API. */
|
|
9
|
+
export interface NyStateOpenDataCatalogueEntry {
|
|
10
|
+
/** Four-by-four Socrata dataset id, e.g. "sa8q-nq2h". */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Human-readable title of the dataset, chart, story, or file. */
|
|
13
|
+
name: string;
|
|
14
|
+
/** What the entry is: "dataset", "chart", "story", "file", or "href". */
|
|
15
|
+
assetType: string;
|
|
16
|
+
/** State topic the entry belongs to, or null when the catalogue lists none. */
|
|
17
|
+
category: string | null;
|
|
18
|
+
/** How the entry is rendered, e.g. "tabular", "blobby", or "story". */
|
|
19
|
+
viewType: string;
|
|
20
|
+
/** When the entry was created, in seconds since the Unix epoch. */
|
|
21
|
+
createdAtEpochSeconds: number;
|
|
22
|
+
/** When the entry was last modified, in seconds since the Unix epoch. */
|
|
23
|
+
viewLastModifiedEpochSeconds: number;
|
|
24
|
+
/** How many times the entry has been viewed. */
|
|
25
|
+
viewCount: number;
|
|
26
|
+
/** How many times the entry has been downloaded. */
|
|
27
|
+
downloadCount: number;
|
|
28
|
+
/** Licence URL the portal attaches to the entry, or "" when it supplies none. */
|
|
29
|
+
licenceUrl: string;
|
|
30
|
+
/** Publishing organisation the portal attaches to the entry, or "" when it supplies none. */
|
|
31
|
+
attribution: string;
|
|
32
|
+
}
|
|
33
|
+
/** One state topic and how many catalogue entries carry it. */
|
|
34
|
+
export interface NyStateOpenDataCategoryCount {
|
|
35
|
+
category: string;
|
|
36
|
+
entryCount: number;
|
|
37
|
+
}
|
|
38
|
+
/** One page of the New York State catalogue, folded for a story. */
|
|
39
|
+
export interface NyStateOpenDataCatalogue {
|
|
40
|
+
/** One entry per catalogue item in the page. */
|
|
41
|
+
entries: NyStateOpenDataCatalogueEntry[];
|
|
42
|
+
entryCount: number;
|
|
43
|
+
/** Entries whose asset type is "dataset". */
|
|
44
|
+
datasetCount: number;
|
|
45
|
+
/** Entry with the latest creation time. Ties go to the earlier list entry. */
|
|
46
|
+
newestEntry: NyStateOpenDataCatalogueEntry;
|
|
47
|
+
/**
|
|
48
|
+
* Categories in the page, most entries first, ties broken by name. An entry
|
|
49
|
+
* the catalogue lists without a category is counted under "Uncategorised".
|
|
50
|
+
*/
|
|
51
|
+
categories: NyStateOpenDataCategoryCount[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Builds the request URL for one page of the New York State catalogue.
|
|
55
|
+
*
|
|
56
|
+
* The endpoint is keyless. The service answers the whole catalogue by default,
|
|
57
|
+
* so the adapter asks for a short page.
|
|
58
|
+
*
|
|
59
|
+
* @param options - an optional entry cap
|
|
60
|
+
* @returns the full request URL
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildNyStateOpenDataCatalogueUrl(options?: {
|
|
63
|
+
limit?: number;
|
|
64
|
+
}): string;
|
|
65
|
+
/**
|
|
66
|
+
* Parses one page of the New York State catalogue into entries and topic counts.
|
|
67
|
+
*
|
|
68
|
+
* An entry without an id, a name, or a creation time is a changed shape and
|
|
69
|
+
* stops the parse. An empty page also stops the parse, because a catalogue
|
|
70
|
+
* with no entries is not a usable answer.
|
|
71
|
+
*
|
|
72
|
+
* @param payload - the JSON body from the New York State Socrata discovery API
|
|
73
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
74
|
+
*/
|
|
75
|
+
export declare function parseNyStateOpenDataCataloguePayload(payload: unknown): NyStateOpenDataCatalogue;
|
|
76
|
+
/**
|
|
77
|
+
* Reads one page of the New York State catalogue.
|
|
78
|
+
*
|
|
79
|
+
* One keyless request covers the page and reports what the state portal
|
|
80
|
+
* holds, without reading any dataset's rows.
|
|
81
|
+
*
|
|
82
|
+
* @param options - an optional entry cap and fetch stub
|
|
83
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
84
|
+
*/
|
|
85
|
+
export declare function fetchNyStateOpenDataCatalogue(options?: {
|
|
86
|
+
limit?: number;
|
|
87
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
88
|
+
}): Promise<NyStateOpenDataCatalogue>;
|
|
89
|
+
/** New York State Open Data catalogue of datasets and files, keyless. */
|
|
90
|
+
export declare const nyStateOpenDataCatalogueAdapter: UsDataAdapter<NyStateOpenDataCatalogue>;
|
|
91
|
+
//# sourceMappingURL=nyStateOpenDataCatalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nyStateOpenDataCatalogue.d.ts","sourceRoot":"","sources":["../src/nyStateOpenDataCatalogue.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,oEAAoE;AACpE,eAAO,MAAM,sCAAsC,iCAAiC,CAAC;AAErF,mEAAmE;AACnE,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,oDAAoD;AACpD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,yEAAyE;AACzE,MAAM,WAAW,6BAA6B;IAC5C,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yEAAyE;IACzE,4BAA4B,EAAE,MAAM,CAAC;IACrC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oEAAoE;AACpE,MAAM,WAAW,wBAAwB;IACvC,gDAAgD;IAChD,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,WAAW,EAAE,6BAA6B,CAAC;IAC3C;;;OAGG;IACH,UAAU,EAAE,4BAA4B,EAAE,CAAC;CAC5C;AAuDD;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAKrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,OAAO,GAAG,wBAAwB,CAwC/F;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,OAAO,CAAC,EAAE;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAOpC;AAED,yEAAyE;AACzE,eAAO,MAAM,+BAA+B,EAAE,aAAa,CAAC,wBAAwB,CAanF,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { UsSourceParseError } from './errors.js';
|
|
3
|
+
import { readFixtureJson } from './fixtures.js';
|
|
4
|
+
import { httpGet } from './http.js';
|
|
5
|
+
import { parseSocrataCatalogueMetadata } from './socrataCatalogueMetadata.js';
|
|
6
|
+
/** Adapter id for the New York State Open Data catalogue source. */
|
|
7
|
+
export const NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID = 'ny-state-open-data-catalogue';
|
|
8
|
+
/** Base URL for the New York State Open Data Socrata catalogue. */
|
|
9
|
+
export const NY_STATE_OPEN_DATA_API_BASE = 'https://data.ny.gov/api/views.json';
|
|
10
|
+
/** How many catalogue entries one request reads. */
|
|
11
|
+
export const NY_STATE_OPEN_DATA_CATALOGUE_LIMIT = 10;
|
|
12
|
+
/** Committed snapshot, so a build works when the New York State host is unreachable. */
|
|
13
|
+
const NY_STATE_OPEN_DATA_FIXTURE_FILENAME = 'ny-state-open-data-catalogue-2026-11-08.json';
|
|
14
|
+
/** Category bucket the adapter uses for an entry the catalogue lists without one. */
|
|
15
|
+
const NY_STATE_OPEN_DATA_UNCATEGORISED = 'Uncategorised';
|
|
16
|
+
// The discovery API sends a bare JSON array. A value the catalogue does not
|
|
17
|
+
// carry arrives as null, and every count arrives as a number.
|
|
18
|
+
const NY_STATE_OPEN_DATA_ENTRY_SCHEMA = z.object({
|
|
19
|
+
id: z.string().optional(),
|
|
20
|
+
name: z.string().optional(),
|
|
21
|
+
assetType: z.string().optional(),
|
|
22
|
+
category: z.string().nullable().optional(),
|
|
23
|
+
viewType: z.string().optional(),
|
|
24
|
+
createdAt: z.number().optional(),
|
|
25
|
+
viewLastModified: z.number().optional(),
|
|
26
|
+
viewCount: z.number().optional(),
|
|
27
|
+
downloadCount: z.number().optional(),
|
|
28
|
+
metadata: z.unknown().optional(),
|
|
29
|
+
});
|
|
30
|
+
const NY_STATE_OPEN_DATA_PAYLOAD_SCHEMA = z.array(NY_STATE_OPEN_DATA_ENTRY_SCHEMA);
|
|
31
|
+
/** Counts entries per category, most entries first, ties by name. */
|
|
32
|
+
function countNyStateOpenDataCategories(entries) {
|
|
33
|
+
const counts = new Map();
|
|
34
|
+
for (const entry of entries) {
|
|
35
|
+
const category = entry.category ?? NY_STATE_OPEN_DATA_UNCATEGORISED;
|
|
36
|
+
counts.set(category, (counts.get(category) ?? 0) + 1);
|
|
37
|
+
}
|
|
38
|
+
return [...counts.entries()]
|
|
39
|
+
.sort(([leftCategory, leftCount], [rightCategory, rightCount]) => leftCount === rightCount ? leftCategory.localeCompare(rightCategory) : rightCount - leftCount)
|
|
40
|
+
.map(([category, entryCount]) => ({ category, entryCount }));
|
|
41
|
+
}
|
|
42
|
+
/** Picks the entry with the latest creation time, ties to the earlier entry. */
|
|
43
|
+
function newestNyStateOpenDataEntry(entries) {
|
|
44
|
+
const first = entries[0];
|
|
45
|
+
if (first === undefined) {
|
|
46
|
+
throw new UsSourceParseError(NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID, 'No entries to summarise');
|
|
47
|
+
}
|
|
48
|
+
return entries.reduce((best, entry) => (entry.createdAtEpochSeconds > best.createdAtEpochSeconds ? entry : best), first);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Builds the request URL for one page of the New York State catalogue.
|
|
52
|
+
*
|
|
53
|
+
* The endpoint is keyless. The service answers the whole catalogue by default,
|
|
54
|
+
* so the adapter asks for a short page.
|
|
55
|
+
*
|
|
56
|
+
* @param options - an optional entry cap
|
|
57
|
+
* @returns the full request URL
|
|
58
|
+
*/
|
|
59
|
+
export function buildNyStateOpenDataCatalogueUrl(options) {
|
|
60
|
+
const params = new URLSearchParams({
|
|
61
|
+
limit: String(options?.limit ?? NY_STATE_OPEN_DATA_CATALOGUE_LIMIT),
|
|
62
|
+
});
|
|
63
|
+
return `${NY_STATE_OPEN_DATA_API_BASE}?${params.toString()}`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parses one page of the New York State catalogue into entries and topic counts.
|
|
67
|
+
*
|
|
68
|
+
* An entry without an id, a name, or a creation time is a changed shape and
|
|
69
|
+
* stops the parse. An empty page also stops the parse, because a catalogue
|
|
70
|
+
* with no entries is not a usable answer.
|
|
71
|
+
*
|
|
72
|
+
* @param payload - the JSON body from the New York State Socrata discovery API
|
|
73
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
74
|
+
*/
|
|
75
|
+
export function parseNyStateOpenDataCataloguePayload(payload) {
|
|
76
|
+
const parsed = NY_STATE_OPEN_DATA_PAYLOAD_SCHEMA.safeParse(payload);
|
|
77
|
+
if (!parsed.success) {
|
|
78
|
+
throw new UsSourceParseError(NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID, parsed.error.message);
|
|
79
|
+
}
|
|
80
|
+
if (parsed.data.length === 0) {
|
|
81
|
+
throw new UsSourceParseError(NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID, 'The response carried no entries');
|
|
82
|
+
}
|
|
83
|
+
const entries = parsed.data.map((row) => {
|
|
84
|
+
if (row.id === undefined || row.name === undefined || row.createdAt === undefined) {
|
|
85
|
+
throw new UsSourceParseError(NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID, 'A catalogue entry arrived without its id, name, or creation time');
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
id: row.id,
|
|
89
|
+
name: row.name,
|
|
90
|
+
assetType: row.assetType ?? '',
|
|
91
|
+
category: row.category ?? null,
|
|
92
|
+
viewType: row.viewType ?? '',
|
|
93
|
+
createdAtEpochSeconds: row.createdAt,
|
|
94
|
+
viewLastModifiedEpochSeconds: row.viewLastModified ?? row.createdAt,
|
|
95
|
+
viewCount: row.viewCount ?? 0,
|
|
96
|
+
downloadCount: row.downloadCount ?? 0,
|
|
97
|
+
...parseSocrataCatalogueMetadata(row.metadata),
|
|
98
|
+
};
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
entries,
|
|
102
|
+
entryCount: entries.length,
|
|
103
|
+
datasetCount: entries.filter((entry) => entry.assetType === 'dataset').length,
|
|
104
|
+
newestEntry: newestNyStateOpenDataEntry(entries),
|
|
105
|
+
categories: countNyStateOpenDataCategories(entries),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Reads one page of the New York State catalogue.
|
|
110
|
+
*
|
|
111
|
+
* One keyless request covers the page and reports what the state portal
|
|
112
|
+
* holds, without reading any dataset's rows.
|
|
113
|
+
*
|
|
114
|
+
* @param options - an optional entry cap and fetch stub
|
|
115
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
116
|
+
*/
|
|
117
|
+
export async function fetchNyStateOpenDataCatalogue(options) {
|
|
118
|
+
const fetchImpl = options?.fetchImpl ?? globalThis.fetch;
|
|
119
|
+
const url = buildNyStateOpenDataCatalogueUrl(options?.limit === undefined ? {} : { limit: options.limit });
|
|
120
|
+
const response = await httpGet(NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID, url, { fetchImpl });
|
|
121
|
+
return parseNyStateOpenDataCataloguePayload(await response.json());
|
|
122
|
+
}
|
|
123
|
+
/** New York State Open Data catalogue of datasets and files, keyless. */
|
|
124
|
+
export const nyStateOpenDataCatalogueAdapter = {
|
|
125
|
+
id: NY_STATE_OPEN_DATA_CATALOGUE_SOURCE_ID,
|
|
126
|
+
name: 'New York State Open Data catalogue',
|
|
127
|
+
auth: 'none',
|
|
128
|
+
description: 'The New York State Open Data catalogue on Socrata, one row per published dataset or file, with its state topic, view count, and download count.',
|
|
129
|
+
fetchLive: async (options) => fetchNyStateOpenDataCatalogue(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
130
|
+
parse: (payload) => parseNyStateOpenDataCataloguePayload(payload),
|
|
131
|
+
loadFixture: () => parseNyStateOpenDataCataloguePayload(readFixtureJson(NY_STATE_OPEN_DATA_FIXTURE_FILENAME)),
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=nyStateOpenDataCatalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nyStateOpenDataCatalogue.js","sourceRoot":"","sources":["../src/nyStateOpenDataCatalogue.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,10 @@ export interface NycOpenDataCatalogueEntry {
|
|
|
21
21
|
viewCount: number;
|
|
22
22
|
/** How many times the entry has been downloaded. */
|
|
23
23
|
downloadCount: number;
|
|
24
|
+
/** Licence URL the portal attaches to the entry, or "" when it supplies none. */
|
|
25
|
+
licenceUrl: string;
|
|
26
|
+
/** Publishing organisation the portal attaches to the entry, or "" when it supplies none. */
|
|
27
|
+
attribution: string;
|
|
24
28
|
}
|
|
25
29
|
/** One city topic and how many catalogue entries carry it. */
|
|
26
30
|
export interface NycOpenDataCategoryCount {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nycOpenDataCatalogue.d.ts","sourceRoot":"","sources":["../src/nycOpenDataCatalogue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nycOpenDataCatalogue.d.ts","sourceRoot":"","sources":["../src/nycOpenDataCatalogue.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yDAAyD;AACzD,eAAO,MAAM,iCAAiC,4BAA4B,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACxC,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yEAAyE;IACzE,4BAA4B,EAAE,MAAM,CAAC;IACrC,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,WAAW,EAAE,yBAAyB,CAAC;IACvC,6EAA6E;IAC7E,eAAe,EAAE,yBAAyB,CAAC;IAC3C,iFAAiF;IACjF,mBAAmB,EAAE,yBAAyB,CAAC;IAC/C,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC;AAED,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,iDAAiD,CAAC;AAErF,oDAAoD;AACpD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AA8EhD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAKjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CA6CvF;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,CAAC,EAAE;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAOhC;AAED,uEAAuE;AACvE,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,oBAAoB,CAa3E,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { UsSourceParseError } from './errors.js';
|
|
3
3
|
import { httpGet } from './http.js';
|
|
4
4
|
import { readFixtureJson } from './fixtures.js';
|
|
5
|
+
import { parseSocrataCatalogueMetadata } from './socrataCatalogueMetadata.js';
|
|
5
6
|
/** Adapter id for the nyc-open-data-catalogue source. */
|
|
6
7
|
export const NYC_OPEN_DATA_CATALOGUE_SOURCE_ID = 'nyc-open-data-catalogue';
|
|
7
8
|
/** Base URL for the New York City Socrata catalogue. */
|
|
@@ -24,6 +25,7 @@ const NYC_OPEN_DATA_ENTRY_SCHEMA = z.object({
|
|
|
24
25
|
viewLastModified: z.number().optional(),
|
|
25
26
|
viewCount: z.number().optional(),
|
|
26
27
|
downloadCount: z.number().optional(),
|
|
28
|
+
metadata: z.unknown().optional(),
|
|
27
29
|
});
|
|
28
30
|
const NYC_OPEN_DATA_PAYLOAD_SCHEMA = z.array(NYC_OPEN_DATA_ENTRY_SCHEMA);
|
|
29
31
|
/** Counts entries per category, most entries first, ties by name. */
|
|
@@ -108,6 +110,7 @@ export function parseNycOpenDataCataloguePayload(payload) {
|
|
|
108
110
|
viewLastModifiedEpochSeconds: row.viewLastModified ?? row.createdAt,
|
|
109
111
|
viewCount: row.viewCount ?? 0,
|
|
110
112
|
downloadCount: row.downloadCount ?? 0,
|
|
113
|
+
...parseSocrataCatalogueMetadata(row.metadata),
|
|
111
114
|
};
|
|
112
115
|
});
|
|
113
116
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nycOpenDataCatalogue.js","sourceRoot":"","sources":["../src/nycOpenDataCatalogue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"nycOpenDataCatalogue.js","sourceRoot":"","sources":["../src/nycOpenDataCatalogue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type SocrataCatalogue, type SocrataCatalogueCategoryCount, type SocrataCatalogueEntry } from './socrataCatalogue.js';
|
|
2
|
+
/** Adapter id for the Oregon Open Data catalogue source. */
|
|
3
|
+
export declare const OREGON_OPEN_DATA_CATALOGUE_SOURCE_ID = "oregon-open-data-catalogue";
|
|
4
|
+
/** Base URL for the Oregon Open Data Socrata catalogue. */
|
|
5
|
+
export declare const OREGON_OPEN_DATA_API_BASE = "https://data.oregon.gov/api/views.json";
|
|
6
|
+
/** How many catalogue entries one request reads. */
|
|
7
|
+
export declare const OREGON_OPEN_DATA_CATALOGUE_LIMIT = 10;
|
|
8
|
+
/** One catalogue entry from the Oregon Socrata discovery API. */
|
|
9
|
+
export type OregonOpenDataCatalogueEntry = SocrataCatalogueEntry;
|
|
10
|
+
/** One state topic and how many catalogue entries carry it. */
|
|
11
|
+
export type OregonOpenDataCategoryCount = SocrataCatalogueCategoryCount;
|
|
12
|
+
/** One page of the Oregon catalogue, folded for a story. */
|
|
13
|
+
export type OregonOpenDataCatalogue = SocrataCatalogue;
|
|
14
|
+
/**
|
|
15
|
+
* Builds the request URL for one page of the Oregon catalogue.
|
|
16
|
+
*
|
|
17
|
+
* @param options - an optional entry cap
|
|
18
|
+
* @returns the full request URL
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildOregonOpenDataCatalogueUrl(options?: {
|
|
21
|
+
limit?: number;
|
|
22
|
+
}): string;
|
|
23
|
+
/**
|
|
24
|
+
* Parses one page of the Oregon catalogue into entries and topic counts.
|
|
25
|
+
*
|
|
26
|
+
* @param payload - the JSON body from the Oregon Socrata discovery API
|
|
27
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseOregonOpenDataCataloguePayload(payload: unknown): OregonOpenDataCatalogue;
|
|
30
|
+
/**
|
|
31
|
+
* Reads one page of the Oregon Open Data catalogue.
|
|
32
|
+
*
|
|
33
|
+
* @param options - an optional entry cap and fetch stub
|
|
34
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
35
|
+
*/
|
|
36
|
+
export declare function fetchOregonOpenDataCatalogue(options?: {
|
|
37
|
+
limit?: number;
|
|
38
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
39
|
+
}): Promise<OregonOpenDataCatalogue>;
|
|
40
|
+
/** Oregon Open Data catalogue of datasets, files, and filtered views, keyless. */
|
|
41
|
+
export declare const oregonOpenDataCatalogueAdapter: import("./types.js").UsDataAdapter<SocrataCatalogue>;
|
|
42
|
+
//# sourceMappingURL=oregonOpenDataCatalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oregonOpenDataCatalogue.d.ts","sourceRoot":"","sources":["../src/oregonOpenDataCatalogue.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAE/B,4DAA4D;AAC5D,eAAO,MAAM,oCAAoC,+BAA+B,CAAC;AAEjF,2DAA2D;AAC3D,eAAO,MAAM,yBAAyB,2CAA2C,CAAC;AAElF,oDAAoD;AACpD,eAAO,MAAM,gCAAgC,KAA0B,CAAC;AAExE,iEAAiE;AACjE,MAAM,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;AAEjE,+DAA+D;AAC/D,MAAM,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAExE,4DAA4D;AAC5D,MAAM,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AAKvD;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEpF;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,OAAO,GAAG,uBAAuB,CAE7F;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,CAAC,EAAE;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAKnC;AAED,kFAAkF;AAClF,eAAO,MAAM,8BAA8B,sDAOzC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { buildSocrataCatalogueUrl, createSocrataCatalogueAdapter, fetchSocrataCatalogue, parseSocrataCataloguePayload, SOCRATA_CATALOGUE_LIMIT, } from './socrataCatalogue.js';
|
|
2
|
+
/** Adapter id for the Oregon Open Data catalogue source. */
|
|
3
|
+
export const OREGON_OPEN_DATA_CATALOGUE_SOURCE_ID = 'oregon-open-data-catalogue';
|
|
4
|
+
/** Base URL for the Oregon Open Data Socrata catalogue. */
|
|
5
|
+
export const OREGON_OPEN_DATA_API_BASE = 'https://data.oregon.gov/api/views.json';
|
|
6
|
+
/** How many catalogue entries one request reads. */
|
|
7
|
+
export const OREGON_OPEN_DATA_CATALOGUE_LIMIT = SOCRATA_CATALOGUE_LIMIT;
|
|
8
|
+
/** Committed snapshot, so a build works when the Oregon host is unreachable. */
|
|
9
|
+
const OREGON_OPEN_DATA_FIXTURE_FILENAME = 'oregon-open-data-catalogue-2026-11-08.json';
|
|
10
|
+
/**
|
|
11
|
+
* Builds the request URL for one page of the Oregon catalogue.
|
|
12
|
+
*
|
|
13
|
+
* @param options - an optional entry cap
|
|
14
|
+
* @returns the full request URL
|
|
15
|
+
*/
|
|
16
|
+
export function buildOregonOpenDataCatalogueUrl(options) {
|
|
17
|
+
return buildSocrataCatalogueUrl(OREGON_OPEN_DATA_API_BASE, options);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parses one page of the Oregon catalogue into entries and topic counts.
|
|
21
|
+
*
|
|
22
|
+
* @param payload - the JSON body from the Oregon Socrata discovery API
|
|
23
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
24
|
+
*/
|
|
25
|
+
export function parseOregonOpenDataCataloguePayload(payload) {
|
|
26
|
+
return parseSocrataCataloguePayload(OREGON_OPEN_DATA_CATALOGUE_SOURCE_ID, payload);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Reads one page of the Oregon Open Data catalogue.
|
|
30
|
+
*
|
|
31
|
+
* @param options - an optional entry cap and fetch stub
|
|
32
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
33
|
+
*/
|
|
34
|
+
export async function fetchOregonOpenDataCatalogue(options) {
|
|
35
|
+
return fetchSocrataCatalogue({ sourceId: OREGON_OPEN_DATA_CATALOGUE_SOURCE_ID, apiBase: OREGON_OPEN_DATA_API_BASE }, options);
|
|
36
|
+
}
|
|
37
|
+
/** Oregon Open Data catalogue of datasets, files, and filtered views, keyless. */
|
|
38
|
+
export const oregonOpenDataCatalogueAdapter = createSocrataCatalogueAdapter({
|
|
39
|
+
sourceId: OREGON_OPEN_DATA_CATALOGUE_SOURCE_ID,
|
|
40
|
+
name: 'Oregon Open Data catalogue',
|
|
41
|
+
description: 'The Oregon Open Data Socrata catalogue, one row per published dataset, file, or filtered view, with its state topic, view count, and download count.',
|
|
42
|
+
apiBase: OREGON_OPEN_DATA_API_BASE,
|
|
43
|
+
fixtureFilename: OREGON_OPEN_DATA_FIXTURE_FILENAME,
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=oregonOpenDataCatalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oregonOpenDataCatalogue.js","sourceRoot":"","sources":["../src/oregonOpenDataCatalogue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,GAIxB,MAAM,uBAAuB,CAAC;AAE/B,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oCAAoC,GAAG,4BAA4B,CAAC;AAEjF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,wCAAwC,CAAC;AAElF,oDAAoD;AACpD,MAAM,CAAC,MAAM,gCAAgC,GAAG,uBAAuB,CAAC;AAWxE,gFAAgF;AAChF,MAAM,iCAAiC,GAAG,4CAA4C,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAA4B;IAC1E,OAAO,wBAAwB,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mCAAmC,CAAC,OAAgB;IAClE,OAAO,4BAA4B,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAGlD;IACC,OAAO,qBAAqB,CAC1B,EAAE,QAAQ,EAAE,oCAAoC,EAAE,OAAO,EAAE,yBAAyB,EAAE,EACtF,OAAO,CACR,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,8BAA8B,GAAG,6BAA6B,CAAC;IAC1E,QAAQ,EAAE,oCAAoC;IAC9C,IAAI,EAAE,4BAA4B;IAClC,WAAW,EACT,sJAAsJ;IACxJ,OAAO,EAAE,yBAAyB;IAClC,eAAe,EAAE,iCAAiC;CACnD,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type SocrataCatalogue, type SocrataCatalogueCategoryCount, type SocrataCatalogueEntry } from './socrataCatalogue.js';
|
|
2
|
+
/** Adapter id for the Pennsylvania Open Data catalogue source. */
|
|
3
|
+
export declare const PENNSYLVANIA_OPEN_DATA_CATALOGUE_SOURCE_ID = "pennsylvania-open-data-catalogue";
|
|
4
|
+
/** Base URL for the Pennsylvania Open Data Socrata catalogue. */
|
|
5
|
+
export declare const PENNSYLVANIA_OPEN_DATA_API_BASE = "https://data.pa.gov/api/views.json";
|
|
6
|
+
/** How many catalogue entries one request reads. */
|
|
7
|
+
export declare const PENNSYLVANIA_OPEN_DATA_CATALOGUE_LIMIT = 10;
|
|
8
|
+
/** One catalogue entry from the Pennsylvania Socrata discovery API. */
|
|
9
|
+
export type PennsylvaniaOpenDataCatalogueEntry = SocrataCatalogueEntry;
|
|
10
|
+
/** One state topic and how many catalogue entries carry it. */
|
|
11
|
+
export type PennsylvaniaOpenDataCategoryCount = SocrataCatalogueCategoryCount;
|
|
12
|
+
/** One page of the Pennsylvania catalogue, folded for a story. */
|
|
13
|
+
export type PennsylvaniaOpenDataCatalogue = SocrataCatalogue;
|
|
14
|
+
/**
|
|
15
|
+
* Builds the request URL for one page of the Pennsylvania catalogue.
|
|
16
|
+
*
|
|
17
|
+
* @param options - an optional entry cap
|
|
18
|
+
* @returns the full request URL
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildPennsylvaniaOpenDataCatalogueUrl(options?: {
|
|
21
|
+
limit?: number;
|
|
22
|
+
}): string;
|
|
23
|
+
/**
|
|
24
|
+
* Parses one page of the Pennsylvania catalogue into entries and topic counts.
|
|
25
|
+
*
|
|
26
|
+
* @param payload - the JSON body from the Pennsylvania Socrata discovery API
|
|
27
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
28
|
+
*/
|
|
29
|
+
export declare function parsePennsylvaniaOpenDataCataloguePayload(payload: unknown): PennsylvaniaOpenDataCatalogue;
|
|
30
|
+
/**
|
|
31
|
+
* Reads one page of the Pennsylvania Open Data catalogue.
|
|
32
|
+
*
|
|
33
|
+
* @param options - an optional entry cap and fetch stub
|
|
34
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
35
|
+
*/
|
|
36
|
+
export declare function fetchPennsylvaniaOpenDataCatalogue(options?: {
|
|
37
|
+
limit?: number;
|
|
38
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
39
|
+
}): Promise<PennsylvaniaOpenDataCatalogue>;
|
|
40
|
+
/** Pennsylvania Open Data catalogue of datasets, charts, and linked resources, keyless. */
|
|
41
|
+
export declare const pennsylvaniaOpenDataCatalogueAdapter: import("./types.js").UsDataAdapter<SocrataCatalogue>;
|
|
42
|
+
//# sourceMappingURL=pennsylvaniaOpenDataCatalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pennsylvaniaOpenDataCatalogue.d.ts","sourceRoot":"","sources":["../src/pennsylvaniaOpenDataCatalogue.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAE/B,kEAAkE;AAClE,eAAO,MAAM,0CAA0C,qCAAqC,CAAC;AAE7F,iEAAiE;AACjE,eAAO,MAAM,+BAA+B,uCAAuC,CAAC;AAEpF,oDAAoD;AACpD,eAAO,MAAM,sCAAsC,KAA0B,CAAC;AAE9E,uEAAuE;AACvE,MAAM,MAAM,kCAAkC,GAAG,qBAAqB,CAAC;AAEvE,+DAA+D;AAC/D,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,CAAC;AAE9E,kEAAkE;AAClE,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;AAK7D;;;;;GAKG;AACH,wBAAgB,qCAAqC,CAAC,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE1F;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,OAAO,GACf,6BAA6B,CAE/B;AAED;;;;;GAKG;AACH,wBAAsB,kCAAkC,CAAC,OAAO,CAAC,EAAE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAQzC;AAED,2FAA2F;AAC3F,eAAO,MAAM,oCAAoC,sDAO/C,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { buildSocrataCatalogueUrl, createSocrataCatalogueAdapter, fetchSocrataCatalogue, parseSocrataCataloguePayload, SOCRATA_CATALOGUE_LIMIT, } from './socrataCatalogue.js';
|
|
2
|
+
/** Adapter id for the Pennsylvania Open Data catalogue source. */
|
|
3
|
+
export const PENNSYLVANIA_OPEN_DATA_CATALOGUE_SOURCE_ID = 'pennsylvania-open-data-catalogue';
|
|
4
|
+
/** Base URL for the Pennsylvania Open Data Socrata catalogue. */
|
|
5
|
+
export const PENNSYLVANIA_OPEN_DATA_API_BASE = 'https://data.pa.gov/api/views.json';
|
|
6
|
+
/** How many catalogue entries one request reads. */
|
|
7
|
+
export const PENNSYLVANIA_OPEN_DATA_CATALOGUE_LIMIT = SOCRATA_CATALOGUE_LIMIT;
|
|
8
|
+
/** Committed snapshot, so a build works when the Pennsylvania host is unreachable. */
|
|
9
|
+
const PENNSYLVANIA_OPEN_DATA_FIXTURE_FILENAME = 'pennsylvania-open-data-catalogue-2026-11-08.json';
|
|
10
|
+
/**
|
|
11
|
+
* Builds the request URL for one page of the Pennsylvania catalogue.
|
|
12
|
+
*
|
|
13
|
+
* @param options - an optional entry cap
|
|
14
|
+
* @returns the full request URL
|
|
15
|
+
*/
|
|
16
|
+
export function buildPennsylvaniaOpenDataCatalogueUrl(options) {
|
|
17
|
+
return buildSocrataCatalogueUrl(PENNSYLVANIA_OPEN_DATA_API_BASE, options);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parses one page of the Pennsylvania catalogue into entries and topic counts.
|
|
21
|
+
*
|
|
22
|
+
* @param payload - the JSON body from the Pennsylvania Socrata discovery API
|
|
23
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
24
|
+
*/
|
|
25
|
+
export function parsePennsylvaniaOpenDataCataloguePayload(payload) {
|
|
26
|
+
return parseSocrataCataloguePayload(PENNSYLVANIA_OPEN_DATA_CATALOGUE_SOURCE_ID, payload);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Reads one page of the Pennsylvania Open Data catalogue.
|
|
30
|
+
*
|
|
31
|
+
* @param options - an optional entry cap and fetch stub
|
|
32
|
+
* @returns the entries in the page, the counts, and the newest entry
|
|
33
|
+
*/
|
|
34
|
+
export async function fetchPennsylvaniaOpenDataCatalogue(options) {
|
|
35
|
+
return fetchSocrataCatalogue({
|
|
36
|
+
sourceId: PENNSYLVANIA_OPEN_DATA_CATALOGUE_SOURCE_ID,
|
|
37
|
+
apiBase: PENNSYLVANIA_OPEN_DATA_API_BASE,
|
|
38
|
+
}, options);
|
|
39
|
+
}
|
|
40
|
+
/** Pennsylvania Open Data catalogue of datasets, charts, and linked resources, keyless. */
|
|
41
|
+
export const pennsylvaniaOpenDataCatalogueAdapter = createSocrataCatalogueAdapter({
|
|
42
|
+
sourceId: PENNSYLVANIA_OPEN_DATA_CATALOGUE_SOURCE_ID,
|
|
43
|
+
name: 'Pennsylvania Open Data catalogue',
|
|
44
|
+
description: 'The Pennsylvania Open Data Socrata catalogue, one row per published dataset, chart, or linked resource, with its state topic, view count, and download count.',
|
|
45
|
+
apiBase: PENNSYLVANIA_OPEN_DATA_API_BASE,
|
|
46
|
+
fixtureFilename: PENNSYLVANIA_OPEN_DATA_FIXTURE_FILENAME,
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=pennsylvaniaOpenDataCatalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pennsylvaniaOpenDataCatalogue.js","sourceRoot":"","sources":["../src/pennsylvaniaOpenDataCatalogue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,GAIxB,MAAM,uBAAuB,CAAC;AAE/B,kEAAkE;AAClE,MAAM,CAAC,MAAM,0CAA0C,GAAG,kCAAkC,CAAC;AAE7F,iEAAiE;AACjE,MAAM,CAAC,MAAM,+BAA+B,GAAG,oCAAoC,CAAC;AAEpF,oDAAoD;AACpD,MAAM,CAAC,MAAM,sCAAsC,GAAG,uBAAuB,CAAC;AAW9E,sFAAsF;AACtF,MAAM,uCAAuC,GAAG,kDAAkD,CAAC;AAEnG;;;;;GAKG;AACH,MAAM,UAAU,qCAAqC,CAAC,OAA4B;IAChF,OAAO,wBAAwB,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yCAAyC,CACvD,OAAgB;IAEhB,OAAO,4BAA4B,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,OAGxD;IACC,OAAO,qBAAqB,CAC1B;QACE,QAAQ,EAAE,0CAA0C;QACpD,OAAO,EAAE,+BAA+B;KACzC,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,oCAAoC,GAAG,6BAA6B,CAAC;IAChF,QAAQ,EAAE,0CAA0C;IACpD,IAAI,EAAE,kCAAkC;IACxC,WAAW,EACT,+JAA+J;IACjK,OAAO,EAAE,+BAA+B;IACxC,eAAe,EAAE,uCAAuC;CACzD,CAAC,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare function probeUsDataSource<T>(adapter: UsDataAdapter<T>, options?
|
|
|
15
15
|
fetchImpl?: typeof globalThis.fetch;
|
|
16
16
|
}): Promise<UsSourceProbe>;
|
|
17
17
|
/**
|
|
18
|
-
* Probes
|
|
18
|
+
* Probes the requested sources in parallel, with optional per-source keys.
|
|
19
19
|
*
|
|
20
20
|
* @param options - a shared key, per-source keys, and a fetch stub
|
|
21
21
|
* @returns one probe result per registered source
|
|
@@ -24,5 +24,6 @@ export declare function probeAllUsDataSources(options?: {
|
|
|
24
24
|
apiKey?: string;
|
|
25
25
|
apiKeys?: Record<string, string>;
|
|
26
26
|
fetchImpl?: typeof globalThis.fetch;
|
|
27
|
+
ids?: string[];
|
|
27
28
|
}): Promise<UsSourceProbe[]>;
|
|
28
29
|
//# sourceMappingURL=registry.d.ts.map
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAE,aAAa,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/E,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,EAgDnD,CAAC;AAEF,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAE3E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAE,GACjE,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAuB3B"}
|