@uk-open-data-connectors/uk-sources 0.1.0 → 0.1.2
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 +110 -192
- package/dist/ancientWoodland.d.ts.map +1 -1
- package/dist/ancientWoodland.js +2 -4
- package/dist/ancientWoodland.js.map +1 -1
- package/dist/apiKey.d.ts +11 -0
- package/dist/apiKey.d.ts.map +1 -0
- package/dist/apiKey.js +17 -0
- package/dist/apiKey.js.map +1 -0
- package/dist/bankRate.d.ts.map +1 -1
- package/dist/bankRate.js +3 -5
- package/dist/bankRate.js.map +1 -1
- package/dist/carbonIntensity.d.ts +4 -1
- package/dist/carbonIntensity.d.ts.map +1 -1
- package/dist/carbonIntensity.js +6 -2
- package/dist/carbonIntensity.js.map +1 -1
- 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/exploreEducationStatistics.d.ts +72 -0
- package/dist/exploreEducationStatistics.d.ts.map +1 -0
- package/dist/exploreEducationStatistics.js +108 -0
- package/dist/exploreEducationStatistics.js.map +1 -0
- package/dist/findATender.d.ts +76 -0
- package/dist/findATender.d.ts.map +1 -0
- package/dist/findATender.js +107 -0
- package/dist/findATender.js.map +1 -0
- package/dist/fingertipsIndicators.d.ts +67 -0
- package/dist/fingertipsIndicators.d.ts.map +1 -0
- package/dist/fingertipsIndicators.js +92 -0
- package/dist/fingertipsIndicators.js.map +1 -0
- package/dist/floodMonitoring.d.ts.map +1 -1
- package/dist/floodMonitoring.js +4 -9
- package/dist/floodMonitoring.js.map +1 -1
- package/dist/foodHygiene.d.ts.map +1 -1
- package/dist/foodHygiene.js +4 -5
- package/dist/foodHygiene.js.map +1 -1
- package/dist/http.d.ts +34 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +83 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/dist/londonDatastore.d.ts +46 -0
- package/dist/londonDatastore.d.ts.map +1 -0
- package/dist/londonDatastore.js +64 -0
- package/dist/londonDatastore.js.map +1 -0
- package/dist/nesoGenerationMix.d.ts +128 -0
- package/dist/nesoGenerationMix.d.ts.map +1 -0
- package/dist/nesoGenerationMix.js +241 -0
- package/dist/nesoGenerationMix.js.map +1 -0
- package/dist/nhsbsaCkan.d.ts +43 -0
- package/dist/nhsbsaCkan.d.ts.map +1 -0
- package/dist/nhsbsaCkan.js +59 -0
- package/dist/nhsbsaCkan.js.map +1 -0
- package/dist/nomis.d.ts +71 -0
- package/dist/nomis.d.ts.map +1 -0
- package/dist/nomis.js +124 -0
- package/dist/nomis.js.map +1 -0
- package/dist/onsDatasets.d.ts.map +1 -1
- package/dist/onsDatasets.js +3 -5
- package/dist/onsDatasets.js.map +1 -1
- package/dist/parliamentSeats.d.ts.map +1 -1
- package/dist/parliamentSeats.js +6 -5
- package/dist/parliamentSeats.js.map +1 -1
- package/dist/planningDatasets.d.ts.map +1 -1
- package/dist/planningDatasets.js +3 -5
- package/dist/planningDatasets.js.map +1 -1
- package/dist/policeCrimes.d.ts.map +1 -1
- package/dist/policeCrimes.js +5 -8
- package/dist/policeCrimes.js.map +1 -1
- package/dist/postcodeLookup.d.ts +55 -0
- package/dist/postcodeLookup.d.ts.map +1 -0
- package/dist/postcodeLookup.js +89 -0
- package/dist/postcodeLookup.js.map +1 -0
- package/dist/publicHealthScotland.d.ts +43 -0
- package/dist/publicHealthScotland.d.ts.map +1 -0
- package/dist/publicHealthScotland.js +59 -0
- package/dist/publicHealthScotland.js.map +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +24 -0
- package/dist/registry.js.map +1 -1
- package/dist/tflBikePoints.d.ts.map +1 -1
- package/dist/tflBikePoints.js +6 -6
- package/dist/tflBikePoints.js.map +1 -1
- package/dist/tflLineStatus.d.ts +59 -0
- package/dist/tflLineStatus.d.ts.map +1 -0
- package/dist/tflLineStatus.js +91 -0
- package/dist/tflLineStatus.js.map +1 -0
- package/dist/tnaDiscovery.d.ts +76 -0
- package/dist/tnaDiscovery.d.ts.map +1 -0
- package/dist/tnaDiscovery.js +100 -0
- package/dist/tnaDiscovery.js.map +1 -0
- package/dist/ukhsaDashboard.d.ts +92 -0
- package/dist/ukhsaDashboard.d.ts.map +1 -0
- package/dist/ukhsaDashboard.js +134 -0
- package/dist/ukhsaDashboard.js.map +1 -0
- package/package.json +13 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbonIntensity.js","sourceRoot":"","sources":["../src/carbonIntensity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D,0CAA0C;AAC1C,MAAM,CAAC,MAAM,6BAA6B,GAAG,oCAAoC,CAAC;AAElF,iDAAiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,6BAA6B,YAAY,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD,wDAAwD;AACxD,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEvD,mCAAmC;AACnC,MAAM,CAAC,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAElD,0EAA0E;AAC1E,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAExC,wDAAwD;AACxD,MAAM,uBAAuB,GAAG,+BAA+B,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5E,yCAAyC;AACzC,MAAM,eAAe,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,+BAA+B,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,UAAU;IACV,KAAK;IACL,UAAU;IACV,MAAM;IACN,WAAW;CACH,CAAC;AA6CX,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SAClB,CAAC;KACH,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,kCAAkC,CAAC;AAE5E,0EAA0E;AAC1E,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAU;IACrD,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"carbonIntensity.js","sourceRoot":"","sources":["../src/carbonIntensity.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
export declare class UkSourceError extends Error {
|
|
3
3
|
constructor(message: string, options?: ErrorOptions);
|
|
4
4
|
}
|
|
5
|
+
/** Extra detail carried by an API error. */
|
|
6
|
+
export interface UkSourceApiErrorDetails extends ErrorOptions {
|
|
7
|
+
/** HTTP status code, when the failure arrived as a response. */
|
|
8
|
+
status?: number | undefined;
|
|
9
|
+
/** Whether retrying the same request could succeed. */
|
|
10
|
+
retryable?: boolean | undefined;
|
|
11
|
+
}
|
|
5
12
|
/** The remote API rejected the request (HTTP error or bad payload). */
|
|
6
13
|
export declare class UkSourceApiError extends UkSourceError {
|
|
7
|
-
|
|
8
|
-
|
|
14
|
+
/** HTTP status code, when the failure arrived as a response. */
|
|
15
|
+
readonly status: number | undefined;
|
|
16
|
+
/** Whether retrying the same request could succeed. */
|
|
17
|
+
readonly retryable: boolean;
|
|
18
|
+
constructor(source: string, message: string, details?: UkSourceApiErrorDetails);
|
|
9
19
|
}
|
|
10
20
|
/** The remote payload did not match the expected shape. */
|
|
11
21
|
export declare class UkSourceParseError extends UkSourceError {
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,uEAAuE;AACvE,qBAAa,gBAAiB,SAAQ,aAAa;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,4CAA4C;AAC5C,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,uEAAuE;AACvE,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B;CAMnF;AAED,2DAA2D;AAC3D,qBAAa,kBAAmB,SAAQ,aAAa;aAEjC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY;CAKzB"}
|
package/dist/errors.js
CHANGED
|
@@ -7,11 +7,15 @@ export class UkSourceError extends Error {
|
|
|
7
7
|
}
|
|
8
8
|
/** The remote API rejected the request (HTTP error or bad payload). */
|
|
9
9
|
export class UkSourceApiError extends UkSourceError {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/** HTTP status code, when the failure arrived as a response. */
|
|
11
|
+
status;
|
|
12
|
+
/** Whether retrying the same request could succeed. */
|
|
13
|
+
retryable;
|
|
14
|
+
constructor(source, message, details = {}) {
|
|
15
|
+
super(`${source}: ${message}`, details);
|
|
14
16
|
this.name = 'UkSourceApiError';
|
|
17
|
+
this.status = details.status;
|
|
18
|
+
this.retryable = details.retryable ?? false;
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
21
|
/** The remote payload did not match the expected shape. */
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAUD,uEAAuE;AACvE,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IACjD,gEAAgE;IACvD,MAAM,CAAqB;IACpC,uDAAuD;IAC9C,SAAS,CAAU;IAE5B,YAAY,MAAc,EAAE,OAAe,EAAE,UAAmC,EAAE;QAChF,KAAK,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC9C,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAEjC;IADlB,YACkB,MAAc,EAC9B,OAAe,EACf,OAAsB;QAEtB,KAAK,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAJxB,WAAM,GAAN,MAAM,CAAQ;QAK9B,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { UkDataAdapter } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The Department for Education's Explore Education Statistics publications
|
|
4
|
+
* API. Keyless, published under the Open Government Licence v3.
|
|
5
|
+
*/
|
|
6
|
+
export declare const EXPLORE_EDUCATION_STATISTICS_SOURCE_ID = "explore-education-statistics";
|
|
7
|
+
/** Base URL for the Explore Education Statistics publications endpoint. */
|
|
8
|
+
export declare const EXPLORE_EDUCATION_PUBLICATIONS_URL = "https://api.education.gov.uk/statistics/v1/publications";
|
|
9
|
+
/** How many publications the adapter asks for per page by default. */
|
|
10
|
+
export declare const EXPLORE_EDUCATION_PUBLICATIONS_PAGE_SIZE = 20;
|
|
11
|
+
/** One published statistics release as the API lists it. */
|
|
12
|
+
export interface ExploreEducationPublication {
|
|
13
|
+
id: string;
|
|
14
|
+
title: string;
|
|
15
|
+
/** URL-safe identifier, unique across releases. */
|
|
16
|
+
slug: string;
|
|
17
|
+
summary: string;
|
|
18
|
+
/** Publication stamp the API reports, ISO 8601 with an offset. */
|
|
19
|
+
lastPublishedIso: string;
|
|
20
|
+
}
|
|
21
|
+
/** One page of the publications catalogue plus the API's paging counts. */
|
|
22
|
+
export interface ExploreEducationPublicationsPage {
|
|
23
|
+
page: number;
|
|
24
|
+
pageSize: number;
|
|
25
|
+
totalResults: number;
|
|
26
|
+
totalPages: number;
|
|
27
|
+
publications: ExploreEducationPublication[];
|
|
28
|
+
}
|
|
29
|
+
/** Rolled-up view of one publications page. */
|
|
30
|
+
export interface ExploreEducationPublicationsSummary {
|
|
31
|
+
publicationCount: number;
|
|
32
|
+
/** Total releases the API holds, not just this page. */
|
|
33
|
+
totalResults: number;
|
|
34
|
+
/** The most recent publish stamp on this page, or "" when the page is empty. */
|
|
35
|
+
latestPublishedIso: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds a publications URL for one page.
|
|
39
|
+
*
|
|
40
|
+
* @param page - one-based page number
|
|
41
|
+
* @param pageSize - records per page
|
|
42
|
+
* @returns the publications catalogue URL
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildExploreEducationPublicationsUrl(page: number, pageSize: number): string;
|
|
45
|
+
/**
|
|
46
|
+
* Parses an Explore Education Statistics publications payload.
|
|
47
|
+
*
|
|
48
|
+
* @param payload - the raw JSON body from the publications endpoint
|
|
49
|
+
* @returns the page of publications plus the API's paging counts
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseExploreEducationPublications(payload: unknown): ExploreEducationPublicationsPage;
|
|
52
|
+
/**
|
|
53
|
+
* Sums one publications page.
|
|
54
|
+
*
|
|
55
|
+
* @param page - a page from {@link parseExploreEducationPublications}
|
|
56
|
+
* @returns publication counts and the newest publish stamp on the page
|
|
57
|
+
*/
|
|
58
|
+
export declare function summarizeExploreEducationPublications(page: ExploreEducationPublicationsPage): ExploreEducationPublicationsSummary;
|
|
59
|
+
/**
|
|
60
|
+
* Lists one page of Explore Education Statistics publications.
|
|
61
|
+
*
|
|
62
|
+
* @param options - page, page size, and an optional fetch implementation
|
|
63
|
+
* @returns the page of publications the endpoint returns
|
|
64
|
+
*/
|
|
65
|
+
export declare function fetchExploreEducationPublications(options?: {
|
|
66
|
+
page?: number;
|
|
67
|
+
pageSize?: number;
|
|
68
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
69
|
+
}): Promise<ExploreEducationPublicationsPage>;
|
|
70
|
+
/** Explore Education Statistics publications, keyless. */
|
|
71
|
+
export declare const exploreEducationStatisticsAdapter: UkDataAdapter<ExploreEducationPublicationsPage>;
|
|
72
|
+
//# sourceMappingURL=exploreEducationStatistics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exploreEducationStatistics.d.ts","sourceRoot":"","sources":["../src/exploreEducationStatistics.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,sCAAsC,iCAAiC,CAAC;AAErF,2EAA2E;AAC3E,eAAO,MAAM,kCAAkC,4DACY,CAAC;AAE5D,sEAAsE;AACtE,eAAO,MAAM,wCAAwC,KAAK,CAAC;AAE3D,4DAA4D;AAC5D,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,2EAA2E;AAC3E,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,2BAA2B,EAAE,CAAC;CAC7C;AAED,+CAA+C;AAC/C,MAAM,WAAW,mCAAmC;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAoBD;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,OAAO,GACf,gCAAgC,CAkBlC;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,gCAAgC,GACrC,mCAAmC,CAerC;AAED;;;;;GAKG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CAChC,GACL,OAAO,CAAC,gCAAgC,CAAC,CAY3C;AAED,0DAA0D;AAC1D,eAAO,MAAM,iCAAiC,EAAE,aAAa,CAAC,gCAAgC,CAc7F,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
4
|
+
import { readFixtureJson } from './fixtures.js';
|
|
5
|
+
/**
|
|
6
|
+
* The Department for Education's Explore Education Statistics publications
|
|
7
|
+
* API. Keyless, published under the Open Government Licence v3.
|
|
8
|
+
*/
|
|
9
|
+
export const EXPLORE_EDUCATION_STATISTICS_SOURCE_ID = 'explore-education-statistics';
|
|
10
|
+
/** Base URL for the Explore Education Statistics publications endpoint. */
|
|
11
|
+
export const EXPLORE_EDUCATION_PUBLICATIONS_URL = 'https://api.education.gov.uk/statistics/v1/publications';
|
|
12
|
+
/** How many publications the adapter asks for per page by default. */
|
|
13
|
+
export const EXPLORE_EDUCATION_PUBLICATIONS_PAGE_SIZE = 20;
|
|
14
|
+
const EXPLORE_EDUCATION_PUBLICATION_SCHEMA = z.object({
|
|
15
|
+
id: z.string(),
|
|
16
|
+
title: z.string(),
|
|
17
|
+
slug: z.string(),
|
|
18
|
+
summary: z.string().nullable().optional(),
|
|
19
|
+
lastPublished: z.string(),
|
|
20
|
+
});
|
|
21
|
+
const EXPLORE_EDUCATION_PUBLICATIONS_SCHEMA = z.object({
|
|
22
|
+
paging: z.object({
|
|
23
|
+
page: z.number(),
|
|
24
|
+
pageSize: z.number(),
|
|
25
|
+
totalResults: z.number(),
|
|
26
|
+
totalPages: z.number(),
|
|
27
|
+
}),
|
|
28
|
+
results: z.array(EXPLORE_EDUCATION_PUBLICATION_SCHEMA),
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Builds a publications URL for one page.
|
|
32
|
+
*
|
|
33
|
+
* @param page - one-based page number
|
|
34
|
+
* @param pageSize - records per page
|
|
35
|
+
* @returns the publications catalogue URL
|
|
36
|
+
*/
|
|
37
|
+
export function buildExploreEducationPublicationsUrl(page, pageSize) {
|
|
38
|
+
return `${EXPLORE_EDUCATION_PUBLICATIONS_URL}?page=${page}&pageSize=${pageSize}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parses an Explore Education Statistics publications payload.
|
|
42
|
+
*
|
|
43
|
+
* @param payload - the raw JSON body from the publications endpoint
|
|
44
|
+
* @returns the page of publications plus the API's paging counts
|
|
45
|
+
*/
|
|
46
|
+
export function parseExploreEducationPublications(payload) {
|
|
47
|
+
const parsed = EXPLORE_EDUCATION_PUBLICATIONS_SCHEMA.safeParse(payload);
|
|
48
|
+
if (!parsed.success) {
|
|
49
|
+
throw new UkSourceParseError('explore-education-statistics', parsed.error.message);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
page: parsed.data.paging.page,
|
|
53
|
+
pageSize: parsed.data.paging.pageSize,
|
|
54
|
+
totalResults: parsed.data.paging.totalResults,
|
|
55
|
+
totalPages: parsed.data.paging.totalPages,
|
|
56
|
+
publications: parsed.data.results.map((publication) => ({
|
|
57
|
+
id: publication.id,
|
|
58
|
+
title: publication.title,
|
|
59
|
+
slug: publication.slug,
|
|
60
|
+
summary: publication.summary ?? '',
|
|
61
|
+
lastPublishedIso: publication.lastPublished,
|
|
62
|
+
})),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Sums one publications page.
|
|
67
|
+
*
|
|
68
|
+
* @param page - a page from {@link parseExploreEducationPublications}
|
|
69
|
+
* @returns publication counts and the newest publish stamp on the page
|
|
70
|
+
*/
|
|
71
|
+
export function summarizeExploreEducationPublications(page) {
|
|
72
|
+
let latestPublishedIso = '';
|
|
73
|
+
let latestPublishedEpoch = Number.NEGATIVE_INFINITY;
|
|
74
|
+
for (const publication of page.publications) {
|
|
75
|
+
const epoch = Date.parse(publication.lastPublishedIso);
|
|
76
|
+
if (Number.isFinite(epoch) && epoch > latestPublishedEpoch) {
|
|
77
|
+
latestPublishedEpoch = epoch;
|
|
78
|
+
latestPublishedIso = publication.lastPublishedIso;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
publicationCount: page.publications.length,
|
|
83
|
+
totalResults: page.totalResults,
|
|
84
|
+
latestPublishedIso,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Lists one page of Explore Education Statistics publications.
|
|
89
|
+
*
|
|
90
|
+
* @param options - page, page size, and an optional fetch implementation
|
|
91
|
+
* @returns the page of publications the endpoint returns
|
|
92
|
+
*/
|
|
93
|
+
export async function fetchExploreEducationPublications(options = {}) {
|
|
94
|
+
const { page = 1, pageSize = EXPLORE_EDUCATION_PUBLICATIONS_PAGE_SIZE, fetchImpl = globalThis.fetch, } = options;
|
|
95
|
+
const response = await httpGet('explore-education-statistics', buildExploreEducationPublicationsUrl(page, pageSize), { fetchImpl });
|
|
96
|
+
return parseExploreEducationPublications(await response.json());
|
|
97
|
+
}
|
|
98
|
+
/** Explore Education Statistics publications, keyless. */
|
|
99
|
+
export const exploreEducationStatisticsAdapter = {
|
|
100
|
+
id: EXPLORE_EDUCATION_STATISTICS_SOURCE_ID,
|
|
101
|
+
name: 'Department for Education Explore Education Statistics publications',
|
|
102
|
+
auth: 'none',
|
|
103
|
+
description: 'The most recent statistics releases the Department for Education has published.',
|
|
104
|
+
fetchLive: (options) => fetchExploreEducationPublications(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
105
|
+
parse: parseExploreEducationPublications,
|
|
106
|
+
loadFixture: () => parseExploreEducationPublications(readFixtureJson('explore-education-statistics-2026-10-05.json')),
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=exploreEducationStatistics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exploreEducationStatistics.js","sourceRoot":"","sources":["../src/exploreEducationStatistics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { UkDataAdapter } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Find a Tender, the UK's post-Brexit public procurement service run by the
|
|
4
|
+
* Cabinet Office. Keyless, and the notices are published under the Open
|
|
5
|
+
* Government Licence v3, matching the licence the payload itself carries.
|
|
6
|
+
*/
|
|
7
|
+
export declare const FIND_A_TENDER_SOURCE_ID = "find-a-tender";
|
|
8
|
+
/** The OCDS 1.1 release packages endpoint. */
|
|
9
|
+
export declare const FIND_A_TENDER_RELEASE_PACKAGES_URL = "https://www.find-tender.service.gov.uk/api/1.0/ocdsReleasePackages";
|
|
10
|
+
/** How many release packages the adapter asks for by default. */
|
|
11
|
+
export declare const FIND_A_TENDER_RELEASE_LIMIT = 10;
|
|
12
|
+
/** One Open Contracting Data Standard release, as Find a Tender publishes it. */
|
|
13
|
+
export interface FindATenderRelease {
|
|
14
|
+
/** Open Contracting identifier shared by every release of one tender. */
|
|
15
|
+
ocid: string;
|
|
16
|
+
/** The release id, unique within the tender. */
|
|
17
|
+
id: string;
|
|
18
|
+
/** When the release was published, ISO 8601 with an offset. */
|
|
19
|
+
date: string;
|
|
20
|
+
/** Release tags, such as "tender", "award", or "contractAmendment". */
|
|
21
|
+
tags: string[];
|
|
22
|
+
tenderTitle: string;
|
|
23
|
+
/** Tender status, such as "active" or "complete", or "" when unset. */
|
|
24
|
+
tenderStatus: string;
|
|
25
|
+
procurementMethod: string;
|
|
26
|
+
buyerName: string;
|
|
27
|
+
/** The tender value amount, or null when the release leaves it out. */
|
|
28
|
+
tenderValueAmount: number | null;
|
|
29
|
+
}
|
|
30
|
+
/** One page of OCDS releases plus the package metadata around them. */
|
|
31
|
+
export interface FindATenderReleasePage {
|
|
32
|
+
/** The package URI the service echoes back, including its own cursor. */
|
|
33
|
+
uri: string;
|
|
34
|
+
version: string;
|
|
35
|
+
publishedDate: string;
|
|
36
|
+
releases: FindATenderRelease[];
|
|
37
|
+
}
|
|
38
|
+
/** Release counts by tender status. */
|
|
39
|
+
export interface FindATenderStatusCount {
|
|
40
|
+
status: string;
|
|
41
|
+
releaseCount: number;
|
|
42
|
+
}
|
|
43
|
+
/** Rolled-up view of one page of Find a Tender releases. */
|
|
44
|
+
export interface FindATenderSummary {
|
|
45
|
+
releaseCount: number;
|
|
46
|
+
/** Releases with an unset tender status. */
|
|
47
|
+
unsetStatusCount: number;
|
|
48
|
+
statusCounts: FindATenderStatusCount[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Parses an OCDS release packages payload into releases.
|
|
52
|
+
*
|
|
53
|
+
* @param payload - the raw JSON body from the release packages endpoint
|
|
54
|
+
* @returns the releases plus the package metadata
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseFindATenderReleases(payload: unknown): FindATenderReleasePage;
|
|
57
|
+
/**
|
|
58
|
+
* Counts the releases on one page by tender status.
|
|
59
|
+
*
|
|
60
|
+
* @param page - a page from {@link parseFindATenderReleases}
|
|
61
|
+
* @returns the release count and a per-status breakdown, most releases first
|
|
62
|
+
*/
|
|
63
|
+
export declare function summarizeFindATenderReleases(page: FindATenderReleasePage): FindATenderSummary;
|
|
64
|
+
/**
|
|
65
|
+
* Lists the most recent Find a Tender release packages.
|
|
66
|
+
*
|
|
67
|
+
* @param options - release limit and an optional fetch implementation
|
|
68
|
+
* @returns the releases the endpoint returns
|
|
69
|
+
*/
|
|
70
|
+
export declare function fetchFindATenderReleases(options?: {
|
|
71
|
+
limit?: number;
|
|
72
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
73
|
+
}): Promise<FindATenderReleasePage>;
|
|
74
|
+
/** Find a Tender OCDS release packages, keyless. */
|
|
75
|
+
export declare const findATenderAdapter: UkDataAdapter<FindATenderReleasePage>;
|
|
76
|
+
//# sourceMappingURL=findATender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findATender.d.ts","sourceRoot":"","sources":["../src/findATender.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAEvD,8CAA8C;AAC9C,eAAO,MAAM,kCAAkC,uEACuB,CAAC;AAEvE,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,uEAAuE;AACvE,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,uCAAuC;AACvC,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,sBAAsB,EAAE,CAAC;CACxC;AA0BD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,sBAAsB,CAqBjF;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAiB7F;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpE,OAAO,CAAC,sBAAsB,CAAC,CAQjC;AAED,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,sBAAsB,CAWpE,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
4
|
+
import { readFixtureJson } from './fixtures.js';
|
|
5
|
+
/**
|
|
6
|
+
* Find a Tender, the UK's post-Brexit public procurement service run by the
|
|
7
|
+
* Cabinet Office. Keyless, and the notices are published under the Open
|
|
8
|
+
* Government Licence v3, matching the licence the payload itself carries.
|
|
9
|
+
*/
|
|
10
|
+
export const FIND_A_TENDER_SOURCE_ID = 'find-a-tender';
|
|
11
|
+
/** The OCDS 1.1 release packages endpoint. */
|
|
12
|
+
export const FIND_A_TENDER_RELEASE_PACKAGES_URL = 'https://www.find-tender.service.gov.uk/api/1.0/ocdsReleasePackages';
|
|
13
|
+
/** How many release packages the adapter asks for by default. */
|
|
14
|
+
export const FIND_A_TENDER_RELEASE_LIMIT = 10;
|
|
15
|
+
const FIND_A_TENDER_RELEASE_SCHEMA = z.object({
|
|
16
|
+
ocid: z.string(),
|
|
17
|
+
id: z.string(),
|
|
18
|
+
date: z.string(),
|
|
19
|
+
tag: z.array(z.string()).optional(),
|
|
20
|
+
tender: z
|
|
21
|
+
.object({
|
|
22
|
+
title: z.string().nullable().optional(),
|
|
23
|
+
status: z.string().nullable().optional(),
|
|
24
|
+
procurementMethod: z.string().nullable().optional(),
|
|
25
|
+
value: z.object({ amount: z.number().nullable().optional() }).nullable().optional(),
|
|
26
|
+
})
|
|
27
|
+
.nullable()
|
|
28
|
+
.optional(),
|
|
29
|
+
buyer: z.object({ name: z.string().nullable().optional() }).nullable().optional(),
|
|
30
|
+
});
|
|
31
|
+
const FIND_A_TENDER_RELEASE_PACKAGE_SCHEMA = z.object({
|
|
32
|
+
uri: z.string(),
|
|
33
|
+
version: z.string(),
|
|
34
|
+
publishedDate: z.string(),
|
|
35
|
+
releases: z.array(FIND_A_TENDER_RELEASE_SCHEMA),
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Parses an OCDS release packages payload into releases.
|
|
39
|
+
*
|
|
40
|
+
* @param payload - the raw JSON body from the release packages endpoint
|
|
41
|
+
* @returns the releases plus the package metadata
|
|
42
|
+
*/
|
|
43
|
+
export function parseFindATenderReleases(payload) {
|
|
44
|
+
const parsed = FIND_A_TENDER_RELEASE_PACKAGE_SCHEMA.safeParse(payload);
|
|
45
|
+
if (!parsed.success) {
|
|
46
|
+
throw new UkSourceParseError('find-a-tender', parsed.error.message);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
uri: parsed.data.uri,
|
|
50
|
+
version: parsed.data.version,
|
|
51
|
+
publishedDate: parsed.data.publishedDate,
|
|
52
|
+
releases: parsed.data.releases.map((release) => ({
|
|
53
|
+
ocid: release.ocid,
|
|
54
|
+
id: release.id,
|
|
55
|
+
date: release.date,
|
|
56
|
+
tags: release.tag ?? [],
|
|
57
|
+
tenderTitle: release.tender?.title ?? '',
|
|
58
|
+
tenderStatus: release.tender?.status ?? '',
|
|
59
|
+
procurementMethod: release.tender?.procurementMethod ?? '',
|
|
60
|
+
buyerName: release.buyer?.name ?? '',
|
|
61
|
+
tenderValueAmount: release.tender?.value?.amount ?? null,
|
|
62
|
+
})),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Counts the releases on one page by tender status.
|
|
67
|
+
*
|
|
68
|
+
* @param page - a page from {@link parseFindATenderReleases}
|
|
69
|
+
* @returns the release count and a per-status breakdown, most releases first
|
|
70
|
+
*/
|
|
71
|
+
export function summarizeFindATenderReleases(page) {
|
|
72
|
+
const countByStatus = new Map();
|
|
73
|
+
let unsetStatusCount = 0;
|
|
74
|
+
for (const release of page.releases) {
|
|
75
|
+
if (release.tenderStatus === '') {
|
|
76
|
+
unsetStatusCount += 1;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
countByStatus.set(release.tenderStatus, (countByStatus.get(release.tenderStatus) ?? 0) + 1);
|
|
80
|
+
}
|
|
81
|
+
const statusCounts = [...countByStatus.entries()]
|
|
82
|
+
.map(([status, releaseCount]) => ({ status, releaseCount }))
|
|
83
|
+
.sort((left, right) => right.releaseCount - left.releaseCount || left.status.localeCompare(right.status));
|
|
84
|
+
return { releaseCount: page.releases.length, unsetStatusCount, statusCounts };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Lists the most recent Find a Tender release packages.
|
|
88
|
+
*
|
|
89
|
+
* @param options - release limit and an optional fetch implementation
|
|
90
|
+
* @returns the releases the endpoint returns
|
|
91
|
+
*/
|
|
92
|
+
export async function fetchFindATenderReleases(options = {}) {
|
|
93
|
+
const { limit = FIND_A_TENDER_RELEASE_LIMIT, fetchImpl = globalThis.fetch } = options;
|
|
94
|
+
const response = await httpGet('find-a-tender', `${FIND_A_TENDER_RELEASE_PACKAGES_URL}?limit=${limit}`, { fetchImpl });
|
|
95
|
+
return parseFindATenderReleases(await response.json());
|
|
96
|
+
}
|
|
97
|
+
/** Find a Tender OCDS release packages, keyless. */
|
|
98
|
+
export const findATenderAdapter = {
|
|
99
|
+
id: FIND_A_TENDER_SOURCE_ID,
|
|
100
|
+
name: 'Find a Tender OCDS release packages',
|
|
101
|
+
auth: 'none',
|
|
102
|
+
description: 'The most recent public procurement notices Find a Tender publishes.',
|
|
103
|
+
fetchLive: (options) => fetchFindATenderReleases(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
104
|
+
parse: parseFindATenderReleases,
|
|
105
|
+
loadFixture: () => parseFindATenderReleases(readFixtureJson('find-a-tender-2026-10-05.json')),
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=findATender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findATender.js","sourceRoot":"","sources":["../src/findATender.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;AAGhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kCAAkC,GAC7C,oEAAoE,CAAC;AAEvE,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AA4C9C,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACxC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACpF,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAClF,CAAC,CAAC;AAEH,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;CAChD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,MAAM,GAAG,oCAAoC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;QACpB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;QAC5B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;QACxC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE;YACvB,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YACxC,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE;YAC1C,iBAAiB,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,IAAI,EAAE;YAC1D,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE;YACpC,iBAAiB,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,IAAI;SACzD,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAA4B;IACvE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;YAChC,gBAAgB,IAAI,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,YAAY,GAA6B,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;SACxE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;SAC3D,IAAI,CACH,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACd,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CACpF,CAAC;IACJ,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC;AAChF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,UAAmE,EAAE;IAErE,MAAM,EAAE,KAAK,GAAG,2BAA2B,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;IACtF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,eAAe,EACf,GAAG,kCAAkC,UAAU,KAAK,EAAE,EACtD,EAAE,SAAS,EAAE,CACd,CAAC;IACF,OAAO,wBAAwB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,oDAAoD;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAA0C;IACvE,EAAE,EAAE,uBAAuB;IAC3B,IAAI,EAAE,qCAAqC;IAC3C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,qEAAqE;IAClF,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,wBAAwB,CACtB,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACzE;IACH,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EAAE,GAAG,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC;CAC9F,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { UkDataAdapter } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The Office for Health Improvement and Disparities public health profiles,
|
|
4
|
+
* published by Fingertips. Keyless, under the Open Government Licence v3.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FINGERTIPS_INDICATORS_SOURCE_ID = "fingertips-indicators";
|
|
7
|
+
/** Base URL for the Fingertips indicator metadata call. */
|
|
8
|
+
export declare const FINGERTIPS_INDICATOR_METADATA_URL = "https://fingertips.phe.org.uk/api/indicator_metadata/by_indicator_id";
|
|
9
|
+
/** The indicator the adapter reads when the caller does not name one. */
|
|
10
|
+
export declare const DEFAULT_FINGERTIPS_INDICATOR_IDS: number[];
|
|
11
|
+
/** One public health indicator and the metadata behind it. */
|
|
12
|
+
export interface FingertipsIndicatorMetadata {
|
|
13
|
+
indicatorId: number;
|
|
14
|
+
name: string;
|
|
15
|
+
/** The body that produced the figures, such as the ONS. */
|
|
16
|
+
dataSource: string;
|
|
17
|
+
/** The unit the indicator counts in, or "" when Fingertips leaves it out. */
|
|
18
|
+
unitLabel: string;
|
|
19
|
+
/** The measure type, such as "Life expectancy". */
|
|
20
|
+
valueType: string;
|
|
21
|
+
/** The year basis, such as "Calendar". */
|
|
22
|
+
yearType: string;
|
|
23
|
+
/** When Fingertips last uploaded data, or "" when unset. */
|
|
24
|
+
lastUploadedAt: string;
|
|
25
|
+
/** Fingertips' override stamp for the last change, or "" when unset. */
|
|
26
|
+
latestChangeTimestampOverride: string;
|
|
27
|
+
}
|
|
28
|
+
/** Rolled-up view of the indicators a call returns. */
|
|
29
|
+
export interface FingertipsIndicatorsSummary {
|
|
30
|
+
indicatorCount: number;
|
|
31
|
+
/** The distinct data sources behind the indicators, sorted. */
|
|
32
|
+
dataSources: string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Builds the Fingertips indicator metadata URL for a set of indicator ids.
|
|
36
|
+
*
|
|
37
|
+
* @param indicatorIds - the indicator ids to read
|
|
38
|
+
* @returns the metadata URL, ids comma-separated
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildFingertipsIndicatorUrl(indicatorIds: number[]): string;
|
|
41
|
+
/**
|
|
42
|
+
* Parses a Fingertips indicator metadata payload.
|
|
43
|
+
*
|
|
44
|
+
* @param payload - the raw JSON body from the metadata endpoint
|
|
45
|
+
* @returns one entry per indicator the payload carries
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseFingertipsIndicators(payload: unknown): FingertipsIndicatorMetadata[];
|
|
48
|
+
/**
|
|
49
|
+
* Sums the indicators a call returns.
|
|
50
|
+
*
|
|
51
|
+
* @param indicators - indicators from {@link parseFingertipsIndicators}
|
|
52
|
+
* @returns the indicator count and the distinct data sources behind them
|
|
53
|
+
*/
|
|
54
|
+
export declare function summarizeFingertipsIndicators(indicators: FingertipsIndicatorMetadata[]): FingertipsIndicatorsSummary;
|
|
55
|
+
/**
|
|
56
|
+
* Reads metadata for a set of Fingertips public health indicators.
|
|
57
|
+
*
|
|
58
|
+
* @param options - indicator ids and an optional fetch implementation
|
|
59
|
+
* @returns the indicator metadata the endpoint returns
|
|
60
|
+
*/
|
|
61
|
+
export declare function fetchFingertipsIndicators(options?: {
|
|
62
|
+
indicatorIds?: number[];
|
|
63
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
64
|
+
}): Promise<FingertipsIndicatorMetadata[]>;
|
|
65
|
+
/** Fingertips public health indicator metadata, keyless. */
|
|
66
|
+
export declare const fingertipsIndicatorsAdapter: UkDataAdapter<FingertipsIndicatorMetadata[]>;
|
|
67
|
+
//# sourceMappingURL=fingertipsIndicators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingertipsIndicators.d.ts","sourceRoot":"","sources":["../src/fingertipsIndicators.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,+BAA+B,0BAA0B,CAAC;AAEvE,2DAA2D;AAC3D,eAAO,MAAM,iCAAiC,yEAC0B,CAAC;AAEzE,yEAAyE;AACzE,eAAO,MAAM,gCAAgC,EAAE,MAAM,EAAY,CAAC;AAElE,8DAA8D;AAC9D,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,6BAA6B,EAAE,MAAM,CAAC;CACvC;AAED,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAkBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,2BAA2B,EAAE,CAezF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,2BAA2B,EAAE,GACxC,2BAA2B,CAK7B;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GAC7E,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAQxC;AAED,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,2BAA2B,EAAE,CAapF,CAAC"}
|