@uk-open-data-connectors/uk-sources 0.1.0 → 0.1.1

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 (53) hide show
  1. package/README.md +21 -0
  2. package/dist/exploreEducationStatistics.d.ts +72 -0
  3. package/dist/exploreEducationStatistics.d.ts.map +1 -0
  4. package/dist/exploreEducationStatistics.js +110 -0
  5. package/dist/exploreEducationStatistics.js.map +1 -0
  6. package/dist/findATender.d.ts +76 -0
  7. package/dist/findATender.d.ts.map +1 -0
  8. package/dist/findATender.js +109 -0
  9. package/dist/findATender.js.map +1 -0
  10. package/dist/fingertipsIndicators.d.ts +67 -0
  11. package/dist/fingertipsIndicators.d.ts.map +1 -0
  12. package/dist/fingertipsIndicators.js +94 -0
  13. package/dist/fingertipsIndicators.js.map +1 -0
  14. package/dist/index.d.ts +40 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +20 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/londonDatastore.d.ts +46 -0
  19. package/dist/londonDatastore.d.ts.map +1 -0
  20. package/dist/londonDatastore.js +64 -0
  21. package/dist/londonDatastore.js.map +1 -0
  22. package/dist/nhsbsaCkan.d.ts +43 -0
  23. package/dist/nhsbsaCkan.d.ts.map +1 -0
  24. package/dist/nhsbsaCkan.js +61 -0
  25. package/dist/nhsbsaCkan.js.map +1 -0
  26. package/dist/nomis.d.ts +71 -0
  27. package/dist/nomis.d.ts.map +1 -0
  28. package/dist/nomis.js +126 -0
  29. package/dist/nomis.js.map +1 -0
  30. package/dist/postcodeLookup.d.ts +55 -0
  31. package/dist/postcodeLookup.d.ts.map +1 -0
  32. package/dist/postcodeLookup.js +89 -0
  33. package/dist/postcodeLookup.js.map +1 -0
  34. package/dist/publicHealthScotland.d.ts +43 -0
  35. package/dist/publicHealthScotland.d.ts.map +1 -0
  36. package/dist/publicHealthScotland.js +61 -0
  37. package/dist/publicHealthScotland.js.map +1 -0
  38. package/dist/registry.d.ts.map +1 -1
  39. package/dist/registry.js +22 -0
  40. package/dist/registry.js.map +1 -1
  41. package/dist/tflLineStatus.d.ts +59 -0
  42. package/dist/tflLineStatus.d.ts.map +1 -0
  43. package/dist/tflLineStatus.js +93 -0
  44. package/dist/tflLineStatus.js.map +1 -0
  45. package/dist/tnaDiscovery.d.ts +76 -0
  46. package/dist/tnaDiscovery.d.ts.map +1 -0
  47. package/dist/tnaDiscovery.js +101 -0
  48. package/dist/tnaDiscovery.js.map +1 -0
  49. package/dist/ukhsaDashboard.d.ts +92 -0
  50. package/dist/ukhsaDashboard.d.ts.map +1 -0
  51. package/dist/ukhsaDashboard.js +136 -0
  52. package/dist/ukhsaDashboard.js.map +1 -0
  53. package/package.json +11 -3
package/dist/index.d.ts CHANGED
@@ -10,8 +10,16 @@ export type { BankRateObservation, BankRateSpell, BankRateSummary } from './bank
10
10
  export { buildCarbonIntensityWindowUrl, carbonIntensityAdapter, CARBON_INTENSITY_API_BASE_URL, CARBON_INTENSITY_INDEX_BANDS, CARBON_INTENSITY_MAX_WINDOW_DAYS, CARBON_INTENSITY_PERIOD_MINUTES, CARBON_INTENSITY_RANGE_URL, CARBON_INTENSITY_SOURCE_ID, DEFAULT_CARBON_INTENSITY_WINDOW_DAYS, fetchCarbonIntensityWindow, formatCarbonIntensityInstant, parseCarbonIntensityWindow, resolveCarbonIntensityWindow, } from './carbonIntensity.js';
11
11
  /** Carbon intensity types. */
12
12
  export type { CarbonIntensityBandCount, CarbonIntensityIndex, CarbonIntensityPeriod, CarbonIntensityWindow, } from './carbonIntensity.js';
13
+ /** Department for Education Explore Education Statistics publications (keyless). */
14
+ export { buildExploreEducationPublicationsUrl, EXPLORE_EDUCATION_PUBLICATIONS_PAGE_SIZE, EXPLORE_EDUCATION_PUBLICATIONS_URL, EXPLORE_EDUCATION_STATISTICS_SOURCE_ID, exploreEducationStatisticsAdapter, fetchExploreEducationPublications, parseExploreEducationPublications, summarizeExploreEducationPublications, } from './exploreEducationStatistics.js';
15
+ /** Explore Education Statistics types. */
16
+ export type { ExploreEducationPublication, ExploreEducationPublicationsPage, ExploreEducationPublicationsSummary, } from './exploreEducationStatistics.js';
13
17
  /** Errors shared by every UK source adapter. */
14
18
  export { UkSourceApiError, UkSourceError, UkSourceParseError } from './errors.js';
19
+ /** Fingertips public health indicator metadata, published by OHID (keyless). */
20
+ export { buildFingertipsIndicatorUrl, DEFAULT_FINGERTIPS_INDICATOR_IDS, fetchFingertipsIndicators, FINGERTIPS_INDICATOR_METADATA_URL, FINGERTIPS_INDICATORS_SOURCE_ID, fingertipsIndicatorsAdapter, parseFingertipsIndicators, summarizeFingertipsIndicators, } from './fingertipsIndicators.js';
21
+ /** Fingertips indicator types. */
22
+ export type { FingertipsIndicatorMetadata, FingertipsIndicatorsSummary, } from './fingertipsIndicators.js';
15
23
  /** Environment Agency flood-monitoring stations and readings (keyless). */
16
24
  export { DEFAULT_FLOOD_STATION_REFERENCE, fetchFloodStationReadings, fetchFloodStations, floodReadingsAdapter, floodStationsAdapter, parseFloodReadings, parseFloodStations, summarizeFloodReadings, } from './floodMonitoring.js';
17
25
  /** Flood-monitoring types. */
@@ -20,6 +28,18 @@ export type { FloodMeasure, FloodReading, FloodReadingSummary, FloodStation, } f
20
28
  export { DEFAULT_LARGEST_AUTHORITY_LIMIT, fetchFoodHygieneAuthorities, foodHygieneAuthoritiesAdapter, FSA_API_VERSION, FSA_API_VERSION_HEADER, FSA_AUTHORITIES_URL, parseFoodHygieneAuthorities, summarizeFoodHygieneAuthorities, } from './foodHygiene.js';
21
29
  /** Food hygiene register types. */
22
30
  export type { FoodHygieneAuthority, FoodHygieneScheme, FoodHygieneSummary } from './foodHygiene.js';
31
+ /** London Datastore catalogue, published by the Greater London Authority (keyless). */
32
+ export { fetchLondonDatastorePackages, LONDON_DATASTORE_PACKAGE_LIST_URL, LONDON_DATASTORE_SOURCE_ID, londonDatastoreAdapter, parseLondonDatastorePackages, summarizeLondonDatastorePackages, } from './londonDatastore.js';
33
+ /** London Datastore types. */
34
+ export type { LondonDatastorePackage, LondonDatastoreSummary } from './londonDatastore.js';
35
+ /** NHS Business Services Authority open data catalogue (keyless). */
36
+ export { fetchNhsbsaCkanPackages, NHSBSA_CKAN_PACKAGE_LIST_URL, NHSBSA_CKAN_SOURCE_ID, nhsbsaCkanAdapter, parseNhsbsaCkanPackages, summarizeNhsbsaCkanPackages, } from './nhsbsaCkan.js';
37
+ /** NHSBSA catalogue types. */
38
+ export type { NhsbsaCkanSummary, NhsbsaDataset } from './nhsbsaCkan.js';
39
+ /** Nomis SDMX dataset catalogue, run by the ONS (keyless). */
40
+ export { fetchNomisDatasetDefinitions, NOMIS_DATASET_DEFINITIONS_URL, NOMIS_KEYWORDS_ANNOTATION, NOMIS_LAST_UPDATED_ANNOTATION, NOMIS_SOURCE_ID, NOMIS_STATUS_ANNOTATION, NOMIS_UNITS_ANNOTATION, nomisAdapter, parseNomisDatasetDefinitions, summarizeNomisDatasetDefinitions, } from './nomis.js';
41
+ /** Nomis catalogue types. */
42
+ export type { NomisCatalogSummary, NomisDatasetDefinition, NomisStatusCount } from './nomis.js';
23
43
  /** Office for National Statistics dataset catalogue (keyless). */
24
44
  export { fetchOnsDatasets, onsDatasetsAdapter, ONS_DATASETS_LIMIT, ONS_DATASETS_URL, parseOnsDatasets, summarizeOnsDatasets, } from './onsDatasets.js';
25
45
  /** ONS catalogue types. */
@@ -36,10 +56,30 @@ export type { PlanningDataset, PlanningDatasetSummary } from './planningDatasets
36
56
  export { buildPoliceStreetCrimesUrl, DEFAULT_POLICE_CRIME_LOCATION, DEFAULT_POLICE_CRIME_MONTH_COUNT, fetchPoliceCrimeCategories, fetchPoliceCrimeMonths, fetchPoliceCrimeSummary, parsePoliceCrimeSummary, policeCrimesAdapter, POLICE_API_BASE_URL, POLICE_CRIME_CATEGORIES_URL, POLICE_CRIMES_SOURCE_ID, POLICE_STREET_CRIMES_RADIUS_MILES, POLICE_STREET_CRIMES_URL, POLICE_STREET_DATES_URL, } from './policeCrimes.js';
37
57
  /** Recorded crime types. */
38
58
  export type { PoliceCategoryCount, PoliceCrimeCategory, PoliceCrimeLocation, PoliceCrimeResponses, PoliceCrimeSummary, PoliceMonthCount, PoliceOutcomeCount, } from './policeCrimes.js';
59
+ /** postcodes.io single postcode lookup (keyless, third-party service, OGL data). */
60
+ export { buildPostcodeLookupUrl, DEFAULT_POSTCODE_QUERY, fetchPostcodeLookup, parsePostcodeLookup, POSTCODE_LOOKUP_SOURCE_ID, POSTCODES_IO_BASE_URL, postcodeLookupAdapter, } from './postcodeLookup.js';
61
+ /** Postcode lookup types. */
62
+ export type { PostcodeLookupRecord } from './postcodeLookup.js';
63
+ /** Public Health Scotland open data catalogue (keyless). */
64
+ export { fetchPublicHealthScotlandDatasets, PUBLIC_HEALTH_SCOTLAND_PACKAGE_LIST_URL, PUBLIC_HEALTH_SCOTLAND_SOURCE_ID, parsePublicHealthScotlandDatasets, publicHealthScotlandAdapter, summarizePublicHealthScotlandDatasets, } from './publicHealthScotland.js';
65
+ /** Public Health Scotland catalogue types. */
66
+ export type { PublicHealthScotlandDataset, PublicHealthScotlandSummary, } from './publicHealthScotland.js';
39
67
  /** Transport for London Santander Cycles docking stations (keyless). */
40
68
  export { DEFAULT_LARGEST_STATION_LIMIT, fetchTflBikePoints, parseTflBikePoints, summarizeTflBikePoints, tflBikePointsAdapter, TFL_BIKE_POINTS_URL, } from './tflBikePoints.js';
41
69
  /** Docking station types. */
42
70
  export type { DockingStation, DockingStationSummary } from './tflBikePoints.js';
71
+ /** Transport for London Tube line status (keyless). */
72
+ export { fetchTflLineStatuses, parseTflLineStatuses, summarizeTflLineStatuses, TFL_LINE_STATUS_GOOD_SERVICE_SEVERITY, TFL_LINE_STATUS_SOURCE_ID, TFL_LINE_STATUS_URL, tflLineStatusAdapter, } from './tflLineStatus.js';
73
+ /** Tube line status types. */
74
+ export type { TflLineStatus, TflLineStatusSummary } from './tflLineStatus.js';
75
+ /** The National Archives Discovery catalogue search (keyless). */
76
+ export { buildTnaDiscoverySearchUrl, DEFAULT_TNA_DISCOVERY_QUERY, fetchTnaDiscoveryRecords, parseTnaDiscoveryRecords, summarizeTnaDiscoverySearch, TNA_DISCOVERY_ACCEPT_HEADER, TNA_DISCOVERY_SEARCH_URL, TNA_DISCOVERY_SOURCE_ID, tnaDiscoveryAdapter, } from './tnaDiscovery.js';
77
+ /** Discovery search types. */
78
+ export type { TnaDiscoveryRecord, TnaDiscoverySearchResult, TnaDiscoverySearchSummary, } from './tnaDiscovery.js';
79
+ /** UK Health Security Agency data dashboard metric points (keyless). */
80
+ export { buildUkhsaMetricUrl, fetchUkhsaMetricPoints, parseUkhsaMetricPoints, summarizeUkhsaMetricPoints, UKHSA_DASHBOARD_API_BASE_URL, UKHSA_DASHBOARD_METRIC_PATH, UKHSA_DASHBOARD_PAGE_SIZE, UKHSA_DASHBOARD_SOURCE_ID, ukhsaDashboardAdapter, } from './ukhsaDashboard.js';
81
+ /** UKHSA dashboard types. */
82
+ export type { UkhsaMetricPage, UkhsaMetricPoint, UkhsaMetricSummary } from './ukhsaDashboard.js';
43
83
  /** The uniform adapter registry and probe helpers. */
44
84
  export { UK_DATA_SOURCES, getUkDataSource, probeAllUkDataSources, probeUkDataSource, } from './registry.js';
45
85
  /** Shared adapter contract types. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,12 +4,22 @@ export { ANCIENT_WOODLAND_CATEGORIES, ANCIENT_WOODLAND_DATASET_URL, ANCIENT_WOOD
4
4
  export { bankRateAdapter, BANK_RATE_CSV_URL, BANK_RATE_FIRST_QUERY_DATE, BANK_RATE_SERIES_CODE, BANK_RATE_SOURCE_ID, buildBankRateCsvUrl, buildBankRateSpells, fetchBankRateObservations, formatBankRateQueryDate, parseBankRateCsv, summarizeBankRateSeries, } from './bankRate.js';
5
5
  /** National Energy System Operator half-hourly carbon intensity (keyless). */
6
6
  export { buildCarbonIntensityWindowUrl, carbonIntensityAdapter, CARBON_INTENSITY_API_BASE_URL, CARBON_INTENSITY_INDEX_BANDS, CARBON_INTENSITY_MAX_WINDOW_DAYS, CARBON_INTENSITY_PERIOD_MINUTES, CARBON_INTENSITY_RANGE_URL, CARBON_INTENSITY_SOURCE_ID, DEFAULT_CARBON_INTENSITY_WINDOW_DAYS, fetchCarbonIntensityWindow, formatCarbonIntensityInstant, parseCarbonIntensityWindow, resolveCarbonIntensityWindow, } from './carbonIntensity.js';
7
+ /** Department for Education Explore Education Statistics publications (keyless). */
8
+ export { buildExploreEducationPublicationsUrl, EXPLORE_EDUCATION_PUBLICATIONS_PAGE_SIZE, EXPLORE_EDUCATION_PUBLICATIONS_URL, EXPLORE_EDUCATION_STATISTICS_SOURCE_ID, exploreEducationStatisticsAdapter, fetchExploreEducationPublications, parseExploreEducationPublications, summarizeExploreEducationPublications, } from './exploreEducationStatistics.js';
7
9
  /** Errors shared by every UK source adapter. */
8
10
  export { UkSourceApiError, UkSourceError, UkSourceParseError } from './errors.js';
11
+ /** Fingertips public health indicator metadata, published by OHID (keyless). */
12
+ export { buildFingertipsIndicatorUrl, DEFAULT_FINGERTIPS_INDICATOR_IDS, fetchFingertipsIndicators, FINGERTIPS_INDICATOR_METADATA_URL, FINGERTIPS_INDICATORS_SOURCE_ID, fingertipsIndicatorsAdapter, parseFingertipsIndicators, summarizeFingertipsIndicators, } from './fingertipsIndicators.js';
9
13
  /** Environment Agency flood-monitoring stations and readings (keyless). */
10
14
  export { DEFAULT_FLOOD_STATION_REFERENCE, fetchFloodStationReadings, fetchFloodStations, floodReadingsAdapter, floodStationsAdapter, parseFloodReadings, parseFloodStations, summarizeFloodReadings, } from './floodMonitoring.js';
11
15
  /** Food Standards Agency food hygiene registers (keyless). */
12
16
  export { DEFAULT_LARGEST_AUTHORITY_LIMIT, fetchFoodHygieneAuthorities, foodHygieneAuthoritiesAdapter, FSA_API_VERSION, FSA_API_VERSION_HEADER, FSA_AUTHORITIES_URL, parseFoodHygieneAuthorities, summarizeFoodHygieneAuthorities, } from './foodHygiene.js';
17
+ /** London Datastore catalogue, published by the Greater London Authority (keyless). */
18
+ export { fetchLondonDatastorePackages, LONDON_DATASTORE_PACKAGE_LIST_URL, LONDON_DATASTORE_SOURCE_ID, londonDatastoreAdapter, parseLondonDatastorePackages, summarizeLondonDatastorePackages, } from './londonDatastore.js';
19
+ /** NHS Business Services Authority open data catalogue (keyless). */
20
+ export { fetchNhsbsaCkanPackages, NHSBSA_CKAN_PACKAGE_LIST_URL, NHSBSA_CKAN_SOURCE_ID, nhsbsaCkanAdapter, parseNhsbsaCkanPackages, summarizeNhsbsaCkanPackages, } from './nhsbsaCkan.js';
21
+ /** Nomis SDMX dataset catalogue, run by the ONS (keyless). */
22
+ export { fetchNomisDatasetDefinitions, NOMIS_DATASET_DEFINITIONS_URL, NOMIS_KEYWORDS_ANNOTATION, NOMIS_LAST_UPDATED_ANNOTATION, NOMIS_SOURCE_ID, NOMIS_STATUS_ANNOTATION, NOMIS_UNITS_ANNOTATION, nomisAdapter, parseNomisDatasetDefinitions, summarizeNomisDatasetDefinitions, } from './nomis.js';
13
23
  /** Office for National Statistics dataset catalogue (keyless). */
14
24
  export { fetchOnsDatasets, onsDatasetsAdapter, ONS_DATASETS_LIMIT, ONS_DATASETS_URL, parseOnsDatasets, summarizeOnsDatasets, } from './onsDatasets.js';
15
25
  /** UK Parliament state of the parties in the Commons and the Lords (keyless). */
@@ -18,8 +28,18 @@ export { buildParliamentSeatsUrl, fetchParliamentSeats, formatParliamentQueryDat
18
28
  export { DEFAULT_LARGEST_DATASET_LIMIT, fetchPlanningDatasets, parsePlanningDatasets, planningDatasetsAdapter, PLANNING_DATASET_REALM, PLANNING_DATASETS_URL, summarizePlanningDatasets, } from './planningDatasets.js';
19
29
  /** Home Office police.uk street-level recorded crime (keyless). */
20
30
  export { buildPoliceStreetCrimesUrl, DEFAULT_POLICE_CRIME_LOCATION, DEFAULT_POLICE_CRIME_MONTH_COUNT, fetchPoliceCrimeCategories, fetchPoliceCrimeMonths, fetchPoliceCrimeSummary, parsePoliceCrimeSummary, policeCrimesAdapter, POLICE_API_BASE_URL, POLICE_CRIME_CATEGORIES_URL, POLICE_CRIMES_SOURCE_ID, POLICE_STREET_CRIMES_RADIUS_MILES, POLICE_STREET_CRIMES_URL, POLICE_STREET_DATES_URL, } from './policeCrimes.js';
31
+ /** postcodes.io single postcode lookup (keyless, third-party service, OGL data). */
32
+ export { buildPostcodeLookupUrl, DEFAULT_POSTCODE_QUERY, fetchPostcodeLookup, parsePostcodeLookup, POSTCODE_LOOKUP_SOURCE_ID, POSTCODES_IO_BASE_URL, postcodeLookupAdapter, } from './postcodeLookup.js';
33
+ /** Public Health Scotland open data catalogue (keyless). */
34
+ export { fetchPublicHealthScotlandDatasets, PUBLIC_HEALTH_SCOTLAND_PACKAGE_LIST_URL, PUBLIC_HEALTH_SCOTLAND_SOURCE_ID, parsePublicHealthScotlandDatasets, publicHealthScotlandAdapter, summarizePublicHealthScotlandDatasets, } from './publicHealthScotland.js';
21
35
  /** Transport for London Santander Cycles docking stations (keyless). */
22
36
  export { DEFAULT_LARGEST_STATION_LIMIT, fetchTflBikePoints, parseTflBikePoints, summarizeTflBikePoints, tflBikePointsAdapter, TFL_BIKE_POINTS_URL, } from './tflBikePoints.js';
37
+ /** Transport for London Tube line status (keyless). */
38
+ export { fetchTflLineStatuses, parseTflLineStatuses, summarizeTflLineStatuses, TFL_LINE_STATUS_GOOD_SERVICE_SEVERITY, TFL_LINE_STATUS_SOURCE_ID, TFL_LINE_STATUS_URL, tflLineStatusAdapter, } from './tflLineStatus.js';
39
+ /** The National Archives Discovery catalogue search (keyless). */
40
+ export { buildTnaDiscoverySearchUrl, DEFAULT_TNA_DISCOVERY_QUERY, fetchTnaDiscoveryRecords, parseTnaDiscoveryRecords, summarizeTnaDiscoverySearch, TNA_DISCOVERY_ACCEPT_HEADER, TNA_DISCOVERY_SEARCH_URL, TNA_DISCOVERY_SOURCE_ID, tnaDiscoveryAdapter, } from './tnaDiscovery.js';
41
+ /** UK Health Security Agency data dashboard metric points (keyless). */
42
+ export { buildUkhsaMetricUrl, fetchUkhsaMetricPoints, parseUkhsaMetricPoints, summarizeUkhsaMetricPoints, UKHSA_DASHBOARD_API_BASE_URL, UKHSA_DASHBOARD_METRIC_PATH, UKHSA_DASHBOARD_PAGE_SIZE, UKHSA_DASHBOARD_SOURCE_ID, ukhsaDashboardAdapter, } from './ukhsaDashboard.js';
23
43
  /** The uniform adapter registry and probe helpers. */
24
44
  export { UK_DATA_SOURCES, getUkDataSource, probeAllUkDataSources, probeUkDataSource, } from './registry.js';
25
45
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAU9B,+EAA+E;AAC/E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAGvB,8EAA8E;AAC9E,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,0BAA0B,EAC1B,0BAA0B,EAC1B,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAQ9B,gDAAgD;AAChD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClF,2EAA2E;AAC3E,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAQ9B,8DAA8D;AAC9D,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAG1B,kEAAkE;AAClE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,iFAAiF;AACjF,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,+BAA+B,EAC/B,0BAA0B,EAC1B,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAQ9B,8EAA8E;AAC9E,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAG/B,mEAAmE;AACnE,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,iCAAiC,EACjC,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAW3B,wEAAwE;AACxE,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,sDAAsD;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { UkDataAdapter } from './types.js';
2
+ /**
3
+ * The London Datastore, the Greater London Authority's open data catalogue,
4
+ * served by CKAN. Keyless, published under the Open Government Licence v3.
5
+ */
6
+ export declare const LONDON_DATASTORE_SOURCE_ID = "london-datastore";
7
+ /**
8
+ * The CKAN package_list call. The service answers a 307 redirect from this
9
+ * path to /api/action/package_list, which fetch follows on its own.
10
+ */
11
+ export declare const LONDON_DATASTORE_PACKAGE_LIST_URL = "https://data.london.gov.uk/api/3/action/package_list";
12
+ /** One dataset in the London Datastore catalogue. */
13
+ export interface LondonDatastorePackage {
14
+ /** CKAN package name, the identifier used in every other CKAN call. */
15
+ name: string;
16
+ }
17
+ /** Rolled-up view of the London Datastore catalogue. */
18
+ export interface LondonDatastoreSummary {
19
+ packageCount: number;
20
+ }
21
+ /**
22
+ * Parses a London Datastore package_list payload.
23
+ *
24
+ * @param payload - the raw JSON body from the CKAN package_list call
25
+ * @returns one entry per dataset in the catalogue
26
+ */
27
+ export declare function parseLondonDatastorePackages(payload: unknown): LondonDatastorePackage[];
28
+ /**
29
+ * Counts the London Datastore catalogue.
30
+ *
31
+ * @param packages - package names from {@link parseLondonDatastorePackages}
32
+ * @returns the number of datasets listed
33
+ */
34
+ export declare function summarizeLondonDatastorePackages(packages: LondonDatastorePackage[]): LondonDatastoreSummary;
35
+ /**
36
+ * Lists every dataset in the London Datastore catalogue.
37
+ *
38
+ * @param options - an optional fetch implementation
39
+ * @returns the package names the catalogue returns
40
+ */
41
+ export declare function fetchLondonDatastorePackages(options?: {
42
+ fetchImpl?: typeof globalThis.fetch;
43
+ }): Promise<LondonDatastorePackage[]>;
44
+ /** London Datastore catalogue, keyless. */
45
+ export declare const londonDatastoreAdapter: UkDataAdapter<LondonDatastorePackage[]>;
46
+ //# sourceMappingURL=londonDatastore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"londonDatastore.d.ts","sourceRoot":"","sources":["../src/londonDatastore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,iCAAiC,yDACU,CAAC;AAEzD,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,sBAAsB,EAAE,CAMvF;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,sBAAsB,EAAE,GACjC,sBAAsB,CAExB;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpD,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAOnC;AAED,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,sBAAsB,EAAE,CAY1E,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ import { UkSourceApiError, UkSourceParseError } from './errors.js';
3
+ import { readFixtureJson } from './fixtures.js';
4
+ /**
5
+ * The London Datastore, the Greater London Authority's open data catalogue,
6
+ * served by CKAN. Keyless, published under the Open Government Licence v3.
7
+ */
8
+ export const LONDON_DATASTORE_SOURCE_ID = 'london-datastore';
9
+ /**
10
+ * The CKAN package_list call. The service answers a 307 redirect from this
11
+ * path to /api/action/package_list, which fetch follows on its own.
12
+ */
13
+ export const LONDON_DATASTORE_PACKAGE_LIST_URL = 'https://data.london.gov.uk/api/3/action/package_list';
14
+ const LONDON_DATASTORE_PACKAGE_LIST_SCHEMA = z.object({
15
+ success: z.boolean(),
16
+ result: z.array(z.string()),
17
+ });
18
+ /**
19
+ * Parses a London Datastore 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 function parseLondonDatastorePackages(payload) {
25
+ const parsed = LONDON_DATASTORE_PACKAGE_LIST_SCHEMA.safeParse(payload);
26
+ if (!parsed.success) {
27
+ throw new UkSourceParseError('london-datastore', parsed.error.message);
28
+ }
29
+ return parsed.data.result.map((name) => ({ name }));
30
+ }
31
+ /**
32
+ * Counts the London Datastore catalogue.
33
+ *
34
+ * @param packages - package names from {@link parseLondonDatastorePackages}
35
+ * @returns the number of datasets listed
36
+ */
37
+ export function summarizeLondonDatastorePackages(packages) {
38
+ return { packageCount: packages.length };
39
+ }
40
+ /**
41
+ * Lists every dataset in the London Datastore catalogue.
42
+ *
43
+ * @param options - an optional fetch implementation
44
+ * @returns the package names the catalogue returns
45
+ */
46
+ export async function fetchLondonDatastorePackages(options = {}) {
47
+ const { fetchImpl = globalThis.fetch } = options;
48
+ const response = await fetchImpl(LONDON_DATASTORE_PACKAGE_LIST_URL);
49
+ if (!response.ok) {
50
+ throw new UkSourceApiError('london-datastore', `HTTP ${response.status} listing packages`);
51
+ }
52
+ return parseLondonDatastorePackages(await response.json());
53
+ }
54
+ /** London Datastore catalogue, keyless. */
55
+ export const londonDatastoreAdapter = {
56
+ id: LONDON_DATASTORE_SOURCE_ID,
57
+ name: 'London Datastore dataset catalogue',
58
+ auth: 'none',
59
+ description: 'Every dataset the Greater London Authority lists on the London Datastore.',
60
+ fetchLive: (options) => fetchLondonDatastorePackages(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
61
+ parse: parseLondonDatastorePackages,
62
+ loadFixture: () => parseLondonDatastorePackages(readFixtureJson('london-datastore-2026-10-05.json')),
63
+ };
64
+ //# sourceMappingURL=londonDatastore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"londonDatastore.js","sourceRoot":"","sources":["../src/londonDatastore.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;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,sDAAsD,CAAC;AAazD,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,MAAM,GAAG,oCAAoC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,QAAkC;IAElC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAmD,EAAE;IAErD,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACpE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,4BAA4B,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAA4C;IAC7E,EAAE,EAAE,0BAA0B;IAC9B,IAAI,EAAE,oCAAoC;IAC1C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,2EAA2E;IACxF,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,4BAA4B,CAC1B,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACzE;IACH,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,GAAG,EAAE,CAChB,4BAA4B,CAAC,eAAe,CAAC,kCAAkC,CAAC,CAAC;CACpF,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { UkDataAdapter } from './types.js';
2
+ /**
3
+ * The NHS Business Services Authority open data portal, served by CKAN.
4
+ * Keyless, published under the Open Government Licence v3.
5
+ */
6
+ export declare const NHSBSA_CKAN_SOURCE_ID = "nhsbsa-ckan";
7
+ /** The CKAN package_list call on the NHSBSA portal. */
8
+ export declare const NHSBSA_CKAN_PACKAGE_LIST_URL = "https://opendata.nhsbsa.net/api/3/action/package_list";
9
+ /** One dataset in the NHSBSA catalogue. */
10
+ export interface NhsbsaDataset {
11
+ /** CKAN package name, the identifier used in every other CKAN call. */
12
+ name: string;
13
+ }
14
+ /** Rolled-up view of the NHSBSA catalogue. */
15
+ export interface NhsbsaCkanSummary {
16
+ packageCount: number;
17
+ }
18
+ /**
19
+ * Parses an NHSBSA 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 parseNhsbsaCkanPackages(payload: unknown): NhsbsaDataset[];
25
+ /**
26
+ * Counts the NHSBSA catalogue.
27
+ *
28
+ * @param datasets - dataset names from {@link parseNhsbsaCkanPackages}
29
+ * @returns the number of datasets listed
30
+ */
31
+ export declare function summarizeNhsbsaCkanPackages(datasets: NhsbsaDataset[]): NhsbsaCkanSummary;
32
+ /**
33
+ * Lists every dataset in the NHSBSA catalogue.
34
+ *
35
+ * @param options - an optional fetch implementation
36
+ * @returns the package names the catalogue returns
37
+ */
38
+ export declare function fetchNhsbsaCkanPackages(options?: {
39
+ fetchImpl?: typeof globalThis.fetch;
40
+ }): Promise<NhsbsaDataset[]>;
41
+ /** NHS Business Services Authority open data catalogue, keyless. */
42
+ export declare const nhsbsaCkanAdapter: UkDataAdapter<NhsbsaDataset[]>;
43
+ //# sourceMappingURL=nhsbsaCkan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nhsbsaCkan.d.ts","sourceRoot":"","sources":["../src/nhsbsaCkan.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,gBAAgB,CAAC;AAEnD,uDAAuD;AACvD,eAAO,MAAM,4BAA4B,0DAA0D,CAAC;AAEpG,2CAA2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAMzE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAExF;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpD,OAAO,CAAC,aAAa,EAAE,CAAC,CAO1B;AAED,oEAAoE;AACpE,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,aAAa,EAAE,CAW5D,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ import { UkSourceApiError, UkSourceParseError } from './errors.js';
3
+ import { readFixtureJson } from './fixtures.js';
4
+ /**
5
+ * The NHS Business Services Authority open data portal, served by CKAN.
6
+ * Keyless, published under the Open Government Licence v3.
7
+ */
8
+ export const NHSBSA_CKAN_SOURCE_ID = 'nhsbsa-ckan';
9
+ /** The CKAN package_list call on the NHSBSA portal. */
10
+ export const NHSBSA_CKAN_PACKAGE_LIST_URL = 'https://opendata.nhsbsa.net/api/3/action/package_list';
11
+ const NHSBSA_CKAN_PACKAGE_LIST_SCHEMA = z.object({
12
+ success: z.boolean(),
13
+ result: z.array(z.string()),
14
+ });
15
+ /**
16
+ * Parses an NHSBSA package_list payload.
17
+ *
18
+ * @param payload - the raw JSON body from the CKAN package_list call
19
+ * @returns one entry per dataset in the catalogue
20
+ */
21
+ export function parseNhsbsaCkanPackages(payload) {
22
+ const parsed = NHSBSA_CKAN_PACKAGE_LIST_SCHEMA.safeParse(payload);
23
+ if (!parsed.success) {
24
+ throw new UkSourceParseError('nhsbsa-ckan', parsed.error.message);
25
+ }
26
+ return parsed.data.result.map((name) => ({ name }));
27
+ }
28
+ /**
29
+ * Counts the NHSBSA catalogue.
30
+ *
31
+ * @param datasets - dataset names from {@link parseNhsbsaCkanPackages}
32
+ * @returns the number of datasets listed
33
+ */
34
+ export function summarizeNhsbsaCkanPackages(datasets) {
35
+ return { packageCount: datasets.length };
36
+ }
37
+ /**
38
+ * Lists every dataset in the NHSBSA catalogue.
39
+ *
40
+ * @param options - an optional fetch implementation
41
+ * @returns the package names the catalogue returns
42
+ */
43
+ export async function fetchNhsbsaCkanPackages(options = {}) {
44
+ const { fetchImpl = globalThis.fetch } = options;
45
+ const response = await fetchImpl(NHSBSA_CKAN_PACKAGE_LIST_URL);
46
+ if (!response.ok) {
47
+ throw new UkSourceApiError('nhsbsa-ckan', `HTTP ${response.status} listing packages`);
48
+ }
49
+ return parseNhsbsaCkanPackages(await response.json());
50
+ }
51
+ /** NHS Business Services Authority open data catalogue, keyless. */
52
+ export const nhsbsaCkanAdapter = {
53
+ id: NHSBSA_CKAN_SOURCE_ID,
54
+ name: 'NHS Business Services Authority open data catalogue',
55
+ auth: 'none',
56
+ description: 'Every dataset the NHS Business Services Authority publishes on its CKAN portal.',
57
+ fetchLive: (options) => fetchNhsbsaCkanPackages(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
58
+ parse: parseNhsbsaCkanPackages,
59
+ loadFixture: () => parseNhsbsaCkanPackages(readFixtureJson('nhsbsa-ckan-2026-10-05.json')),
60
+ };
61
+ //# sourceMappingURL=nhsbsaCkan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nhsbsaCkan.js","sourceRoot":"","sources":["../src/nhsbsaCkan.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;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAEnD,uDAAuD;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,uDAAuD,CAAC;AAapG,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAyB;IACnE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAmD,EAAE;IAErD,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,gBAAgB,CAAC,aAAa,EAAE,QAAQ,QAAQ,CAAC,MAAM,mBAAmB,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,uBAAuB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAC/D,EAAE,EAAE,qBAAqB;IACzB,IAAI,EAAE,qDAAqD;IAC3D,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,iFAAiF;IAC9F,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,uBAAuB,CACrB,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACzE;IACH,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;CAC3F,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type { UkDataAdapter } from './types.js';
2
+ /**
3
+ * Nomis, the Office for National Statistics' online labour-market database,
4
+ * run with the University of Durham. Keyless, published under the Open
5
+ * Government Licence v3.
6
+ */
7
+ export declare const NOMIS_SOURCE_ID = "nomis";
8
+ /**
9
+ * The SDMX dataset definitions catalogue. It carries one definition per
10
+ * dataset, with the dimensions and annotations behind it.
11
+ */
12
+ export declare const NOMIS_DATASET_DEFINITIONS_URL = "https://www.nomisweb.co.uk/api/v01/dataset/def.sdmx.json";
13
+ /** Annotation titles this adapter reads out of each dataset definition. */
14
+ export declare const NOMIS_STATUS_ANNOTATION = "Status";
15
+ export declare const NOMIS_KEYWORDS_ANNOTATION = "Keywords";
16
+ export declare const NOMIS_UNITS_ANNOTATION = "Units";
17
+ export declare const NOMIS_LAST_UPDATED_ANNOTATION = "LastUpdated";
18
+ /** One dataset definition from the Nomis SDMX catalogue. */
19
+ export interface NomisDatasetDefinition {
20
+ /** Nomis dataset id, such as NM_1_1. */
21
+ id: string;
22
+ name: string;
23
+ agencyId: string;
24
+ version: number;
25
+ /** The API's own URI slug for the dataset. */
26
+ uri: string;
27
+ /** Maintenance status, such as "Current (being actively updated)". */
28
+ status: string;
29
+ /** Comma-separated keywords the catalogue tags the dataset with. */
30
+ keywords: string;
31
+ /** The units the dataset counts in, or "" when the catalogue leaves them out. */
32
+ units: string;
33
+ /** The catalogue's own last-updated stamp, or "" when it leaves it out. */
34
+ lastUpdated: string;
35
+ }
36
+ /** Dataset definitions counted by their catalogue status. */
37
+ export interface NomisStatusCount {
38
+ status: string;
39
+ datasetCount: number;
40
+ }
41
+ /** Rolled-up view of the Nomis dataset catalogue. */
42
+ export interface NomisCatalogSummary {
43
+ datasetCount: number;
44
+ statusCounts: NomisStatusCount[];
45
+ }
46
+ /**
47
+ * Parses a Nomis SDMX dataset definitions payload.
48
+ *
49
+ * @param payload - the raw JSON body from the definitions catalogue
50
+ * @returns one definition per dataset the catalogue lists
51
+ */
52
+ export declare function parseNomisDatasetDefinitions(payload: unknown): NomisDatasetDefinition[];
53
+ /**
54
+ * Counts the catalogue by dataset status.
55
+ *
56
+ * @param definitions - definitions from {@link parseNomisDatasetDefinitions}
57
+ * @returns the dataset count and a per-status breakdown, most datasets first
58
+ */
59
+ export declare function summarizeNomisDatasetDefinitions(definitions: NomisDatasetDefinition[]): NomisCatalogSummary;
60
+ /**
61
+ * Lists every dataset definition in the Nomis SDMX catalogue.
62
+ *
63
+ * @param options - an optional fetch implementation
64
+ * @returns the definitions the catalogue returns
65
+ */
66
+ export declare function fetchNomisDatasetDefinitions(options?: {
67
+ fetchImpl?: typeof globalThis.fetch;
68
+ }): Promise<NomisDatasetDefinition[]>;
69
+ /** Nomis SDMX dataset definitions, keyless. */
70
+ export declare const nomisAdapter: UkDataAdapter<NomisDatasetDefinition[]>;
71
+ //# sourceMappingURL=nomis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nomis.d.ts","sourceRoot":"","sources":["../src/nomis.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,6BAA6B,6DACkB,CAAC;AAE7D,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAChD,eAAO,MAAM,yBAAyB,aAAa,CAAC;AACpD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAC9C,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAE3D,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAiDD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,sBAAsB,EAAE,CAoBvF;AAED;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,sBAAsB,EAAE,GACpC,mBAAmB,CAYrB;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAAO,GACpD,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAOnC;AAED,+CAA+C;AAC/C,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,sBAAsB,EAAE,CAWhE,CAAC"}
package/dist/nomis.js ADDED
@@ -0,0 +1,126 @@
1
+ import { z } from 'zod';
2
+ import { UkSourceApiError, UkSourceParseError } from './errors.js';
3
+ import { readFixtureJson } from './fixtures.js';
4
+ /**
5
+ * Nomis, the Office for National Statistics' online labour-market database,
6
+ * run with the University of Durham. Keyless, published under the Open
7
+ * Government Licence v3.
8
+ */
9
+ export const NOMIS_SOURCE_ID = 'nomis';
10
+ /**
11
+ * The SDMX dataset definitions catalogue. It carries one definition per
12
+ * dataset, with the dimensions and annotations behind it.
13
+ */
14
+ export const NOMIS_DATASET_DEFINITIONS_URL = 'https://www.nomisweb.co.uk/api/v01/dataset/def.sdmx.json';
15
+ /** Annotation titles this adapter reads out of each dataset definition. */
16
+ export const NOMIS_STATUS_ANNOTATION = 'Status';
17
+ export const NOMIS_KEYWORDS_ANNOTATION = 'Keywords';
18
+ export const NOMIS_UNITS_ANNOTATION = 'Units';
19
+ export const NOMIS_LAST_UPDATED_ANNOTATION = 'LastUpdated';
20
+ // The catalogue types most annotation values as text, but some count values
21
+ // are numbers and a few MetadataText entries are null. Both appear in the
22
+ // live catalogue, so the schema accepts all three.
23
+ const NOMIS_ANNOTATION_SCHEMA = z.object({
24
+ annotationtitle: z.string(),
25
+ annotationtext: z.union([z.string(), z.number(), z.boolean()]).nullable(),
26
+ });
27
+ const NOMIS_KEYFAMILY_SCHEMA = z.object({
28
+ agencyid: z.string(),
29
+ id: z.string(),
30
+ uri: z.string(),
31
+ version: z.number(),
32
+ annotations: z
33
+ .object({ annotation: z.array(NOMIS_ANNOTATION_SCHEMA) })
34
+ .nullable()
35
+ .optional(),
36
+ name: z.object({ value: z.string() }).nullable().optional(),
37
+ description: z.object({ value: z.string() }).nullable().optional(),
38
+ });
39
+ const NOMIS_DATASET_DEFINITIONS_SCHEMA = z.object({
40
+ structure: z.object({
41
+ keyfamilies: z
42
+ .object({ keyfamily: z.array(NOMIS_KEYFAMILY_SCHEMA) })
43
+ .nullable()
44
+ .optional(),
45
+ }),
46
+ });
47
+ /** Turns an annotation value the catalogue types loosely into a string. */
48
+ function readAnnotationText(value) {
49
+ if (value === null) {
50
+ return '';
51
+ }
52
+ return typeof value === 'string' ? value : String(value);
53
+ }
54
+ /** Reads one named annotation off a dataset definition, or "" when absent. */
55
+ function readAnnotation(annotations, title) {
56
+ const match = annotations.find((annotation) => annotation.annotationtitle === title);
57
+ return match === undefined ? '' : readAnnotationText(match.annotationtext);
58
+ }
59
+ /**
60
+ * Parses a Nomis SDMX dataset definitions payload.
61
+ *
62
+ * @param payload - the raw JSON body from the definitions catalogue
63
+ * @returns one definition per dataset the catalogue lists
64
+ */
65
+ export function parseNomisDatasetDefinitions(payload) {
66
+ const parsed = NOMIS_DATASET_DEFINITIONS_SCHEMA.safeParse(payload);
67
+ if (!parsed.success) {
68
+ throw new UkSourceParseError('nomis', parsed.error.message);
69
+ }
70
+ const keyfamilies = parsed.data.structure.keyfamilies?.keyfamily ?? [];
71
+ return keyfamilies.map((keyfamily) => {
72
+ const annotations = keyfamily.annotations?.annotation ?? [];
73
+ return {
74
+ id: keyfamily.id,
75
+ name: keyfamily.name?.value ?? '',
76
+ agencyId: keyfamily.agencyid,
77
+ version: keyfamily.version,
78
+ uri: keyfamily.uri,
79
+ status: readAnnotation(annotations, NOMIS_STATUS_ANNOTATION),
80
+ keywords: readAnnotation(annotations, NOMIS_KEYWORDS_ANNOTATION),
81
+ units: readAnnotation(annotations, NOMIS_UNITS_ANNOTATION),
82
+ lastUpdated: readAnnotation(annotations, NOMIS_LAST_UPDATED_ANNOTATION),
83
+ };
84
+ });
85
+ }
86
+ /**
87
+ * Counts the catalogue by dataset status.
88
+ *
89
+ * @param definitions - definitions from {@link parseNomisDatasetDefinitions}
90
+ * @returns the dataset count and a per-status breakdown, most datasets first
91
+ */
92
+ export function summarizeNomisDatasetDefinitions(definitions) {
93
+ const countByStatus = new Map();
94
+ for (const definition of definitions) {
95
+ countByStatus.set(definition.status, (countByStatus.get(definition.status) ?? 0) + 1);
96
+ }
97
+ const statusCounts = [...countByStatus.entries()]
98
+ .map(([status, datasetCount]) => ({ status, datasetCount }))
99
+ .sort((left, right) => right.datasetCount - left.datasetCount || left.status.localeCompare(right.status));
100
+ return { datasetCount: definitions.length, statusCounts };
101
+ }
102
+ /**
103
+ * Lists every dataset definition in the Nomis SDMX catalogue.
104
+ *
105
+ * @param options - an optional fetch implementation
106
+ * @returns the definitions the catalogue returns
107
+ */
108
+ export async function fetchNomisDatasetDefinitions(options = {}) {
109
+ const { fetchImpl = globalThis.fetch } = options;
110
+ const response = await fetchImpl(NOMIS_DATASET_DEFINITIONS_URL);
111
+ if (!response.ok) {
112
+ throw new UkSourceApiError('nomis', `HTTP ${response.status} listing dataset definitions`);
113
+ }
114
+ return parseNomisDatasetDefinitions(await response.json());
115
+ }
116
+ /** Nomis SDMX dataset definitions, keyless. */
117
+ export const nomisAdapter = {
118
+ id: NOMIS_SOURCE_ID,
119
+ name: 'Nomis SDMX dataset catalogue',
120
+ auth: 'none',
121
+ description: 'Every dataset definition the ONS Nomis catalogue publishes, with its status.',
122
+ fetchLive: (options) => fetchNomisDatasetDefinitions(options?.fetchImpl === undefined ? {} : { fetchImpl: options.fetchImpl }),
123
+ parse: parseNomisDatasetDefinitions,
124
+ loadFixture: () => parseNomisDatasetDefinitions(readFixtureJson('nomis-2026-10-05.json')),
125
+ };
126
+ //# sourceMappingURL=nomis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nomis.js","sourceRoot":"","sources":["../src/nomis.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;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,0DAA0D,CAAC;AAE7D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAC;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAiC3D,4EAA4E;AAC5E,0EAA0E;AAC1E,mDAAmD;AACnD,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1E,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,WAAW,EAAE,CAAC;SACX,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC;SACxD,QAAQ,EAAE;SACV,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,CAAC;aACX,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;aACtD,QAAQ,EAAE;aACV,QAAQ,EAAE;KACd,CAAC;CACH,CAAC,CAAC;AAEH,2EAA2E;AAC3E,SAAS,kBAAkB,CAAC,KAAuC;IACjE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,8EAA8E;AAC9E,SAAS,cAAc,CACrB,WAA4F,EAC5F,KAAa;IAEb,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,KAAK,KAAK,CAAC,CAAC;IACrF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,MAAM,MAAM,GAAG,gCAAgC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC;IACvE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACnC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;QAC5D,OAAO;YACL,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACjC,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,uBAAuB,CAAC;YAC5D,QAAQ,EAAE,cAAc,CAAC,WAAW,EAAE,yBAAyB,CAAC;YAChE,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,sBAAsB,CAAC;YAC1D,WAAW,EAAE,cAAc,CAAC,WAAW,EAAE,6BAA6B,CAAC;SACxE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,WAAqC;IAErC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,YAAY,GAAuB,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;SAClE,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,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAmD,EAAE;IAErD,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,8BAA8B,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,4BAA4B,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAA4C;IACnE,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,8EAA8E;IAC3F,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,4BAA4B,CAC1B,OAAO,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACzE;IACH,KAAK,EAAE,4BAA4B;IACnC,WAAW,EAAE,GAAG,EAAE,CAAC,4BAA4B,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;CAC1F,CAAC"}