@usa-open-data-connectors/usa-sources 0.1.3 → 0.1.7

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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +575 -214
  3. package/dist/apiKey.d.ts +12 -0
  4. package/dist/apiKey.d.ts.map +1 -0
  5. package/dist/apiKey.js +18 -0
  6. package/dist/apiKey.js.map +1 -0
  7. package/dist/blsSeries.d.ts.map +1 -1
  8. package/dist/blsSeries.js +2 -4
  9. package/dist/blsSeries.js.map +1 -1
  10. package/dist/btsTransportationStats.d.ts.map +1 -1
  11. package/dist/btsTransportationStats.js +3 -5
  12. package/dist/btsTransportationStats.js.map +1 -1
  13. package/dist/callookCallsigns.d.ts +119 -0
  14. package/dist/callookCallsigns.d.ts.map +1 -0
  15. package/dist/callookCallsigns.js +264 -0
  16. package/dist/callookCallsigns.js.map +1 -0
  17. package/dist/cdcCountyObesity.d.ts.map +1 -1
  18. package/dist/cdcCountyObesity.js +3 -5
  19. package/dist/cdcCountyObesity.js.map +1 -1
  20. package/dist/cdcSocrataCatalogue.d.ts.map +1 -1
  21. package/dist/cdcSocrataCatalogue.js +3 -5
  22. package/dist/cdcSocrataCatalogue.js.map +1 -1
  23. package/dist/cfpbConsumerComplaints.d.ts +2 -0
  24. package/dist/cfpbConsumerComplaints.d.ts.map +1 -1
  25. package/dist/cfpbConsumerComplaints.js +12 -12
  26. package/dist/cfpbConsumerComplaints.js.map +1 -1
  27. package/dist/clinicalTrialsStudies.d.ts.map +1 -1
  28. package/dist/clinicalTrialsStudies.js +3 -5
  29. package/dist/clinicalTrialsStudies.js.map +1 -1
  30. package/dist/collegeScorecardInstitutions.d.ts +133 -0
  31. package/dist/collegeScorecardInstitutions.d.ts.map +1 -0
  32. package/dist/collegeScorecardInstitutions.js +339 -0
  33. package/dist/collegeScorecardInstitutions.js.map +1 -0
  34. package/dist/cpscProductRecalls.d.ts.map +1 -1
  35. package/dist/cpscProductRecalls.js +2 -4
  36. package/dist/cpscProductRecalls.js.map +1 -1
  37. package/dist/epaEnvirofactsFacilities.d.ts.map +1 -1
  38. package/dist/epaEnvirofactsFacilities.js +2 -4
  39. package/dist/epaEnvirofactsFacilities.js.map +1 -1
  40. package/dist/errors.d.ts +12 -2
  41. package/dist/errors.d.ts.map +1 -1
  42. package/dist/errors.js +8 -4
  43. package/dist/errors.js.map +1 -1
  44. package/dist/estimatetaxIncomeTax.d.ts +140 -0
  45. package/dist/estimatetaxIncomeTax.d.ts.map +1 -0
  46. package/dist/estimatetaxIncomeTax.js +225 -0
  47. package/dist/estimatetaxIncomeTax.js.map +1 -0
  48. package/dist/fdicBankDirectory.d.ts.map +1 -1
  49. package/dist/fdicBankDirectory.js +2 -4
  50. package/dist/fdicBankDirectory.js.map +1 -1
  51. package/dist/femaDisasterDeclarations.d.ts.map +1 -1
  52. package/dist/femaDisasterDeclarations.js +2 -4
  53. package/dist/femaDisasterDeclarations.js.map +1 -1
  54. package/dist/healthdataSocrataCatalogue.d.ts.map +1 -1
  55. package/dist/healthdataSocrataCatalogue.js +3 -5
  56. package/dist/healthdataSocrataCatalogue.js.map +1 -1
  57. package/dist/http.d.ts +40 -0
  58. package/dist/http.d.ts.map +1 -0
  59. package/dist/http.js +93 -0
  60. package/dist/http.js.map +1 -0
  61. package/dist/index.d.ts +33 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +17 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/ncbiPubmedSearch.d.ts +4 -0
  66. package/dist/ncbiPubmedSearch.d.ts.map +1 -1
  67. package/dist/ncbiPubmedSearch.js +10 -4
  68. package/dist/ncbiPubmedSearch.js.map +1 -1
  69. package/dist/nceiAnnualTemperature.d.ts.map +1 -1
  70. package/dist/nceiAnnualTemperature.js +3 -5
  71. package/dist/nceiAnnualTemperature.js.map +1 -1
  72. package/dist/nextBusTransitVehicles.d.ts +102 -0
  73. package/dist/nextBusTransitVehicles.d.ts.map +1 -0
  74. package/dist/nextBusTransitVehicles.js +171 -0
  75. package/dist/nextBusTransitVehicles.js.map +1 -0
  76. package/dist/noaaSeaLevel.d.ts.map +1 -1
  77. package/dist/noaaSeaLevel.js +2 -4
  78. package/dist/noaaSeaLevel.js.map +1 -1
  79. package/dist/nwsPointForecast.d.ts +1 -1
  80. package/dist/nwsPointForecast.d.ts.map +1 -1
  81. package/dist/nwsPointForecast.js +7 -6
  82. package/dist/nwsPointForecast.js.map +1 -1
  83. package/dist/nycOpenDataCatalogue.d.ts +97 -0
  84. package/dist/nycOpenDataCatalogue.d.ts.map +1 -0
  85. package/dist/nycOpenDataCatalogue.js +151 -0
  86. package/dist/nycOpenDataCatalogue.js.map +1 -0
  87. package/dist/openFdaFoodRecalls.d.ts.map +1 -1
  88. package/dist/openFdaFoodRecalls.js +2 -4
  89. package/dist/openFdaFoodRecalls.js.map +1 -1
  90. package/dist/publicDataHubHospital.d.ts +116 -0
  91. package/dist/publicDataHubHospital.d.ts.map +1 -0
  92. package/dist/publicDataHubHospital.js +175 -0
  93. package/dist/publicDataHubHospital.js.map +1 -0
  94. package/dist/registry.d.ts.map +1 -1
  95. package/dist/registry.js +16 -2
  96. package/dist/registry.js.map +1 -1
  97. package/dist/secEdgarFilings.d.ts +1 -1
  98. package/dist/secEdgarFilings.d.ts.map +1 -1
  99. package/dist/secEdgarFilings.js +7 -6
  100. package/dist/secEdgarFilings.js.map +1 -1
  101. package/dist/treasuryAvgInterestRate.d.ts.map +1 -1
  102. package/dist/treasuryAvgInterestRate.js +2 -4
  103. package/dist/treasuryAvgInterestRate.js.map +1 -1
  104. package/dist/treasuryDebtToPenny.d.ts.map +1 -1
  105. package/dist/treasuryDebtToPenny.js +2 -4
  106. package/dist/treasuryDebtToPenny.js.map +1 -1
  107. package/dist/usaspendingAgencies.d.ts.map +1 -1
  108. package/dist/usaspendingAgencies.js +3 -5
  109. package/dist/usaspendingAgencies.js.map +1 -1
  110. package/dist/usgsEarthquakes.d.ts.map +1 -1
  111. package/dist/usgsEarthquakes.js +2 -4
  112. package/dist/usgsEarthquakes.js.map +1 -1
  113. package/dist/usgsPeakStreamflow.d.ts.map +1 -1
  114. package/dist/usgsPeakStreamflow.js +3 -5
  115. package/dist/usgsPeakStreamflow.js.map +1 -1
  116. package/package.json +7 -4
@@ -0,0 +1,171 @@
1
+ import { XMLParser } from 'fast-xml-parser';
2
+ import { z } from 'zod';
3
+ import { UsSourceParseError } from './errors.js';
4
+ import { readFixtureText } from './fixtures.js';
5
+ import { httpGet } from './http.js';
6
+ /** Adapter id for the NextBus transit vehicle source. */
7
+ export const NEXTBUS_TRANSIT_VEHICLES_SOURCE_ID = 'nextbus-transit-vehicles';
8
+ /** Base URL for the keyless NextBus XML feed. */
9
+ export const NEXTBUS_XML_FEED_BASE = 'https://retro.umoiq.com/service/publicXMLFeed';
10
+ /** Agency tag for the Portland Streetcar on the NextBus feed. */
11
+ export const NEXTBUS_PORTLAND_STREETCAR_AGENCY_TAG = 'portland-sc';
12
+ /** Route tag for the Portland Streetcar NS line. */
13
+ export const NEXTBUS_PORTLAND_STREETCAR_ROUTE_TAG = '193';
14
+ /** The agency and route this adapter reads by default. */
15
+ export const NEXTBUS_PORTLAND_STREETCAR_QUERY = {
16
+ agencyTag: NEXTBUS_PORTLAND_STREETCAR_AGENCY_TAG,
17
+ routeTag: NEXTBUS_PORTLAND_STREETCAR_ROUTE_TAG,
18
+ };
19
+ /** Committed snapshot, so a build works when the NextBus feed is unreachable. */
20
+ const NEXTBUS_VEHICLE_FIXTURE_FILENAME = 'nextbus-portland-streetcar-vehicles-2026-10-22.xml';
21
+ // The feed carries every value as an XML attribute, so a number arrives as a
22
+ // string and a boolean arrives as "true" or "false".
23
+ const NEXTBUS_VEHICLE_SCHEMA = z.object({
24
+ id: z.string().min(1),
25
+ routeTag: z.string().min(1),
26
+ dirTag: z.string().optional(),
27
+ lat: z.coerce.number().min(-90).max(90),
28
+ lon: z.coerce.number().min(-180).max(180),
29
+ secsSinceReport: z.coerce.number().int().nonnegative(),
30
+ predictable: z
31
+ .union([z.boolean(), z.enum(['true', 'false'])])
32
+ .transform((value) => value === true || value === 'true'),
33
+ heading: z.coerce.number().optional(),
34
+ speedKmHr: z.coerce.number().nonnegative().optional(),
35
+ });
36
+ const NEXTBUS_BODY_SCHEMA = z.object({
37
+ body: z.object({
38
+ lastTime: z.object({
39
+ time: z.coerce.number().int().positive(),
40
+ }),
41
+ vehicle: z.union([NEXTBUS_VEHICLE_SCHEMA, z.array(NEXTBUS_VEHICLE_SCHEMA)]).optional(),
42
+ }),
43
+ });
44
+ const NEXTBUS_ERROR_SCHEMA = z.object({
45
+ body: z.object({
46
+ Error: z.object({
47
+ '#text': z.string().optional(),
48
+ }),
49
+ }),
50
+ });
51
+ /** Picks the message out of a NextBus error body, or null when the body is not one. */
52
+ function nextBusErrorMessage(payload) {
53
+ const parsed = NEXTBUS_ERROR_SCHEMA.safeParse(payload);
54
+ if (!parsed.success) {
55
+ return null;
56
+ }
57
+ return parsed.data.body.Error['#text'] ?? 'The feed rejected the request';
58
+ }
59
+ /** Means one number across the values that carry one, rounded to one decimal. */
60
+ function meanOrZero(values) {
61
+ if (values.length === 0) {
62
+ return 0;
63
+ }
64
+ const total = values.reduce((sum, value) => sum + value, 0);
65
+ return Number((total / values.length).toFixed(1));
66
+ }
67
+ /**
68
+ * Builds the request URL for vehicle locations on one agency route.
69
+ *
70
+ * The feed is keyless. `t=0` asks for every report the feed still holds for
71
+ * the route, which is the current set of vehicles.
72
+ *
73
+ * @param query - the agency and route to read
74
+ * @returns the full request URL
75
+ */
76
+ export function buildNextBusVehicleUrl(query) {
77
+ const params = new URLSearchParams({
78
+ command: 'vehicleLocations',
79
+ a: query.agencyTag,
80
+ r: query.routeTag,
81
+ t: '0',
82
+ });
83
+ return `${NEXTBUS_XML_FEED_BASE}?${params.toString()}`;
84
+ }
85
+ /**
86
+ * Parses one NextBus vehicle response into the positions and their summary.
87
+ *
88
+ * The parser keeps XML attributes as strings, and zod checks every value that
89
+ * reaches the snapshot. An error body, a missing timestamp, or a position
90
+ * outside the map stops the parse.
91
+ *
92
+ * @param payload - the XML body from the NextBus feed
93
+ * @param query - the agency and route the request asked for
94
+ * @returns one report per vehicle, plus counts and report ages
95
+ */
96
+ export function parseNextBusVehiclePayload(payload, query = NEXTBUS_PORTLAND_STREETCAR_QUERY) {
97
+ let parsed;
98
+ try {
99
+ parsed = new XMLParser({
100
+ ignoreAttributes: false,
101
+ attributeNamePrefix: '',
102
+ trimValues: true,
103
+ }).parse(String(payload));
104
+ }
105
+ catch (error) {
106
+ throw new UsSourceParseError(NEXTBUS_TRANSIT_VEHICLES_SOURCE_ID, 'The response was not valid XML', { cause: error });
107
+ }
108
+ const errorMessage = nextBusErrorMessage(parsed);
109
+ if (errorMessage !== null) {
110
+ throw new UsSourceParseError(NEXTBUS_TRANSIT_VEHICLES_SOURCE_ID, errorMessage);
111
+ }
112
+ const body = NEXTBUS_BODY_SCHEMA.safeParse(parsed);
113
+ if (!body.success) {
114
+ throw new UsSourceParseError(NEXTBUS_TRANSIT_VEHICLES_SOURCE_ID, body.error.message);
115
+ }
116
+ const rawVehicles = body.data.body.vehicle;
117
+ const vehicles = (rawVehicles === undefined ? [] : Array.isArray(rawVehicles) ? rawVehicles : [rawVehicles]).map((vehicle) => ({
118
+ vehicleId: vehicle.id,
119
+ routeTag: vehicle.routeTag,
120
+ directionTag: vehicle.dirTag ?? '',
121
+ latitude: vehicle.lat,
122
+ longitude: vehicle.lon,
123
+ headingDegrees: vehicle.heading ?? null,
124
+ speedKmPerHour: vehicle.speedKmHr ?? null,
125
+ secondsSinceReport: vehicle.secsSinceReport,
126
+ predictable: vehicle.predictable,
127
+ }));
128
+ const reportAges = vehicles.map((vehicle) => vehicle.secondsSinceReport);
129
+ const speeds = vehicles
130
+ .map((vehicle) => vehicle.speedKmPerHour)
131
+ .filter((speed) => speed !== null);
132
+ return {
133
+ agencyTag: query.agencyTag,
134
+ routeTag: query.routeTag,
135
+ observedAtEpochMs: body.data.body.lastTime.time,
136
+ vehicles,
137
+ vehicleCount: vehicles.length,
138
+ predictableVehicleCount: vehicles.filter((vehicle) => vehicle.predictable).length,
139
+ averageSpeedKmPerHour: meanOrZero(speeds),
140
+ newestReportSeconds: reportAges.length === 0 ? null : Math.min(...reportAges),
141
+ oldestReportSeconds: reportAges.length === 0 ? null : Math.max(...reportAges),
142
+ };
143
+ }
144
+ /**
145
+ * Reads the current vehicle positions on a NextBus route.
146
+ *
147
+ * One keyless request returns the streetcars the agency is reporting right now,
148
+ * with their position, heading, speed, and report age.
149
+ *
150
+ * @param options - the agency, route, and an optional fetch stub
151
+ * @returns one report per vehicle, plus counts and report ages
152
+ */
153
+ export async function fetchNextBusVehicles(options) {
154
+ const query = {
155
+ agencyTag: options?.agencyTag ?? NEXTBUS_PORTLAND_STREETCAR_AGENCY_TAG,
156
+ routeTag: options?.routeTag ?? NEXTBUS_PORTLAND_STREETCAR_ROUTE_TAG,
157
+ };
158
+ const response = await httpGet(NEXTBUS_TRANSIT_VEHICLES_SOURCE_ID, buildNextBusVehicleUrl(query), options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl });
159
+ return parseNextBusVehiclePayload(await response.text(), query);
160
+ }
161
+ /** Live positions on the Portland Streetcar NS line, keyless through the NextBus feed. */
162
+ export const nextBusTransitVehiclesAdapter = {
163
+ id: NEXTBUS_TRANSIT_VEHICLES_SOURCE_ID,
164
+ name: 'NextBus transit vehicles',
165
+ auth: 'none',
166
+ description: 'Live vehicle positions on the Portland Streetcar NS line, one of the agencies on the keyless NextBus XML feed, with latitude, longitude, heading, speed, and report age.',
167
+ fetchLive: async (options) => fetchNextBusVehicles(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
168
+ parse: (payload) => parseNextBusVehiclePayload(payload),
169
+ loadFixture: () => parseNextBusVehiclePayload(readFixtureText(NEXTBUS_VEHICLE_FIXTURE_FILENAME)),
170
+ };
171
+ //# sourceMappingURL=nextBusTransitVehicles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextBusTransitVehicles.js","sourceRoot":"","sources":["../src/nextBusTransitVehicles.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"noaaSeaLevel.d.ts","sourceRoot":"","sources":["../src/noaaSeaLevel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noaaSeaLevel.d.ts","sourceRoot":"","sources":["../src/noaaSeaLevel.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,wEAAwE;IACxE,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,kEAAkE;IAClE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,6EAA6E;IAC7E,uBAAuB,EAAE,MAAM,CAAC;IAChC,yDAAyD;IACzD,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,8DAA8D,CAAC;AAE/F,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,yFAAyF;AACzF,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AAEvD,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,sBAAsB,CAAC;AA+CjE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAarE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAwC9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAwBrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CA+CxF;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACrC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAS9B;AAED,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAajE,CAAC"}
@@ -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
  /** Base URL for the NOAA CO-OPS data retrieval API. */
5
6
  export const NOAA_COOPS_API_BASE = 'https://api.tidesandcurrents.noaa.gov/api/prod/datagetter';
@@ -233,10 +234,7 @@ export async function fetchNoaaSeaLevel(options) {
233
234
  startYear: options?.startYear ?? NOAA_SEA_LEVEL_FIRST_YEAR,
234
235
  endYear: options?.endYear ?? new Date().getFullYear(),
235
236
  });
236
- const response = await fetchImpl(url);
237
- if (!response.ok) {
238
- throw new UsSourceApiError('noaa', `HTTP ${response.status} reading the sea level record`);
239
- }
237
+ const response = await httpGet('noaa', url, { fetchImpl });
240
238
  return buildNoaaSeaLevelSeries(parseNoaaSeaLevelPayload(await response.json()));
241
239
  }
242
240
  /** NOAA CO-OPS monthly mean sea level, keyless. */
@@ -1 +1 @@
1
- {"version":3,"file":"noaaSeaLevel.js","sourceRoot":"","sources":["../src/noaaSeaLevel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noaaSeaLevel.js","sourceRoot":"","sources":["../src/noaaSeaLevel.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare const NWS_POINT_FORECAST_SOURCE_ID = "nws-point-forecast";
8
8
  * operator, so the adapter sends a descriptive name and a contact address on
9
9
  * every call. A real deployment should override the contact with its own.
10
10
  */
11
- export declare const NWS_USER_AGENT = "usa-open-data-connectors contact@example.com";
11
+ export declare const NWS_USER_AGENT = "usa-open-data-connectors (https://github.com/olitreadwell/usa-open-data-connectors)";
12
12
  /**
13
13
  * One forecast grid point, the service's lookup for a latitude and longitude.
14
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"nwsPointForecast.d.ts","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,iDAAiD,CAAC;AAE7E;;;;;;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,CAc5B;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,gBAAgB,CAWnE,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,CAW5B;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,gBAAgB,CAWnE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { UsSourceApiError, UsSourceParseError } from './errors.js';
2
+ import { UsSourceParseError } from './errors.js';
3
+ import { httpGet } from './http.js';
3
4
  import { readFixtureJson } from './fixtures.js';
4
5
  /** Adapter id for the National Weather Service point-forecast source. */
5
6
  export const NWS_POINT_FORECAST_SOURCE_ID = 'nws-point-forecast';
@@ -10,7 +11,7 @@ export const NWS_POINT_FORECAST_SOURCE_ID = 'nws-point-forecast';
10
11
  * operator, so the adapter sends a descriptive name and a contact address on
11
12
  * every call. A real deployment should override the contact with its own.
12
13
  */
13
- export const NWS_USER_AGENT = 'usa-open-data-connectors contact@example.com';
14
+ export const NWS_USER_AGENT = 'usa-open-data-connectors (https://github.com/olitreadwell/usa-open-data-connectors)';
14
15
  /** Base URL for the National Weather Service API. */
15
16
  export const NWS_API_BASE = 'https://api.weather.gov';
16
17
  /** Path of the point lookup that resolves a coordinate to a forecast grid. */
@@ -127,10 +128,10 @@ export function parseNwsPointForecastPayload(payload) {
127
128
  export async function fetchNwsPointForecast(options) {
128
129
  const fetchImpl = options?.fetchImpl ?? globalThis.fetch;
129
130
  const url = buildNwsPointUrl(options?.latitude ?? NWS_DEFAULT_LATITUDE, options?.longitude ?? NWS_DEFAULT_LONGITUDE);
130
- const response = await fetchImpl(url, { headers: { 'User-Agent': NWS_USER_AGENT } });
131
- if (!response.ok) {
132
- throw new UsSourceApiError(NWS_POINT_FORECAST_SOURCE_ID, `HTTP ${response.status} reading the point forecast`);
133
- }
131
+ const response = await httpGet(NWS_POINT_FORECAST_SOURCE_ID, url, {
132
+ fetchImpl,
133
+ headers: { 'User-Agent': NWS_USER_AGENT },
134
+ });
134
135
  return parseNwsPointForecastPayload(await response.json());
135
136
  }
136
137
  /** National Weather Service forecast grid point for a coordinate, keyless. */
@@ -1 +1 @@
1
- {"version":3,"file":"nwsPointForecast.js","sourceRoot":"","sources":["../src/nwsPointForecast.ts"],"names":[],"mappings":"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"}
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":"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"}
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 fetchImpl(url);
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
  /**