@usa-open-data-connectors/usa-sources 0.1.2 → 0.1.4
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/LICENSE +21 -0
- package/README.md +442 -214
- package/dist/apiKey.d.ts +12 -0
- package/dist/apiKey.d.ts.map +1 -0
- package/dist/apiKey.js +18 -0
- package/dist/apiKey.js.map +1 -0
- package/dist/blsSeries.d.ts.map +1 -1
- package/dist/blsSeries.js +2 -4
- package/dist/blsSeries.js.map +1 -1
- package/dist/btsTransportationStats.d.ts +87 -0
- package/dist/btsTransportationStats.d.ts.map +1 -0
- package/dist/btsTransportationStats.js +130 -0
- package/dist/btsTransportationStats.js.map +1 -0
- package/dist/cdcCountyObesity.d.ts.map +1 -1
- package/dist/cdcCountyObesity.js +3 -5
- package/dist/cdcCountyObesity.js.map +1 -1
- package/dist/cdcSocrataCatalogue.d.ts +87 -0
- package/dist/cdcSocrataCatalogue.d.ts.map +1 -0
- package/dist/cdcSocrataCatalogue.js +130 -0
- package/dist/cdcSocrataCatalogue.js.map +1 -0
- package/dist/cfpbConsumerComplaints.d.ts +2 -0
- package/dist/cfpbConsumerComplaints.d.ts.map +1 -1
- package/dist/cfpbConsumerComplaints.js +12 -12
- package/dist/cfpbConsumerComplaints.js.map +1 -1
- package/dist/clinicalTrialsStudies.d.ts +92 -0
- package/dist/clinicalTrialsStudies.d.ts.map +1 -0
- package/dist/clinicalTrialsStudies.js +147 -0
- package/dist/clinicalTrialsStudies.js.map +1 -0
- package/dist/cpscProductRecalls.d.ts.map +1 -1
- package/dist/cpscProductRecalls.js +2 -4
- package/dist/cpscProductRecalls.js.map +1 -1
- package/dist/epaEnvirofactsFacilities.d.ts +94 -0
- package/dist/epaEnvirofactsFacilities.d.ts.map +1 -0
- package/dist/epaEnvirofactsFacilities.js +140 -0
- package/dist/epaEnvirofactsFacilities.js.map +1 -0
- package/dist/errors.d.ts +12 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -4
- package/dist/errors.js.map +1 -1
- package/dist/estimatetaxIncomeTax.d.ts +140 -0
- package/dist/estimatetaxIncomeTax.d.ts.map +1 -0
- package/dist/estimatetaxIncomeTax.js +225 -0
- package/dist/estimatetaxIncomeTax.js.map +1 -0
- package/dist/fdicBankDirectory.d.ts +78 -0
- package/dist/fdicBankDirectory.d.ts.map +1 -0
- package/dist/fdicBankDirectory.js +122 -0
- package/dist/fdicBankDirectory.js.map +1 -0
- package/dist/femaDisasterDeclarations.d.ts.map +1 -1
- package/dist/femaDisasterDeclarations.js +2 -4
- package/dist/femaDisasterDeclarations.js.map +1 -1
- package/dist/healthdataSocrataCatalogue.d.ts +87 -0
- package/dist/healthdataSocrataCatalogue.d.ts.map +1 -0
- package/dist/healthdataSocrataCatalogue.js +130 -0
- package/dist/healthdataSocrataCatalogue.js.map +1 -0
- package/dist/http.d.ts +36 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +85 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +61 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -1
- package/dist/index.js.map +1 -1
- package/dist/ncbiPubmedSearch.d.ts +71 -0
- package/dist/ncbiPubmedSearch.d.ts.map +1 -0
- package/dist/ncbiPubmedSearch.js +126 -0
- package/dist/ncbiPubmedSearch.js.map +1 -0
- package/dist/nceiAnnualTemperature.d.ts.map +1 -1
- package/dist/nceiAnnualTemperature.js +3 -5
- package/dist/nceiAnnualTemperature.js.map +1 -1
- package/dist/noaaSeaLevel.d.ts.map +1 -1
- package/dist/noaaSeaLevel.js +2 -4
- package/dist/noaaSeaLevel.js.map +1 -1
- package/dist/nwsPointForecast.d.ts +99 -0
- package/dist/nwsPointForecast.d.ts.map +1 -0
- package/dist/nwsPointForecast.js +147 -0
- package/dist/nwsPointForecast.js.map +1 -0
- package/dist/nycOpenDataCatalogue.d.ts +97 -0
- package/dist/nycOpenDataCatalogue.d.ts.map +1 -0
- package/dist/nycOpenDataCatalogue.js +151 -0
- package/dist/nycOpenDataCatalogue.js.map +1 -0
- package/dist/openFdaFoodRecalls.d.ts.map +1 -1
- package/dist/openFdaFoodRecalls.js +2 -4
- package/dist/openFdaFoodRecalls.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +30 -2
- package/dist/registry.js.map +1 -1
- package/dist/secEdgarFilings.d.ts +103 -0
- package/dist/secEdgarFilings.d.ts.map +1 -0
- package/dist/secEdgarFilings.js +215 -0
- package/dist/secEdgarFilings.js.map +1 -0
- package/dist/treasuryAvgInterestRate.d.ts.map +1 -1
- package/dist/treasuryAvgInterestRate.js +2 -4
- package/dist/treasuryAvgInterestRate.js.map +1 -1
- package/dist/treasuryDebtToPenny.d.ts +90 -0
- package/dist/treasuryDebtToPenny.d.ts.map +1 -0
- package/dist/treasuryDebtToPenny.js +168 -0
- package/dist/treasuryDebtToPenny.js.map +1 -0
- package/dist/usaspendingAgencies.d.ts +78 -0
- package/dist/usaspendingAgencies.d.ts.map +1 -0
- package/dist/usaspendingAgencies.js +119 -0
- package/dist/usaspendingAgencies.js.map +1 -0
- package/dist/usgsEarthquakes.d.ts.map +1 -1
- package/dist/usgsEarthquakes.js +2 -4
- package/dist/usgsEarthquakes.js.map +1 -1
- package/dist/usgsPeakStreamflow.d.ts.map +1 -1
- package/dist/usgsPeakStreamflow.js +3 -5
- package/dist/usgsPeakStreamflow.js.map +1 -1
- package/package.json +13 -4
|
@@ -0,0 +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,CAW5B;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,gBAAgB,CAWnE,CAAC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { UsSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
4
|
+
import { readFixtureJson } from './fixtures.js';
|
|
5
|
+
/** Adapter id for the National Weather Service point-forecast source. */
|
|
6
|
+
export const NWS_POINT_FORECAST_SOURCE_ID = 'nws-point-forecast';
|
|
7
|
+
/**
|
|
8
|
+
* User-Agent header the National Weather Service asks every caller to send.
|
|
9
|
+
*
|
|
10
|
+
* The service returns an error page to a request that does not identify its
|
|
11
|
+
* operator, so the adapter sends a descriptive name and a contact address on
|
|
12
|
+
* every call. A real deployment should override the contact with its own.
|
|
13
|
+
*/
|
|
14
|
+
export const NWS_USER_AGENT = 'usa-open-data-connectors (https://github.com/olitreadwell/usa-open-data-connectors)';
|
|
15
|
+
/** Base URL for the National Weather Service API. */
|
|
16
|
+
export const NWS_API_BASE = 'https://api.weather.gov';
|
|
17
|
+
/** Path of the point lookup that resolves a coordinate to a forecast grid. */
|
|
18
|
+
export const NWS_POINT_FORECAST_PATH = '/points';
|
|
19
|
+
/** Latitude of the default point, the Washington Monument in Washington, DC. */
|
|
20
|
+
export const NWS_DEFAULT_LATITUDE = 38.8894;
|
|
21
|
+
/** Longitude of the default point, the Washington Monument in Washington, DC. */
|
|
22
|
+
export const NWS_DEFAULT_LONGITUDE = -77.0352;
|
|
23
|
+
/** Committed snapshot, so a build works when the weather service is unreachable. */
|
|
24
|
+
const NWS_POINT_FORECAST_FIXTURE_FILENAME = 'nws-point-forecast-2026-10-05.json';
|
|
25
|
+
const NWS_PROPERTIES_SCHEMA = z.object({
|
|
26
|
+
city: z.string().optional(),
|
|
27
|
+
state: z.string().optional(),
|
|
28
|
+
gridId: z.string().optional(),
|
|
29
|
+
gridX: z.number().optional(),
|
|
30
|
+
gridY: z.number().optional(),
|
|
31
|
+
forecastOffice: z.string().optional(),
|
|
32
|
+
forecast: z.string().optional(),
|
|
33
|
+
forecastHourly: z.string().optional(),
|
|
34
|
+
forecastGridData: z.string().optional(),
|
|
35
|
+
observationStations: z.string().optional(),
|
|
36
|
+
timeZone: z.string().optional(),
|
|
37
|
+
radarStation: z.string().optional(),
|
|
38
|
+
county: z.string().optional(),
|
|
39
|
+
fireWeatherZone: z.string().optional(),
|
|
40
|
+
relativeLocation: z
|
|
41
|
+
.object({
|
|
42
|
+
properties: z
|
|
43
|
+
.object({ city: z.string().optional(), state: z.string().optional() })
|
|
44
|
+
.optional(),
|
|
45
|
+
})
|
|
46
|
+
.optional(),
|
|
47
|
+
});
|
|
48
|
+
const NWS_POINT_FORECAST_SCHEMA = z.object({
|
|
49
|
+
type: z.string().optional(),
|
|
50
|
+
geometry: z.object({ coordinates: z.array(z.number()).optional() }).optional(),
|
|
51
|
+
properties: NWS_PROPERTIES_SCHEMA.optional(),
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Builds the request URL for one point lookup.
|
|
55
|
+
*
|
|
56
|
+
* The endpoint is keyless. Coordinates are written the way the service takes
|
|
57
|
+
* them, latitude first and longitude second, with no space after the comma.
|
|
58
|
+
*
|
|
59
|
+
* @param latitude - the latitude to look up
|
|
60
|
+
* @param longitude - the longitude to look up
|
|
61
|
+
* @returns the full request URL
|
|
62
|
+
*/
|
|
63
|
+
export function buildNwsPointUrl(latitude = NWS_DEFAULT_LATITUDE, longitude = NWS_DEFAULT_LONGITUDE) {
|
|
64
|
+
return `${NWS_API_BASE}${NWS_POINT_FORECAST_PATH}/${latitude},${longitude}`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parses one point lookup into the grid point and its forecast URLs.
|
|
68
|
+
*
|
|
69
|
+
* The service answers with a GeoJSON feature. A response whose type is not a
|
|
70
|
+
* feature or whose coordinates are not a latitude and longitude pair is a
|
|
71
|
+
* changed shape and stops the parse. The forecast and grid fields must also
|
|
72
|
+
* be present, because a point without them is not usable as a forecast entry.
|
|
73
|
+
*
|
|
74
|
+
* @param payload - the JSON body from the weather service
|
|
75
|
+
* @returns the grid point, its place, and the URLs that lead to the forecast
|
|
76
|
+
*/
|
|
77
|
+
export function parseNwsPointForecastPayload(payload) {
|
|
78
|
+
const parsed = NWS_POINT_FORECAST_SCHEMA.safeParse(payload);
|
|
79
|
+
if (!parsed.success) {
|
|
80
|
+
throw new UsSourceParseError(NWS_POINT_FORECAST_SOURCE_ID, parsed.error.message);
|
|
81
|
+
}
|
|
82
|
+
if (parsed.data.type !== 'Feature') {
|
|
83
|
+
throw new UsSourceParseError(NWS_POINT_FORECAST_SOURCE_ID, `The response is not a GeoJSON feature: ${parsed.data.type ?? 'missing type'}`);
|
|
84
|
+
}
|
|
85
|
+
const coordinates = parsed.data.geometry?.coordinates;
|
|
86
|
+
const longitude = coordinates?.[0];
|
|
87
|
+
const latitude = coordinates?.[1];
|
|
88
|
+
if (longitude === undefined || latitude === undefined) {
|
|
89
|
+
throw new UsSourceParseError(NWS_POINT_FORECAST_SOURCE_ID, 'The response carried no coordinate pair');
|
|
90
|
+
}
|
|
91
|
+
const properties = parsed.data.properties;
|
|
92
|
+
if (properties?.gridId === undefined ||
|
|
93
|
+
properties.gridX === undefined ||
|
|
94
|
+
properties.gridY === undefined ||
|
|
95
|
+
properties.forecast === undefined ||
|
|
96
|
+
properties.forecastOffice === undefined) {
|
|
97
|
+
throw new UsSourceParseError(NWS_POINT_FORECAST_SOURCE_ID, 'The response carried no forecast grid for the point');
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
latitude,
|
|
101
|
+
longitude,
|
|
102
|
+
city: properties.relativeLocation?.properties?.city ?? '',
|
|
103
|
+
state: properties.relativeLocation?.properties?.state ?? '',
|
|
104
|
+
gridId: properties.gridId,
|
|
105
|
+
gridX: properties.gridX,
|
|
106
|
+
gridY: properties.gridY,
|
|
107
|
+
forecastOfficeUrl: properties.forecastOffice,
|
|
108
|
+
forecastUrl: properties.forecast,
|
|
109
|
+
forecastHourlyUrl: properties.forecastHourly ?? '',
|
|
110
|
+
forecastGridDataUrl: properties.forecastGridData ?? '',
|
|
111
|
+
observationStationsUrl: properties.observationStations ?? '',
|
|
112
|
+
timeZone: properties.timeZone ?? '',
|
|
113
|
+
radarStation: properties.radarStation ?? null,
|
|
114
|
+
countyUrl: properties.county ?? '',
|
|
115
|
+
fireWeatherZoneUrl: properties.fireWeatherZone ?? '',
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Reads one forecast grid point from the weather service.
|
|
120
|
+
*
|
|
121
|
+
* The service asks every caller to identify itself, so the request carries a
|
|
122
|
+
* descriptive User-Agent header. One keyless request resolves the coordinate
|
|
123
|
+
* to a grid point and returns the URLs that lead to the forecast.
|
|
124
|
+
*
|
|
125
|
+
* @param options - an optional latitude and longitude, plus a fetch stub
|
|
126
|
+
* @returns the grid point, its place, and the URLs that lead to the forecast
|
|
127
|
+
*/
|
|
128
|
+
export async function fetchNwsPointForecast(options) {
|
|
129
|
+
const fetchImpl = options?.fetchImpl ?? globalThis.fetch;
|
|
130
|
+
const url = buildNwsPointUrl(options?.latitude ?? NWS_DEFAULT_LATITUDE, options?.longitude ?? NWS_DEFAULT_LONGITUDE);
|
|
131
|
+
const response = await httpGet(NWS_POINT_FORECAST_SOURCE_ID, url, {
|
|
132
|
+
fetchImpl,
|
|
133
|
+
headers: { 'User-Agent': NWS_USER_AGENT },
|
|
134
|
+
});
|
|
135
|
+
return parseNwsPointForecastPayload(await response.json());
|
|
136
|
+
}
|
|
137
|
+
/** National Weather Service forecast grid point for a coordinate, keyless. */
|
|
138
|
+
export const nwsPointForecastAdapter = {
|
|
139
|
+
id: NWS_POINT_FORECAST_SOURCE_ID,
|
|
140
|
+
name: 'NWS point forecast',
|
|
141
|
+
auth: 'none',
|
|
142
|
+
description: 'The National Weather Service forecast grid point for a latitude and longitude, with the URLs that lead to the daily and hourly forecast.',
|
|
143
|
+
fetchLive: async (options) => fetchNwsPointForecast(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
144
|
+
parse: (payload) => parseNwsPointForecastPayload(payload),
|
|
145
|
+
loadFixture: () => parseNwsPointForecastPayload(readFixtureJson(NWS_POINT_FORECAST_FIXTURE_FILENAME)),
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=nwsPointForecast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nwsPointForecast.js","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { UsDataAdapter } from './types.js';
|
|
2
|
+
/** Adapter id for the nyc-open-data-catalogue source. */
|
|
3
|
+
export declare const NYC_OPEN_DATA_CATALOGUE_SOURCE_ID = "nyc-open-data-catalogue";
|
|
4
|
+
/** One catalogue entry from the NYC Socrata discovery API. */
|
|
5
|
+
export interface NycOpenDataCatalogueEntry {
|
|
6
|
+
/** Four-by-four Socrata dataset id, e.g. "irx2-vgm4". */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Human-readable title of the dataset, map, chart, story, or file. */
|
|
9
|
+
name: string;
|
|
10
|
+
/** What the entry is: "dataset", "map", "chart", "story", or "file". */
|
|
11
|
+
assetType: string;
|
|
12
|
+
/** City topic the entry belongs to, or null when the catalogue lists none. */
|
|
13
|
+
category: string | null;
|
|
14
|
+
/** How the entry is rendered, e.g. "tabular" or "map". */
|
|
15
|
+
viewType: string;
|
|
16
|
+
/** When the entry was created, in seconds since the Unix epoch. */
|
|
17
|
+
createdAtEpochSeconds: number;
|
|
18
|
+
/** When the entry was last modified, in seconds since the Unix epoch. */
|
|
19
|
+
viewLastModifiedEpochSeconds: number;
|
|
20
|
+
/** How many times the entry has been viewed. */
|
|
21
|
+
viewCount: number;
|
|
22
|
+
/** How many times the entry has been downloaded. */
|
|
23
|
+
downloadCount: number;
|
|
24
|
+
}
|
|
25
|
+
/** One city topic and how many catalogue entries carry it. */
|
|
26
|
+
export interface NycOpenDataCategoryCount {
|
|
27
|
+
category: string;
|
|
28
|
+
entryCount: number;
|
|
29
|
+
}
|
|
30
|
+
/** One page of the New York City catalogue, folded for a story. */
|
|
31
|
+
export interface NycOpenDataCatalogue {
|
|
32
|
+
/** One entry per catalogue item in the page. */
|
|
33
|
+
entries: NycOpenDataCatalogueEntry[];
|
|
34
|
+
entryCount: number;
|
|
35
|
+
/** Entries whose asset type is "dataset". */
|
|
36
|
+
datasetCount: number;
|
|
37
|
+
/** Entries whose asset type is "map". */
|
|
38
|
+
mapCount: number;
|
|
39
|
+
/** Entry with the latest creation time. Ties go to the earlier list entry. */
|
|
40
|
+
newestEntry: NycOpenDataCatalogueEntry;
|
|
41
|
+
/** Entry the page has been viewed the most. Ties go to the earlier entry. */
|
|
42
|
+
mostViewedEntry: NycOpenDataCatalogueEntry;
|
|
43
|
+
/** Entry the page has been downloaded the most. Ties go to the earlier entry. */
|
|
44
|
+
mostDownloadedEntry: NycOpenDataCatalogueEntry;
|
|
45
|
+
/** Views across every entry in the page. */
|
|
46
|
+
totalViewCount: number;
|
|
47
|
+
/** Downloads across every entry in the page. */
|
|
48
|
+
totalDownloadCount: number;
|
|
49
|
+
/**
|
|
50
|
+
* Categories in the page, most entries first, ties broken by name. An entry
|
|
51
|
+
* the catalogue lists without a category is counted under "Uncategorised".
|
|
52
|
+
*/
|
|
53
|
+
categories: NycOpenDataCategoryCount[];
|
|
54
|
+
}
|
|
55
|
+
/** Base URL for the New York City Socrata catalogue. */
|
|
56
|
+
export declare const NYC_OPEN_DATA_API_BASE = "https://data.cityofnewyork.us/api/views.json";
|
|
57
|
+
/** How many catalogue entries one request reads. */
|
|
58
|
+
export declare const NYC_OPEN_DATA_CATALOGUE_LIMIT = 50;
|
|
59
|
+
/**
|
|
60
|
+
* Builds the request URL for one page of the New York City catalogue.
|
|
61
|
+
*
|
|
62
|
+
* The endpoint is keyless. The service answers the whole catalogue by default,
|
|
63
|
+
* so the adapter asks for a short page.
|
|
64
|
+
*
|
|
65
|
+
* @param options - an optional entry cap
|
|
66
|
+
* @returns the full request URL
|
|
67
|
+
*/
|
|
68
|
+
export declare function buildNycOpenDataCatalogueUrl(options?: {
|
|
69
|
+
limit?: number;
|
|
70
|
+
}): string;
|
|
71
|
+
/**
|
|
72
|
+
* Parses one page of the catalogue into the entries and the city-topic counts.
|
|
73
|
+
*
|
|
74
|
+
* An entry without an id, a name, or a creation time is a changed shape and
|
|
75
|
+
* stops the parse. An empty page also stops the parse, because a catalogue
|
|
76
|
+
* with no entries is not a usable answer.
|
|
77
|
+
*
|
|
78
|
+
* @param payload - the JSON body from the NYC Socrata discovery API
|
|
79
|
+
* @returns the entries in the page, the counts, the totals, and the leaders
|
|
80
|
+
*/
|
|
81
|
+
export declare function parseNycOpenDataCataloguePayload(payload: unknown): NycOpenDataCatalogue;
|
|
82
|
+
/**
|
|
83
|
+
* Reads one page of the New York City catalogue.
|
|
84
|
+
*
|
|
85
|
+
* One keyless request covers the page and reports what the city portal holds,
|
|
86
|
+
* without reading any dataset's rows.
|
|
87
|
+
*
|
|
88
|
+
* @param options - an optional entry cap and fetch stub
|
|
89
|
+
* @returns the entries in the page, the counts, the totals, and the leaders
|
|
90
|
+
*/
|
|
91
|
+
export declare function fetchNycOpenDataCatalogue(options?: {
|
|
92
|
+
limit?: number;
|
|
93
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
94
|
+
}): Promise<NycOpenDataCatalogue>;
|
|
95
|
+
/** New York City Open Data catalogue of datasets and maps, keyless. */
|
|
96
|
+
export declare const nycOpenDataCatalogueAdapter: UsDataAdapter<NycOpenDataCatalogue>;
|
|
97
|
+
//# sourceMappingURL=nycOpenDataCatalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nycOpenDataCatalogue.d.ts","sourceRoot":"","sources":["../src/nycOpenDataCatalogue.ts"],"names":[],"mappings":"AAKA,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;CACvB;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;AA6EhD;;;;;;;;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,CA4CvF;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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { UsSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
4
|
+
import { readFixtureJson } from './fixtures.js';
|
|
5
|
+
/** Adapter id for the nyc-open-data-catalogue source. */
|
|
6
|
+
export const NYC_OPEN_DATA_CATALOGUE_SOURCE_ID = 'nyc-open-data-catalogue';
|
|
7
|
+
/** Base URL for the New York City Socrata catalogue. */
|
|
8
|
+
export const NYC_OPEN_DATA_API_BASE = 'https://data.cityofnewyork.us/api/views.json';
|
|
9
|
+
/** How many catalogue entries one request reads. */
|
|
10
|
+
export const NYC_OPEN_DATA_CATALOGUE_LIMIT = 50;
|
|
11
|
+
/** Committed snapshot, so a build works when the NYC host is unreachable. */
|
|
12
|
+
const NYC_OPEN_DATA_FIXTURE_FILENAME = 'nyc-open-data-catalogue-2026-10-19.json';
|
|
13
|
+
/** Category bucket the adapter uses for an entry the catalogue lists without one. */
|
|
14
|
+
const NYC_OPEN_DATA_UNCATEGORISED = 'Uncategorised';
|
|
15
|
+
// The discovery API sends a bare JSON array. A value the catalogue does not
|
|
16
|
+
// carry arrives as null, and every count arrives as a number.
|
|
17
|
+
const NYC_OPEN_DATA_ENTRY_SCHEMA = z.object({
|
|
18
|
+
id: z.string().optional(),
|
|
19
|
+
name: z.string().optional(),
|
|
20
|
+
assetType: z.string().optional(),
|
|
21
|
+
category: z.string().nullable().optional(),
|
|
22
|
+
viewType: z.string().optional(),
|
|
23
|
+
createdAt: z.number().optional(),
|
|
24
|
+
viewLastModified: z.number().optional(),
|
|
25
|
+
viewCount: z.number().optional(),
|
|
26
|
+
downloadCount: z.number().optional(),
|
|
27
|
+
});
|
|
28
|
+
const NYC_OPEN_DATA_PAYLOAD_SCHEMA = z.array(NYC_OPEN_DATA_ENTRY_SCHEMA);
|
|
29
|
+
/** Counts entries per category, most entries first, ties by name. */
|
|
30
|
+
function countNycOpenDataCategories(entries) {
|
|
31
|
+
const counts = new Map();
|
|
32
|
+
for (const entry of entries) {
|
|
33
|
+
const category = entry.category ?? NYC_OPEN_DATA_UNCATEGORISED;
|
|
34
|
+
counts.set(category, (counts.get(category) ?? 0) + 1);
|
|
35
|
+
}
|
|
36
|
+
return [...counts.entries()]
|
|
37
|
+
.sort(([leftCategory, leftCount], [rightCategory, rightCount]) => leftCount === rightCount ? leftCategory.localeCompare(rightCategory) : rightCount - leftCount)
|
|
38
|
+
.map(([category, entryCount]) => ({ category, entryCount }));
|
|
39
|
+
}
|
|
40
|
+
/** Picks the entry with the latest creation time, ties to the earlier entry. */
|
|
41
|
+
function newestNycOpenDataEntry(entries) {
|
|
42
|
+
const first = entries[0];
|
|
43
|
+
if (first === undefined) {
|
|
44
|
+
throw new UsSourceParseError(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, 'No entries to summarise');
|
|
45
|
+
}
|
|
46
|
+
return entries.reduce((best, entry) => (entry.createdAtEpochSeconds > best.createdAtEpochSeconds ? entry : best), first);
|
|
47
|
+
}
|
|
48
|
+
/** Picks the entry with the highest view count, ties to the earlier entry. */
|
|
49
|
+
function mostViewedNycOpenDataEntry(entries) {
|
|
50
|
+
const first = entries[0];
|
|
51
|
+
if (first === undefined) {
|
|
52
|
+
throw new UsSourceParseError(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, 'No entries to summarise');
|
|
53
|
+
}
|
|
54
|
+
return entries.reduce((best, entry) => (entry.viewCount > best.viewCount ? entry : best), first);
|
|
55
|
+
}
|
|
56
|
+
/** Picks the entry with the highest download count, ties to the earlier entry. */
|
|
57
|
+
function mostDownloadedNycOpenDataEntry(entries) {
|
|
58
|
+
const first = entries[0];
|
|
59
|
+
if (first === undefined) {
|
|
60
|
+
throw new UsSourceParseError(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, 'No entries to summarise');
|
|
61
|
+
}
|
|
62
|
+
return entries.reduce((best, entry) => (entry.downloadCount > best.downloadCount ? entry : best), first);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Builds the request URL for one page of the New York City catalogue.
|
|
66
|
+
*
|
|
67
|
+
* The endpoint is keyless. The service answers the whole catalogue by default,
|
|
68
|
+
* so the adapter asks for a short page.
|
|
69
|
+
*
|
|
70
|
+
* @param options - an optional entry cap
|
|
71
|
+
* @returns the full request URL
|
|
72
|
+
*/
|
|
73
|
+
export function buildNycOpenDataCatalogueUrl(options) {
|
|
74
|
+
const params = new URLSearchParams({
|
|
75
|
+
limit: String(options?.limit ?? NYC_OPEN_DATA_CATALOGUE_LIMIT),
|
|
76
|
+
});
|
|
77
|
+
return `${NYC_OPEN_DATA_API_BASE}?${params.toString()}`;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Parses one page of the catalogue into the entries and the city-topic counts.
|
|
81
|
+
*
|
|
82
|
+
* An entry without an id, a name, or a creation time is a changed shape and
|
|
83
|
+
* stops the parse. An empty page also stops the parse, because a catalogue
|
|
84
|
+
* with no entries is not a usable answer.
|
|
85
|
+
*
|
|
86
|
+
* @param payload - the JSON body from the NYC Socrata discovery API
|
|
87
|
+
* @returns the entries in the page, the counts, the totals, and the leaders
|
|
88
|
+
*/
|
|
89
|
+
export function parseNycOpenDataCataloguePayload(payload) {
|
|
90
|
+
const parsed = NYC_OPEN_DATA_PAYLOAD_SCHEMA.safeParse(payload);
|
|
91
|
+
if (!parsed.success) {
|
|
92
|
+
throw new UsSourceParseError(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, parsed.error.message);
|
|
93
|
+
}
|
|
94
|
+
if (parsed.data.length === 0) {
|
|
95
|
+
throw new UsSourceParseError(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, 'The response carried no entries');
|
|
96
|
+
}
|
|
97
|
+
const entries = parsed.data.map((row) => {
|
|
98
|
+
if (row.id === undefined || row.name === undefined || row.createdAt === undefined) {
|
|
99
|
+
throw new UsSourceParseError(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, 'A catalogue entry arrived without its id, name, or creation time');
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
id: row.id,
|
|
103
|
+
name: row.name,
|
|
104
|
+
assetType: row.assetType ?? '',
|
|
105
|
+
category: row.category ?? null,
|
|
106
|
+
viewType: row.viewType ?? '',
|
|
107
|
+
createdAtEpochSeconds: row.createdAt,
|
|
108
|
+
viewLastModifiedEpochSeconds: row.viewLastModified ?? row.createdAt,
|
|
109
|
+
viewCount: row.viewCount ?? 0,
|
|
110
|
+
downloadCount: row.downloadCount ?? 0,
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
entries,
|
|
115
|
+
entryCount: entries.length,
|
|
116
|
+
datasetCount: entries.filter((entry) => entry.assetType === 'dataset').length,
|
|
117
|
+
mapCount: entries.filter((entry) => entry.assetType === 'map').length,
|
|
118
|
+
newestEntry: newestNycOpenDataEntry(entries),
|
|
119
|
+
mostViewedEntry: mostViewedNycOpenDataEntry(entries),
|
|
120
|
+
mostDownloadedEntry: mostDownloadedNycOpenDataEntry(entries),
|
|
121
|
+
totalViewCount: entries.reduce((total, entry) => total + entry.viewCount, 0),
|
|
122
|
+
totalDownloadCount: entries.reduce((total, entry) => total + entry.downloadCount, 0),
|
|
123
|
+
categories: countNycOpenDataCategories(entries),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Reads one page of the New York City catalogue.
|
|
128
|
+
*
|
|
129
|
+
* One keyless request covers the page and reports what the city portal holds,
|
|
130
|
+
* without reading any dataset's rows.
|
|
131
|
+
*
|
|
132
|
+
* @param options - an optional entry cap and fetch stub
|
|
133
|
+
* @returns the entries in the page, the counts, the totals, and the leaders
|
|
134
|
+
*/
|
|
135
|
+
export async function fetchNycOpenDataCatalogue(options) {
|
|
136
|
+
const fetchImpl = options?.fetchImpl ?? globalThis.fetch;
|
|
137
|
+
const url = buildNycOpenDataCatalogueUrl(options?.limit === undefined ? {} : { limit: options.limit });
|
|
138
|
+
const response = await httpGet(NYC_OPEN_DATA_CATALOGUE_SOURCE_ID, url, { fetchImpl });
|
|
139
|
+
return parseNycOpenDataCataloguePayload(await response.json());
|
|
140
|
+
}
|
|
141
|
+
/** New York City Open Data catalogue of datasets and maps, keyless. */
|
|
142
|
+
export const nycOpenDataCatalogueAdapter = {
|
|
143
|
+
id: NYC_OPEN_DATA_CATALOGUE_SOURCE_ID,
|
|
144
|
+
name: 'NYC Open Data catalogue',
|
|
145
|
+
auth: 'none',
|
|
146
|
+
description: 'The New York City open data catalogue on Socrata, one row per published dataset or map, with its city topic, view count, and download count.',
|
|
147
|
+
fetchLive: async (options) => fetchNycOpenDataCatalogue(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
148
|
+
parse: (payload) => parseNycOpenDataCataloguePayload(payload),
|
|
149
|
+
loadFixture: () => parseNycOpenDataCataloguePayload(readFixtureJson(NYC_OPEN_DATA_FIXTURE_FILENAME)),
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=nycOpenDataCatalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nycOpenDataCatalogue.js","sourceRoot":"","sources":["../src/nycOpenDataCatalogue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openFdaFoodRecalls.d.ts","sourceRoot":"","sources":["../src/openFdaFoodRecalls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openFdaFoodRecalls.d.ts","sourceRoot":"","sources":["../src/openFdaFoodRecalls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { UsSourceApiError, UsSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
3
4
|
import { readFixtureJson } from './fixtures.js';
|
|
4
5
|
/** Source name used in every error this adapter raises. */
|
|
5
6
|
const OPENFDA_SOURCE_NAME = 'openfda-food-recalls';
|
|
@@ -243,10 +244,7 @@ export function buildOpenFdaFoodRecallSummary(snapshot) {
|
|
|
243
244
|
}
|
|
244
245
|
/** Reads one URL as JSON, refusing a response the host did not deliver. */
|
|
245
246
|
async function fetchOpenFdaJson(url, fetchImpl) {
|
|
246
|
-
const response = await
|
|
247
|
-
if (!response.ok) {
|
|
248
|
-
throw new UsSourceApiError(OPENFDA_SOURCE_NAME, `HTTP ${response.status} reading ${url}`);
|
|
249
|
-
}
|
|
247
|
+
const response = await httpGet(OPENFDA_SOURCE_NAME, url, { fetchImpl });
|
|
250
248
|
return response.json();
|
|
251
249
|
}
|
|
252
250
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openFdaFoodRecalls.js","sourceRoot":"","sources":["../src/openFdaFoodRecalls.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openFdaFoodRecalls.js","sourceRoot":"","sources":["../src/openFdaFoodRecalls.ts"],"names":[],"mappings":"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"}
|
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":"AAyBA,OAAO,KAAK,EAAE,aAAa,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/E,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,EAyBnD,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;CACrC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAW3B"}
|
package/dist/registry.js
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { blsUnemploymentAdapter } from './blsSeries.js';
|
|
2
|
+
import { btsTransportationStatsAdapter } from './btsTransportationStats.js';
|
|
3
|
+
import { estimatetaxIncomeTaxAdapter } from './estimatetaxIncomeTax.js';
|
|
4
|
+
import { cdcSocrataCatalogueAdapter } from './cdcSocrataCatalogue.js';
|
|
5
|
+
import { clinicalTrialsStudiesAdapter } from './clinicalTrialsStudies.js';
|
|
6
|
+
import { epaEnvirofactsFacilitiesAdapter } from './epaEnvirofactsFacilities.js';
|
|
7
|
+
import { fdicBankDirectoryAdapter } from './fdicBankDirectory.js';
|
|
8
|
+
import { healthdataSocrataCatalogueAdapter } from './healthdataSocrataCatalogue.js';
|
|
9
|
+
import { ncbiPubmedSearchAdapter } from './ncbiPubmedSearch.js';
|
|
10
|
+
import { nycOpenDataCatalogueAdapter } from './nycOpenDataCatalogue.js';
|
|
11
|
+
import { nwsPointForecastAdapter } from './nwsPointForecast.js';
|
|
12
|
+
import { secEdgarFilingsAdapter } from './secEdgarFilings.js';
|
|
13
|
+
import { treasuryDebtToPennyAdapter } from './treasuryDebtToPenny.js';
|
|
14
|
+
import { usaspendingAgenciesAdapter } from './usaspendingAgencies.js';
|
|
2
15
|
import { cdcCountyObesityAdapter } from './cdcCountyObesity.js';
|
|
3
16
|
import { cfpbConsumerComplaintsAdapter } from './cfpbConsumerComplaints.js';
|
|
4
17
|
import { cpscProductRecallsAdapter } from './cpscProductRecalls.js';
|
|
@@ -9,6 +22,7 @@ import { openFdaFoodRecallsAdapter } from './openFdaFoodRecalls.js';
|
|
|
9
22
|
import { treasuryAvgInterestRateAdapter } from './treasuryAvgInterestRate.js';
|
|
10
23
|
import { usgsHawaiiEarthquakesAdapter } from './usgsEarthquakes.js';
|
|
11
24
|
import { usgsPeakStreamflowAdapter } from './usgsPeakStreamflow.js';
|
|
25
|
+
import { normalizeSourceApiKey } from './apiKey.js';
|
|
12
26
|
/** Every US data source behind the uniform adapter interface. */
|
|
13
27
|
export const US_DATA_SOURCES = [
|
|
14
28
|
blsUnemploymentAdapter,
|
|
@@ -22,6 +36,19 @@ export const US_DATA_SOURCES = [
|
|
|
22
36
|
usgsPeakStreamflowAdapter,
|
|
23
37
|
cpscProductRecallsAdapter,
|
|
24
38
|
cfpbConsumerComplaintsAdapter,
|
|
39
|
+
treasuryDebtToPennyAdapter,
|
|
40
|
+
secEdgarFilingsAdapter,
|
|
41
|
+
fdicBankDirectoryAdapter,
|
|
42
|
+
clinicalTrialsStudiesAdapter,
|
|
43
|
+
nwsPointForecastAdapter,
|
|
44
|
+
usaspendingAgenciesAdapter,
|
|
45
|
+
epaEnvirofactsFacilitiesAdapter,
|
|
46
|
+
ncbiPubmedSearchAdapter,
|
|
47
|
+
cdcSocrataCatalogueAdapter,
|
|
48
|
+
healthdataSocrataCatalogueAdapter,
|
|
49
|
+
nycOpenDataCatalogueAdapter,
|
|
50
|
+
btsTransportationStatsAdapter,
|
|
51
|
+
estimatetaxIncomeTaxAdapter,
|
|
25
52
|
];
|
|
26
53
|
/** Looks up a source adapter by id. */
|
|
27
54
|
export function getUsDataSource(id) {
|
|
@@ -35,9 +62,10 @@ export function getUsDataSource(id) {
|
|
|
35
62
|
* @returns whether the source answered, plus what it said
|
|
36
63
|
*/
|
|
37
64
|
export async function probeUsDataSource(adapter, options) {
|
|
65
|
+
const apiKey = normalizeSourceApiKey(options?.apiKey);
|
|
38
66
|
try {
|
|
39
67
|
const fetchOptions = {
|
|
40
|
-
...(
|
|
68
|
+
...(apiKey === undefined ? {} : { apiKey }),
|
|
41
69
|
...(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
42
70
|
};
|
|
43
71
|
const data = await adapter.fetchLive(fetchOptions);
|
|
@@ -69,7 +97,7 @@ export async function probeUsDataSource(adapter, options) {
|
|
|
69
97
|
export async function probeAllUsDataSources(options) {
|
|
70
98
|
const { apiKey, apiKeys, fetchImpl } = options ?? {};
|
|
71
99
|
return Promise.all(US_DATA_SOURCES.map((source) => {
|
|
72
|
-
const key = apiKeys?.[source.id] ?? apiKey;
|
|
100
|
+
const key = normalizeSourceApiKey(apiKeys?.[source.id] ?? apiKey);
|
|
73
101
|
return probeUsDataSource(source, {
|
|
74
102
|
...(key === undefined ? {} : { apiKey: key }),
|
|
75
103
|
...(fetchImpl === undefined ? {} : { fetchImpl }),
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|