@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
package/dist/nomis.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
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
|
+
* Nomis, the Office for National Statistics' online labour-market database,
|
|
7
|
+
* run with the University of Durham. Keyless, published under the Open
|
|
8
|
+
* Government Licence v3.
|
|
9
|
+
*/
|
|
10
|
+
export const NOMIS_SOURCE_ID = 'nomis';
|
|
11
|
+
/**
|
|
12
|
+
* The SDMX dataset definitions catalogue. It carries one definition per
|
|
13
|
+
* dataset, with the dimensions and annotations behind it.
|
|
14
|
+
*/
|
|
15
|
+
export const NOMIS_DATASET_DEFINITIONS_URL = 'https://www.nomisweb.co.uk/api/v01/dataset/def.sdmx.json';
|
|
16
|
+
/** Annotation titles this adapter reads out of each dataset definition. */
|
|
17
|
+
export const NOMIS_STATUS_ANNOTATION = 'Status';
|
|
18
|
+
export const NOMIS_KEYWORDS_ANNOTATION = 'Keywords';
|
|
19
|
+
export const NOMIS_UNITS_ANNOTATION = 'Units';
|
|
20
|
+
export const NOMIS_LAST_UPDATED_ANNOTATION = 'LastUpdated';
|
|
21
|
+
// The catalogue types most annotation values as text, but some count values
|
|
22
|
+
// are numbers and a few MetadataText entries are null. Both appear in the
|
|
23
|
+
// live catalogue, so the schema accepts all three.
|
|
24
|
+
const NOMIS_ANNOTATION_SCHEMA = z.object({
|
|
25
|
+
annotationtitle: z.string(),
|
|
26
|
+
annotationtext: z.union([z.string(), z.number(), z.boolean()]).nullable(),
|
|
27
|
+
});
|
|
28
|
+
const NOMIS_KEYFAMILY_SCHEMA = z.object({
|
|
29
|
+
agencyid: z.string(),
|
|
30
|
+
id: z.string(),
|
|
31
|
+
uri: z.string(),
|
|
32
|
+
version: z.number(),
|
|
33
|
+
annotations: z
|
|
34
|
+
.object({ annotation: z.array(NOMIS_ANNOTATION_SCHEMA) })
|
|
35
|
+
.nullable()
|
|
36
|
+
.optional(),
|
|
37
|
+
name: z.object({ value: z.string() }).nullable().optional(),
|
|
38
|
+
description: z.object({ value: z.string() }).nullable().optional(),
|
|
39
|
+
});
|
|
40
|
+
const NOMIS_DATASET_DEFINITIONS_SCHEMA = z.object({
|
|
41
|
+
structure: z.object({
|
|
42
|
+
keyfamilies: z
|
|
43
|
+
.object({ keyfamily: z.array(NOMIS_KEYFAMILY_SCHEMA) })
|
|
44
|
+
.nullable()
|
|
45
|
+
.optional(),
|
|
46
|
+
}),
|
|
47
|
+
});
|
|
48
|
+
/** Turns an annotation value the catalogue types loosely into a string. */
|
|
49
|
+
function readAnnotationText(value) {
|
|
50
|
+
if (value === null) {
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
53
|
+
return typeof value === 'string' ? value : String(value);
|
|
54
|
+
}
|
|
55
|
+
/** Reads one named annotation off a dataset definition, or "" when absent. */
|
|
56
|
+
function readAnnotation(annotations, title) {
|
|
57
|
+
const match = annotations.find((annotation) => annotation.annotationtitle === title);
|
|
58
|
+
return match === undefined ? '' : readAnnotationText(match.annotationtext);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Parses a Nomis SDMX dataset definitions payload.
|
|
62
|
+
*
|
|
63
|
+
* @param payload - the raw JSON body from the definitions catalogue
|
|
64
|
+
* @returns one definition per dataset the catalogue lists
|
|
65
|
+
*/
|
|
66
|
+
export function parseNomisDatasetDefinitions(payload) {
|
|
67
|
+
const parsed = NOMIS_DATASET_DEFINITIONS_SCHEMA.safeParse(payload);
|
|
68
|
+
if (!parsed.success) {
|
|
69
|
+
throw new UkSourceParseError('nomis', parsed.error.message);
|
|
70
|
+
}
|
|
71
|
+
const keyfamilies = parsed.data.structure.keyfamilies?.keyfamily ?? [];
|
|
72
|
+
return keyfamilies.map((keyfamily) => {
|
|
73
|
+
const annotations = keyfamily.annotations?.annotation ?? [];
|
|
74
|
+
return {
|
|
75
|
+
id: keyfamily.id,
|
|
76
|
+
name: keyfamily.name?.value ?? '',
|
|
77
|
+
agencyId: keyfamily.agencyid,
|
|
78
|
+
version: keyfamily.version,
|
|
79
|
+
uri: keyfamily.uri,
|
|
80
|
+
status: readAnnotation(annotations, NOMIS_STATUS_ANNOTATION),
|
|
81
|
+
keywords: readAnnotation(annotations, NOMIS_KEYWORDS_ANNOTATION),
|
|
82
|
+
units: readAnnotation(annotations, NOMIS_UNITS_ANNOTATION),
|
|
83
|
+
lastUpdated: readAnnotation(annotations, NOMIS_LAST_UPDATED_ANNOTATION),
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Counts the catalogue by dataset status.
|
|
89
|
+
*
|
|
90
|
+
* @param definitions - definitions from {@link parseNomisDatasetDefinitions}
|
|
91
|
+
* @returns the dataset count and a per-status breakdown, most datasets first
|
|
92
|
+
*/
|
|
93
|
+
export function summarizeNomisDatasetDefinitions(definitions) {
|
|
94
|
+
const countByStatus = new Map();
|
|
95
|
+
for (const definition of definitions) {
|
|
96
|
+
countByStatus.set(definition.status, (countByStatus.get(definition.status) ?? 0) + 1);
|
|
97
|
+
}
|
|
98
|
+
const statusCounts = [...countByStatus.entries()]
|
|
99
|
+
.map(([status, datasetCount]) => ({ status, datasetCount }))
|
|
100
|
+
.sort((left, right) => right.datasetCount - left.datasetCount || left.status.localeCompare(right.status));
|
|
101
|
+
return { datasetCount: definitions.length, statusCounts };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Lists every dataset definition in the Nomis SDMX catalogue.
|
|
105
|
+
*
|
|
106
|
+
* @param options - an optional fetch implementation
|
|
107
|
+
* @returns the definitions the catalogue returns
|
|
108
|
+
*/
|
|
109
|
+
export async function fetchNomisDatasetDefinitions(options = {}) {
|
|
110
|
+
const { fetchImpl = globalThis.fetch } = options;
|
|
111
|
+
const response = await httpGet('nomis', NOMIS_DATASET_DEFINITIONS_URL, { fetchImpl });
|
|
112
|
+
return parseNomisDatasetDefinitions(await response.json());
|
|
113
|
+
}
|
|
114
|
+
/** Nomis SDMX dataset definitions, keyless. */
|
|
115
|
+
export const nomisAdapter = {
|
|
116
|
+
id: NOMIS_SOURCE_ID,
|
|
117
|
+
name: 'Nomis SDMX dataset catalogue',
|
|
118
|
+
auth: 'none',
|
|
119
|
+
description: 'Every dataset definition the ONS Nomis catalogue publishes, with its status.',
|
|
120
|
+
fetchLive: (options) => fetchNomisDatasetDefinitions(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
121
|
+
parse: parseNomisDatasetDefinitions,
|
|
122
|
+
loadFixture: () => parseNomisDatasetDefinitions(readFixtureJson('nomis-2026-10-05.json')),
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=nomis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nomis.js","sourceRoot":"","sources":["../src/nomis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onsDatasets.d.ts","sourceRoot":"","sources":["../src/onsDatasets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onsDatasets.d.ts","sourceRoot":"","sources":["../src/onsDatasets.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,uDAAuD,CAAC;AAErF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AA0BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,EAAE,CAcrE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,CA0BnF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQ7B;AAED,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,gBAAgB,EAAE,CAShE,CAAC"}
|
package/dist/onsDatasets.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
3
4
|
import { readFixtureJson } from './fixtures.js';
|
|
4
5
|
/**
|
|
5
6
|
* The ONS beta API dataset catalogue. Keyless, published by the Office for
|
|
@@ -92,10 +93,7 @@ export function summarizeOnsDatasets(records) {
|
|
|
92
93
|
*/
|
|
93
94
|
export async function fetchOnsDatasets(options = {}) {
|
|
94
95
|
const { limit = ONS_DATASETS_LIMIT, fetchImpl = globalThis.fetch } = options;
|
|
95
|
-
const response = await
|
|
96
|
-
if (!response.ok) {
|
|
97
|
-
throw new UkSourceApiError('ons-datasets', `HTTP ${response.status} listing datasets`);
|
|
98
|
-
}
|
|
96
|
+
const response = await httpGet('ons-datasets', `https://api.beta.ons.gov.uk/v1/datasets?limit=${limit}`, { fetchImpl });
|
|
99
97
|
return parseOnsDatasets(await response.json());
|
|
100
98
|
}
|
|
101
99
|
/** ONS beta API dataset catalogue adapter, keyless. */
|
package/dist/onsDatasets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onsDatasets.js","sourceRoot":"","sources":["../src/onsDatasets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"onsDatasets.js","sourceRoot":"","sources":["../src/onsDatasets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parliamentSeats.d.ts","sourceRoot":"","sources":["../src/parliamentSeats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parliamentSeats.d.ts","sourceRoot":"","sources":["../src/parliamentSeats.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D,0CAA0C;AAC1C,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AAEvF,kEAAkE;AAClE,eAAO,MAAM,gCAAgC,8BAA8B,CAAC;AAE5E;;;GAGG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;AAElD,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,sFAAsF;AACtF,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,YAAY,EAAE,oBAAoB,CAAC;CACpC;AAuBD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAO5D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9E;AA+CD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAyBlF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,oBAAoB,EAAE,GAC5B,qBAAqB,CAuBvB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,qBAAqB,CAE5E;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CAChC,GACL,OAAO,CAAC,qBAAqB,CAAC,CAUhC;AAED,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,qBAAqB,CAUvE,CAAC"}
|
package/dist/parliamentSeats.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
3
4
|
import { readFixtureJson } from './fixtures.js';
|
|
4
5
|
/**
|
|
5
6
|
* The state of the parties in each house of the UK Parliament, from the
|
|
@@ -183,10 +184,10 @@ export async function fetchParliamentSeats(options = {}) {
|
|
|
183
184
|
const forDate = options.forDate ?? formatParliamentQueryDate(options.now ?? new Date());
|
|
184
185
|
const fetchImpl = options.fetchImpl ?? globalThis.fetch;
|
|
185
186
|
const url = buildParliamentSeatsUrl(house, forDate);
|
|
186
|
-
const response = await
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
187
|
+
const response = await httpGet(PARLIAMENT_SEATS_SOURCE_ID, url, {
|
|
188
|
+
fetchImpl,
|
|
189
|
+
headers: { accept: 'application/json' },
|
|
190
|
+
});
|
|
190
191
|
return parseParliamentSeats(await response.json());
|
|
191
192
|
}
|
|
192
193
|
/** UK Parliament state of the parties, keyless. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parliamentSeats.js","sourceRoot":"","sources":["../src/parliamentSeats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"parliamentSeats.js","sourceRoot":"","sources":["../src/parliamentSeats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planningDatasets.d.ts","sourceRoot":"","sources":["../src/planningDatasets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"planningDatasets.d.ts","sourceRoot":"","sources":["../src/planningDatasets.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,kDAAkD,CAAC;AAErF,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sDAAsD;AACtD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC;AAoBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CAgBzE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,eAAe,EAAE,EAC3B,mBAAmB,GAAE,MAAsC,GAC1D,sBAAsB,CAaxB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpD,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B;AAED,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,eAAe,EAAE,CASpE,CAAC"}
|
package/dist/planningDatasets.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
3
4
|
import { readFixtureJson } from './fixtures.js';
|
|
4
5
|
/**
|
|
5
6
|
* The Planning Data platform's dataset catalogue, published by the Ministry of
|
|
@@ -81,10 +82,7 @@ export function summarizePlanningDatasets(datasets, largestDatasetLimit = DEFAUL
|
|
|
81
82
|
*/
|
|
82
83
|
export async function fetchPlanningDatasets(options = {}) {
|
|
83
84
|
const { fetchImpl = globalThis.fetch } = options;
|
|
84
|
-
const response = await
|
|
85
|
-
if (!response.ok) {
|
|
86
|
-
throw new UkSourceApiError('planning-datasets', `HTTP ${response.status} listing datasets`);
|
|
87
|
-
}
|
|
85
|
+
const response = await httpGet('planning-datasets', PLANNING_DATASETS_URL, { fetchImpl });
|
|
88
86
|
return parsePlanningDatasets(await response.json());
|
|
89
87
|
}
|
|
90
88
|
/** Planning Data platform datasets, published by MHCLG and keyless. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planningDatasets.js","sourceRoot":"","sources":["../src/planningDatasets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"planningDatasets.js","sourceRoot":"","sources":["../src/planningDatasets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policeCrimes.d.ts","sourceRoot":"","sources":["../src/policeCrimes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policeCrimes.d.ts","sourceRoot":"","sources":["../src/policeCrimes.ts"],"names":[],"mappings":"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"}
|
package/dist/policeCrimes.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { UkSourceApiError, UkSourceParseError } from './errors.js';
|
|
3
|
+
import { httpGet } from './http.js';
|
|
3
4
|
import { readFixtureJson } from './fixtures.js';
|
|
4
5
|
/**
|
|
5
6
|
* Street-level recorded crime from the Home Office's police.uk open data API.
|
|
@@ -185,10 +186,7 @@ export function buildPoliceStreetCrimesUrl(options) {
|
|
|
185
186
|
*/
|
|
186
187
|
export async function fetchPoliceCrimeMonths(options = {}) {
|
|
187
188
|
const { fetchImpl = globalThis.fetch } = options;
|
|
188
|
-
const response = await
|
|
189
|
-
if (!response.ok) {
|
|
190
|
-
throw new UkSourceApiError(POLICE_CRIMES_SOURCE_ID, `HTTP ${response.status} listing the published months`);
|
|
191
|
-
}
|
|
189
|
+
const response = await httpGet(POLICE_CRIMES_SOURCE_ID, POLICE_STREET_DATES_URL, { fetchImpl });
|
|
192
190
|
const parsed = POLICE_DATES_SCHEMA.safeParse(await response.json());
|
|
193
191
|
if (!parsed.success) {
|
|
194
192
|
throw new UkSourceParseError(POLICE_CRIMES_SOURCE_ID, parsed.error.message);
|
|
@@ -209,10 +207,9 @@ export async function fetchPoliceCrimeMonths(options = {}) {
|
|
|
209
207
|
*/
|
|
210
208
|
export async function fetchPoliceCrimeCategories(options = {}) {
|
|
211
209
|
const { fetchImpl = globalThis.fetch } = options;
|
|
212
|
-
const response = await
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
}
|
|
210
|
+
const response = await httpGet(POLICE_CRIMES_SOURCE_ID, POLICE_CRIME_CATEGORIES_URL, {
|
|
211
|
+
fetchImpl,
|
|
212
|
+
});
|
|
216
213
|
return response.json();
|
|
217
214
|
}
|
|
218
215
|
/** One month's raw records, or a throw naming the month that failed. */
|
package/dist/policeCrimes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policeCrimes.js","sourceRoot":"","sources":["../src/policeCrimes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policeCrimes.js","sourceRoot":"","sources":["../src/policeCrimes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { UkDataAdapter } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* postcodes.io, a free keyless lookup over ONS and Ordnance Survey postcode
|
|
4
|
+
* data published under the Open Government Licence v3. The service itself is
|
|
5
|
+
* a third party, not a government API: the postcode data is OGL, the lookup
|
|
6
|
+
* and the geocoding around it are postcodes.io's own.
|
|
7
|
+
*/
|
|
8
|
+
export declare const POSTCODE_LOOKUP_SOURCE_ID = "postcode-lookup";
|
|
9
|
+
/** Base URL for the postcodes.io single postcode lookup. */
|
|
10
|
+
export declare const POSTCODES_IO_BASE_URL = "https://api.postcodes.io/postcodes/";
|
|
11
|
+
/** The postcode the adapter looks up when the caller does not name one. */
|
|
12
|
+
export declare const DEFAULT_POSTCODE_QUERY = "SW1A1AA";
|
|
13
|
+
/** One postcode and the administrative areas it falls inside. */
|
|
14
|
+
export interface PostcodeLookupRecord {
|
|
15
|
+
/** The postcode as the service formats it, letters and digits spaced. */
|
|
16
|
+
postcode: string;
|
|
17
|
+
country: string;
|
|
18
|
+
/** English region or devolved nation region, or null when unset. */
|
|
19
|
+
region: string | null;
|
|
20
|
+
adminDistrict: string | null;
|
|
21
|
+
adminWard: string | null;
|
|
22
|
+
parliamentaryConstituency: string | null;
|
|
23
|
+
latitude: number;
|
|
24
|
+
longitude: number;
|
|
25
|
+
/** The NHS area the postcode sits in, or null when unset. */
|
|
26
|
+
nhsHa: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Builds the postcodes.io lookup URL for one postcode.
|
|
30
|
+
*
|
|
31
|
+
* @param postcode - the postcode to look up, spaced or unspaced
|
|
32
|
+
* @returns the single postcode lookup URL
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildPostcodeLookupUrl(postcode: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Parses a postcodes.io single postcode payload.
|
|
37
|
+
*
|
|
38
|
+
* @param payload - the raw JSON body from the lookup endpoint
|
|
39
|
+
* @returns the postcode record the service returns
|
|
40
|
+
*/
|
|
41
|
+
export declare function parsePostcodeLookup(payload: unknown): PostcodeLookupRecord;
|
|
42
|
+
/**
|
|
43
|
+
* Looks up one postcode. The service answers 404 for an unknown postcode,
|
|
44
|
+
* which becomes an API error like any other failed request.
|
|
45
|
+
*
|
|
46
|
+
* @param postcode - the postcode to look up, default SW1A 1AA
|
|
47
|
+
* @param options - an optional fetch implementation
|
|
48
|
+
* @returns the postcode record the service returns
|
|
49
|
+
*/
|
|
50
|
+
export declare function fetchPostcodeLookup(postcode?: string, options?: {
|
|
51
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
52
|
+
}): Promise<PostcodeLookupRecord>;
|
|
53
|
+
/** postcodes.io single postcode lookup, keyless. */
|
|
54
|
+
export declare const postcodeLookupAdapter: UkDataAdapter<PostcodeLookupRecord>;
|
|
55
|
+
//# sourceMappingURL=postcodeLookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postcodeLookup.d.ts","sourceRoot":"","sources":["../src/postcodeLookup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,4DAA4D;AAC5D,eAAO,MAAM,qBAAqB,wCAAwC,CAAC;AAE3E,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAmBD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAiB1E;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,GAAE,MAA+B,EACzC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpD,OAAO,CAAC,oBAAoB,CAAC,CAM/B;AAED,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,oBAAoB,CAYrE,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
* postcodes.io, a free keyless lookup over ONS and Ordnance Survey postcode
|
|
7
|
+
* data published under the Open Government Licence v3. The service itself is
|
|
8
|
+
* a third party, not a government API: the postcode data is OGL, the lookup
|
|
9
|
+
* and the geocoding around it are postcodes.io's own.
|
|
10
|
+
*/
|
|
11
|
+
export const POSTCODE_LOOKUP_SOURCE_ID = 'postcode-lookup';
|
|
12
|
+
/** Base URL for the postcodes.io single postcode lookup. */
|
|
13
|
+
export const POSTCODES_IO_BASE_URL = 'https://api.postcodes.io/postcodes/';
|
|
14
|
+
/** The postcode the adapter looks up when the caller does not name one. */
|
|
15
|
+
export const DEFAULT_POSTCODE_QUERY = 'SW1A1AA';
|
|
16
|
+
const POSTCODE_RESULT_SCHEMA = z.object({
|
|
17
|
+
postcode: z.string(),
|
|
18
|
+
country: z.string(),
|
|
19
|
+
region: z.string().nullable().optional(),
|
|
20
|
+
admin_district: z.string().nullable().optional(),
|
|
21
|
+
admin_ward: z.string().nullable().optional(),
|
|
22
|
+
parliamentary_constituency: z.string().nullable().optional(),
|
|
23
|
+
latitude: z.number(),
|
|
24
|
+
longitude: z.number(),
|
|
25
|
+
nhs_ha: z.string().nullable().optional(),
|
|
26
|
+
});
|
|
27
|
+
const POSTCODE_LOOKUP_SCHEMA = z.object({
|
|
28
|
+
status: z.number(),
|
|
29
|
+
result: POSTCODE_RESULT_SCHEMA,
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Builds the postcodes.io lookup URL for one postcode.
|
|
33
|
+
*
|
|
34
|
+
* @param postcode - the postcode to look up, spaced or unspaced
|
|
35
|
+
* @returns the single postcode lookup URL
|
|
36
|
+
*/
|
|
37
|
+
export function buildPostcodeLookupUrl(postcode) {
|
|
38
|
+
return `${POSTCODES_IO_BASE_URL}${encodeURIComponent(postcode)}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parses a postcodes.io single postcode payload.
|
|
42
|
+
*
|
|
43
|
+
* @param payload - the raw JSON body from the lookup endpoint
|
|
44
|
+
* @returns the postcode record the service returns
|
|
45
|
+
*/
|
|
46
|
+
export function parsePostcodeLookup(payload) {
|
|
47
|
+
const parsed = POSTCODE_LOOKUP_SCHEMA.safeParse(payload);
|
|
48
|
+
if (!parsed.success) {
|
|
49
|
+
throw new UkSourceParseError('postcode-lookup', parsed.error.message);
|
|
50
|
+
}
|
|
51
|
+
const result = parsed.data.result;
|
|
52
|
+
return {
|
|
53
|
+
postcode: result.postcode,
|
|
54
|
+
country: result.country,
|
|
55
|
+
region: result.region ?? null,
|
|
56
|
+
adminDistrict: result.admin_district ?? null,
|
|
57
|
+
adminWard: result.admin_ward ?? null,
|
|
58
|
+
parliamentaryConstituency: result.parliamentary_constituency ?? null,
|
|
59
|
+
latitude: result.latitude,
|
|
60
|
+
longitude: result.longitude,
|
|
61
|
+
nhsHa: result.nhs_ha ?? null,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Looks up one postcode. The service answers 404 for an unknown postcode,
|
|
66
|
+
* which becomes an API error like any other failed request.
|
|
67
|
+
*
|
|
68
|
+
* @param postcode - the postcode to look up, default SW1A 1AA
|
|
69
|
+
* @param options - an optional fetch implementation
|
|
70
|
+
* @returns the postcode record the service returns
|
|
71
|
+
*/
|
|
72
|
+
export async function fetchPostcodeLookup(postcode = DEFAULT_POSTCODE_QUERY, options = {}) {
|
|
73
|
+
const { fetchImpl = globalThis.fetch } = options;
|
|
74
|
+
const response = await httpGet('postcode-lookup', buildPostcodeLookupUrl(postcode), {
|
|
75
|
+
fetchImpl,
|
|
76
|
+
});
|
|
77
|
+
return parsePostcodeLookup(await response.json());
|
|
78
|
+
}
|
|
79
|
+
/** postcodes.io single postcode lookup, keyless. */
|
|
80
|
+
export const postcodeLookupAdapter = {
|
|
81
|
+
id: POSTCODE_LOOKUP_SOURCE_ID,
|
|
82
|
+
name: 'postcodes.io postcode lookup',
|
|
83
|
+
auth: 'none',
|
|
84
|
+
description: `One postcode's country, region, wards, and coordinates, default ${DEFAULT_POSTCODE_QUERY}.`,
|
|
85
|
+
fetchLive: (options) => fetchPostcodeLookup(DEFAULT_POSTCODE_QUERY, options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
|
|
86
|
+
parse: parsePostcodeLookup,
|
|
87
|
+
loadFixture: () => parsePostcodeLookup(readFixtureJson('postcode-lookup-2026-10-05.json')),
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=postcodeLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postcodeLookup.js","sourceRoot":"","sources":["../src/postcodeLookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { UkDataAdapter } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Public Health Scotland's open data portal, served by CKAN. Keyless, and the
|
|
4
|
+
* datasets are published under the Open Government Licence v3.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PUBLIC_HEALTH_SCOTLAND_SOURCE_ID = "public-health-scotland";
|
|
7
|
+
/** The CKAN package_list call on the Public Health Scotland portal. */
|
|
8
|
+
export declare const PUBLIC_HEALTH_SCOTLAND_PACKAGE_LIST_URL = "https://www.opendata.nhs.scot/api/3/action/package_list";
|
|
9
|
+
/** One dataset in the Public Health Scotland catalogue. */
|
|
10
|
+
export interface PublicHealthScotlandDataset {
|
|
11
|
+
/** CKAN package name, the identifier used in every other CKAN call. */
|
|
12
|
+
name: string;
|
|
13
|
+
}
|
|
14
|
+
/** Rolled-up view of the Public Health Scotland catalogue. */
|
|
15
|
+
export interface PublicHealthScotlandSummary {
|
|
16
|
+
packageCount: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parses a Public Health Scotland package_list payload.
|
|
20
|
+
*
|
|
21
|
+
* @param payload - the raw JSON body from the CKAN package_list call
|
|
22
|
+
* @returns one entry per dataset in the catalogue
|
|
23
|
+
*/
|
|
24
|
+
export declare function parsePublicHealthScotlandDatasets(payload: unknown): PublicHealthScotlandDataset[];
|
|
25
|
+
/**
|
|
26
|
+
* Counts the Public Health Scotland catalogue.
|
|
27
|
+
*
|
|
28
|
+
* @param datasets - dataset names from {@link parsePublicHealthScotlandDatasets}
|
|
29
|
+
* @returns the number of datasets listed
|
|
30
|
+
*/
|
|
31
|
+
export declare function summarizePublicHealthScotlandDatasets(datasets: PublicHealthScotlandDataset[]): PublicHealthScotlandSummary;
|
|
32
|
+
/**
|
|
33
|
+
* Lists every dataset in the Public Health Scotland catalogue.
|
|
34
|
+
*
|
|
35
|
+
* @param options - an optional fetch implementation
|
|
36
|
+
* @returns the package names the catalogue returns
|
|
37
|
+
*/
|
|
38
|
+
export declare function fetchPublicHealthScotlandDatasets(options?: {
|
|
39
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
40
|
+
}): Promise<PublicHealthScotlandDataset[]>;
|
|
41
|
+
/** Public Health Scotland open data catalogue, keyless. */
|
|
42
|
+
export declare const publicHealthScotlandAdapter: UkDataAdapter<PublicHealthScotlandDataset[]>;
|
|
43
|
+
//# sourceMappingURL=publicHealthScotland.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicHealthScotland.d.ts","sourceRoot":"","sources":["../src/publicHealthScotland.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,uEAAuE;AACvE,eAAO,MAAM,uCAAuC,4DACO,CAAC;AAE5D,2DAA2D;AAC3D,MAAM,WAAW,2BAA2B;IAC1C,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8DAA8D;AAC9D,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,OAAO,GAAG,2BAA2B,EAAE,CAMjG;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,2BAA2B,EAAE,GACtC,2BAA2B,CAE7B;AAED;;;;;GAKG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpD,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAQxC;AAED,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC,2BAA2B,EAAE,CAYpF,CAAC"}
|