@cyanheads/eurostat-mcp-server 0.6.5 → 0.8.0
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/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +85 -85
- package/changelog/0.7.x/0.7.0.md +33 -0
- package/changelog/0.8.x/0.8.0.md +30 -0
- package/dist/config/server-config.d.ts +2 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +13 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js +4 -2
- package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +4 -4
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +4 -4
- package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +16 -23
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +156 -65
- package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts +3 -4
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +8 -9
- package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +21 -7
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +115 -19
- package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +10 -3
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +156 -24
- package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +19 -6
- package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
- package/dist/mcp-server/tools/narrowing-advice.d.ts +22 -0
- package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -0
- package/dist/mcp-server/tools/narrowing-advice.js +44 -0
- package/dist/mcp-server/tools/narrowing-advice.js.map +1 -0
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +12 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js +66 -12
- package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
- package/dist/services/eurostat-bulk/types.d.ts +5 -0
- package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +47 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +188 -13
- package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
- package/dist/services/eurostat-codelists.d.ts +20 -0
- package/dist/services/eurostat-codelists.d.ts.map +1 -1
- package/dist/services/eurostat-codelists.js +25 -0
- package/dist/services/eurostat-codelists.js.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.d.ts +78 -9
- package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
- package/dist/services/eurostat-data/eurostat-data-service.js +306 -51
- package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
- package/dist/services/eurostat-data/sdmx-metadata.d.ts +26 -0
- package/dist/services/eurostat-data/sdmx-metadata.d.ts.map +1 -1
- package/dist/services/eurostat-data/sdmx-metadata.js +38 -1
- package/dist/services/eurostat-data/sdmx-metadata.js.map +1 -1
- package/dist/services/eurostat-data/types.d.ts +38 -2
- package/dist/services/eurostat-data/types.d.ts.map +1 -1
- package/dist/services/eurostat-data/types.js.map +1 -1
- package/dist/services/eurostat-hosts.d.ts +17 -0
- package/dist/services/eurostat-hosts.d.ts.map +1 -0
- package/dist/services/eurostat-hosts.js +23 -0
- package/dist/services/eurostat-hosts.js.map +1 -0
- package/dist/services/eurostat-periods.d.ts +68 -0
- package/dist/services/eurostat-periods.d.ts.map +1 -0
- package/dist/services/eurostat-periods.js +204 -0
- package/dist/services/eurostat-periods.js.map +1 -0
- package/dist/services/shared-load.d.ts +16 -0
- package/dist/services/shared-load.d.ts.map +1 -0
- package/dist/services/shared-load.js +27 -0
- package/dist/services/shared-load.js.map +1 -0
- package/package.json +2 -2
- package/server.json +31 -3
|
@@ -5,11 +5,107 @@
|
|
|
5
5
|
import { McpError, notFound, serviceUnavailable, validationError, } from '@cyanheads/mcp-ts-core/errors';
|
|
6
6
|
import { fetchWithTimeout, withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
7
7
|
import { getServerConfig } from '../../config/server-config.js';
|
|
8
|
-
import { CONF_STATUS_COLUMN, CONF_STATUS_LABEL_COLUMN, CONF_STATUS_LABELS, OBS_FLAG_COLUMN, OBS_FLAG_LABEL_COLUMN, OBS_FLAG_LABELS, OBS_VALUE_COLUMN, } from '../eurostat-codelists.js';
|
|
9
|
-
import {
|
|
8
|
+
import { CONF_STATUS_COLUMN, CONF_STATUS_LABEL_COLUMN, CONF_STATUS_LABELS, decodeTextValue, OBS_FLAG_COLUMN, OBS_FLAG_LABEL_COLUMN, OBS_FLAG_LABELS, OBS_VALUE_COLUMN, OBS_VALUE_TEXT_COLUMN, } from '../eurostat-codelists.js';
|
|
9
|
+
import { dataHostFor, isComextDataset } from '../eurostat-hosts.js';
|
|
10
|
+
import { awaitShared } from '../shared-load.js';
|
|
11
|
+
import { parseSdmxDatasetMetadata, parseSdmxDimensionOrder, } from './sdmx-metadata.js';
|
|
10
12
|
import { OBS_CAP, } from './types.js';
|
|
11
13
|
/** Separator between the observation flag and the confidentiality status inside a JSON-stat status. */
|
|
12
14
|
const CONF_SEPARATOR = '|';
|
|
15
|
+
/** A Statistics API error label that names one of the two period parameters. */
|
|
16
|
+
const PERIOD_PARAM_LABEL = /'(since|until)TimePeriod'/;
|
|
17
|
+
/**
|
|
18
|
+
* How long parsed dataset metadata is reused. Eurostat publishes data at 11:00 and
|
|
19
|
+
* 23:00 Brussels time, so an hour bounds how stale a constraint's period list or
|
|
20
|
+
* `lastUpdated` can get while sparing repeat calls the structure download — 23 MB
|
|
21
|
+
* for `DS-045409`.
|
|
22
|
+
*/
|
|
23
|
+
const METADATA_CACHE_TTL_MS = 60 * 60 * 1000;
|
|
24
|
+
/**
|
|
25
|
+
* Estimated bytes of parsed metadata held at once, least recently used evicted first.
|
|
26
|
+
* The bound is on size because entries differ by three orders of magnitude: a
|
|
27
|
+
* main-host dataset holds a few KB, `DS-045409`'s 37,069 labelled product codes
|
|
28
|
+
* about 13.5 MB (measured retained heap; {@link estimateMetadataBytes} puts it at
|
|
29
|
+
* 13.8 MB). A dataset estimated past the whole budget is answered but not kept.
|
|
30
|
+
*/
|
|
31
|
+
const METADATA_CACHE_MAX_BYTES = 64 * 1024 * 1024;
|
|
32
|
+
/**
|
|
33
|
+
* Upper-end estimate of one entry's retained heap: two bytes per character of every
|
|
34
|
+
* code and label (a label outside Latin-1 is stored at two bytes a character), plus
|
|
35
|
+
* a fixed cost per value and per entry for the objects that hold them.
|
|
36
|
+
*/
|
|
37
|
+
function estimateMetadataBytes({ valuesByDimension }) {
|
|
38
|
+
let bytes = 4_096;
|
|
39
|
+
for (const values of Object.values(valuesByDimension)) {
|
|
40
|
+
for (const { code, label } of values)
|
|
41
|
+
bytes += 2 * (code.length + label.length) + 100;
|
|
42
|
+
}
|
|
43
|
+
return bytes;
|
|
44
|
+
}
|
|
45
|
+
/** Freeze a parsed structure all the way down, so no caller can edit a cached entry. */
|
|
46
|
+
function deepFreeze(value) {
|
|
47
|
+
if (value && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
48
|
+
Object.freeze(value);
|
|
49
|
+
for (const child of Object.values(value))
|
|
50
|
+
deepFreeze(child);
|
|
51
|
+
}
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Filter values the reply matched to nothing, compared case-insensitively
|
|
56
|
+
* against each filtered dimension's `category.index`.
|
|
57
|
+
*
|
|
58
|
+
* Eurostat drops an unmatched value from the index rather than failing, and a
|
|
59
|
+
* dimension keeps `size` ≥ 1 as long as one value beside it matched — so `size`
|
|
60
|
+
* alone misses `geo=DE,XX`. It also matches codes in any case (`geo=de` comes
|
|
61
|
+
* back as `DE`), which the comparison mirrors — for the dimension key too, since
|
|
62
|
+
* `GEO=DE` is answered under `geo`. Values are reported under the key and in the
|
|
63
|
+
* spelling sent, each once. A filtered dimension the reply does not describe at all
|
|
64
|
+
* is skipped: there is nothing to compare against, and guessing would invent a
|
|
65
|
+
* mismatch.
|
|
66
|
+
*/
|
|
67
|
+
export function findUnmatchedValues(sent, data) {
|
|
68
|
+
const unmatched = {};
|
|
69
|
+
for (const [key, values] of Object.entries(sent)) {
|
|
70
|
+
const dim = data.id?.find((id) => id.toLowerCase() === key.toLowerCase());
|
|
71
|
+
const index = dim === undefined ? undefined : data.dimension?.[dim]?.category?.index;
|
|
72
|
+
if (!index)
|
|
73
|
+
continue;
|
|
74
|
+
const known = new Set(Object.keys(index).map((code) => code.toLowerCase()));
|
|
75
|
+
const missing = [...new Set(values)].filter((v) => !known.has(v.toLowerCase()));
|
|
76
|
+
if (missing.length > 0)
|
|
77
|
+
unmatched[key] = missing;
|
|
78
|
+
}
|
|
79
|
+
return Object.keys(unmatched).length > 0 ? unmatched : undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Read an empty match's envelope for why it is empty, without another request.
|
|
83
|
+
*
|
|
84
|
+
* Three signals, which can co-occur: filter values absent from their dimension's
|
|
85
|
+
* index; a `time` dimension of size 0, meaning the requested range selected no
|
|
86
|
+
* period of the dataset; and, when every dimension matched at least one value,
|
|
87
|
+
* the periods the reply selected — none of which carries a value for the slice.
|
|
88
|
+
*/
|
|
89
|
+
function diagnoseEmptyMatch(data, sent, annotation) {
|
|
90
|
+
const unmatchedValues = findUnmatchedValues(sent, data);
|
|
91
|
+
const dims = data.id ?? [];
|
|
92
|
+
const sizes = data.size ?? [];
|
|
93
|
+
const timeDim = dims.indexOf('time');
|
|
94
|
+
const diagnosis = { ...(unmatchedValues && { unmatchedValues }) };
|
|
95
|
+
if (timeDim < 0)
|
|
96
|
+
return diagnosis;
|
|
97
|
+
if (sizes[timeDim] === 0) {
|
|
98
|
+
const oldest = annotation('OBS_PERIOD_OVERALL_OLDEST');
|
|
99
|
+
const latest = annotation('OBS_PERIOD_OVERALL_LATEST');
|
|
100
|
+
diagnosis.outsideCoverage = { ...(oldest && { oldest }), ...(latest && { latest }) };
|
|
101
|
+
}
|
|
102
|
+
else if (sizes.length === dims.length && sizes.every((size) => size >= 1)) {
|
|
103
|
+
diagnosis.matchedPeriods = Object.entries(data.dimension?.time?.category?.index ?? {})
|
|
104
|
+
.sort(([, a], [, b]) => a - b)
|
|
105
|
+
.map(([code]) => code);
|
|
106
|
+
}
|
|
107
|
+
return diagnosis;
|
|
108
|
+
}
|
|
13
109
|
/**
|
|
14
110
|
* Split a JSON-stat status into its observation flag and its confidentiality status.
|
|
15
111
|
*
|
|
@@ -48,14 +144,31 @@ export function splitStatus(code, labels) {
|
|
|
48
144
|
}),
|
|
49
145
|
};
|
|
50
146
|
}
|
|
147
|
+
/** Run an SDMX parse, reporting a body it cannot read as a non-retryable upstream fault. */
|
|
148
|
+
function parseSdmx(datasetCode, parse) {
|
|
149
|
+
try {
|
|
150
|
+
return parse();
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
throw serviceUnavailable(`Eurostat returned malformed SDMX metadata for dataset "${datasetCode}": ${error instanceof Error ? error.message : String(error)}`, { reason: 'upstream_fault', datasetCode, retryable: false });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
51
156
|
export class EurostatDataService {
|
|
157
|
+
/**
|
|
158
|
+
* Parsed metadata per dataset, keyed by host and lowercased code — Eurostat matches
|
|
159
|
+
* codes in any case, so `ds-045409` and `DS-045409` share one entry. The value is the
|
|
160
|
+
* in-flight or settled parse, so concurrent first calls share one download. Entries
|
|
161
|
+
* are deep-frozen, expire after {@link METADATA_CACHE_TTL_MS}, are bounded in total
|
|
162
|
+
* by {@link METADATA_CACHE_MAX_BYTES}, and a failed load is dropped rather than
|
|
163
|
+
* cached. Map order is recency order: a hit is re-inserted.
|
|
164
|
+
*/
|
|
165
|
+
metadataCache = new Map();
|
|
52
166
|
// config and storage accepted to match the standard service init pattern;
|
|
53
167
|
// this service uses only the Eurostat public API and per-request config.
|
|
54
168
|
// biome-ignore lint/complexity/noUselessConstructor: standard init pattern
|
|
55
169
|
constructor(_config, _storage) { }
|
|
56
170
|
buildUrl(datasetCode, params) {
|
|
57
|
-
const
|
|
58
|
-
const url = new URL(`${baseUrl}/statistics/1.0/data/${encodeURIComponent(datasetCode)}`);
|
|
171
|
+
const url = new URL(`${dataHostFor(datasetCode)}/statistics/1.0/data/${encodeURIComponent(datasetCode)}`);
|
|
59
172
|
url.searchParams.set('format', 'JSON');
|
|
60
173
|
for (const [key, value] of Object.entries(params)) {
|
|
61
174
|
if (Array.isArray(value)) {
|
|
@@ -68,21 +181,32 @@ export class EurostatDataService {
|
|
|
68
181
|
}
|
|
69
182
|
return url;
|
|
70
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* One dataset-scoped SDMX 2.1 structure URL — every structure read goes through
|
|
186
|
+
* here, on the host {@link dataHostFor} picks for the code.
|
|
187
|
+
*
|
|
188
|
+
* The structure definition is requested unversioned, which Eurostat answers with
|
|
189
|
+
* the current one. Its version moves with the dataset (`earn_ses_annual`'s is
|
|
190
|
+
* 22.0), and a pinned `/1.0` returns the dataset's first structure instead.
|
|
191
|
+
*/
|
|
71
192
|
buildSdmxUrl(resource, datasetCode) {
|
|
72
|
-
const
|
|
73
|
-
const url = new URL(`${
|
|
193
|
+
const version = resource === 'datastructure' ? '' : '/1.0';
|
|
194
|
+
const url = new URL(`${dataHostFor(datasetCode)}/sdmx/2.1/${resource}/ESTAT/${encodeURIComponent(datasetCode)}${version}`);
|
|
74
195
|
if (resource === 'dataflow') {
|
|
75
196
|
url.searchParams.set('references', 'descendants');
|
|
76
197
|
url.searchParams.set('detail', 'referencepartial');
|
|
77
198
|
}
|
|
78
199
|
return url;
|
|
79
200
|
}
|
|
80
|
-
|
|
81
|
-
|
|
201
|
+
/**
|
|
202
|
+
* `signal` cancels the request. It is the caller's own for a read one caller owns,
|
|
203
|
+
* and undefined for the shared metadata load, which no single caller may cancel.
|
|
204
|
+
*/
|
|
205
|
+
fetchSdmxXml(url, datasetCode, ctx, signal, timeoutMs = getServerConfig().requestTimeoutMs) {
|
|
82
206
|
return withRetry(async () => {
|
|
83
207
|
try {
|
|
84
|
-
const response = await fetchWithTimeout(url.toString(),
|
|
85
|
-
signal
|
|
208
|
+
const response = await fetchWithTimeout(url.toString(), timeoutMs, ctx, {
|
|
209
|
+
...(signal && { signal }),
|
|
86
210
|
expectedStatuses: [404],
|
|
87
211
|
});
|
|
88
212
|
return await response.text();
|
|
@@ -94,19 +218,89 @@ export class EurostatDataService {
|
|
|
94
218
|
}
|
|
95
219
|
throw error;
|
|
96
220
|
}
|
|
97
|
-
}, {
|
|
221
|
+
}, {
|
|
222
|
+
operation: 'fetchSdmxMetadata',
|
|
223
|
+
context: ctx,
|
|
224
|
+
baseDelayMs: 1000,
|
|
225
|
+
...(signal && { signal }),
|
|
226
|
+
});
|
|
98
227
|
}
|
|
99
|
-
|
|
228
|
+
/**
|
|
229
|
+
* The dataset's parsed metadata, from {@link metadataCache} when a live entry holds it.
|
|
230
|
+
*
|
|
231
|
+
* The load is shared by every caller of the dataset, so it runs without a caller's
|
|
232
|
+
* signal and is bounded by its timeouts alone: a caller that cancels stops waiting
|
|
233
|
+
* without failing the others or the entry.
|
|
234
|
+
*/
|
|
235
|
+
getSdmxMetadata(datasetCode, ctx) {
|
|
236
|
+
return awaitShared(ctx.signal, () => {
|
|
237
|
+
const key = `${dataHostFor(datasetCode)} ${datasetCode.toLowerCase()}`;
|
|
238
|
+
const now = Date.now();
|
|
239
|
+
const hit = this.metadataCache.get(key);
|
|
240
|
+
this.metadataCache.delete(key);
|
|
241
|
+
if (hit && hit.expiresAt > now) {
|
|
242
|
+
this.metadataCache.set(key, hit);
|
|
243
|
+
return hit.metadata;
|
|
244
|
+
}
|
|
245
|
+
const entry = {
|
|
246
|
+
expiresAt: now + METADATA_CACHE_TTL_MS,
|
|
247
|
+
metadata: this.loadSdmxMetadata(datasetCode, ctx).then(deepFreeze),
|
|
248
|
+
};
|
|
249
|
+
this.metadataCache.set(key, entry);
|
|
250
|
+
entry.metadata.then((metadata) => {
|
|
251
|
+
entry.bytes = estimateMetadataBytes(metadata);
|
|
252
|
+
if (entry.bytes > METADATA_CACHE_MAX_BYTES) {
|
|
253
|
+
if (this.metadataCache.get(key) === entry)
|
|
254
|
+
this.metadataCache.delete(key);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
this.evictToBudget();
|
|
258
|
+
}
|
|
259
|
+
}, () => {
|
|
260
|
+
if (this.metadataCache.get(key) === entry)
|
|
261
|
+
this.metadataCache.delete(key);
|
|
262
|
+
});
|
|
263
|
+
return entry.metadata;
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Drop settled entries, least recently used first, until the estimated total fits
|
|
268
|
+
* {@link METADATA_CACHE_MAX_BYTES}. A load still in flight has no size yet and is
|
|
269
|
+
* kept, so concurrent callers of it still share one download.
|
|
270
|
+
*/
|
|
271
|
+
evictToBudget() {
|
|
272
|
+
let total = 0;
|
|
273
|
+
for (const { bytes } of this.metadataCache.values())
|
|
274
|
+
total += bytes ?? 0;
|
|
275
|
+
for (const [key, { bytes }] of this.metadataCache) {
|
|
276
|
+
if (total <= METADATA_CACHE_MAX_BYTES)
|
|
277
|
+
break;
|
|
278
|
+
if (bytes === undefined)
|
|
279
|
+
continue;
|
|
280
|
+
this.metadataCache.delete(key);
|
|
281
|
+
total -= bytes;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Download and parse one dataset's dataflow structure and content constraint.
|
|
286
|
+
*
|
|
287
|
+
* The dataflow carries a label for every code the dataset uses, so it is the one
|
|
288
|
+
* structure read that scales with the dataset — 23 MB, uncompressed, for the CN8
|
|
289
|
+
* collection — and it alone gets `EUROSTAT_METADATA_TIMEOUT_MS`.
|
|
290
|
+
*/
|
|
291
|
+
async loadSdmxMetadata(datasetCode, ctx) {
|
|
292
|
+
const { metadataTimeoutMs } = getServerConfig();
|
|
100
293
|
const [dataflowXml, constraintXml] = await Promise.all([
|
|
101
|
-
this.fetchSdmxXml(this.buildSdmxUrl('dataflow', datasetCode), datasetCode, ctx),
|
|
102
|
-
this.fetchSdmxXml(this.buildSdmxUrl('contentconstraint', datasetCode), datasetCode, ctx),
|
|
294
|
+
this.fetchSdmxXml(this.buildSdmxUrl('dataflow', datasetCode), datasetCode, ctx, undefined, metadataTimeoutMs),
|
|
295
|
+
this.fetchSdmxXml(this.buildSdmxUrl('contentconstraint', datasetCode), datasetCode, ctx, undefined),
|
|
103
296
|
]);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
297
|
+
/**
|
|
298
|
+
* The parse's strings are slices of the response bodies, and a slice keeps its
|
|
299
|
+
* whole source string alive: kept as parsed, a `DS-045409` entry pins the 23 MB
|
|
300
|
+
* dataflow body and retains 52 MB instead of 13.5 MB. Cloning copies every string
|
|
301
|
+
* out, so the bodies are freed once the load ends.
|
|
302
|
+
*/
|
|
303
|
+
return parseSdmx(datasetCode, () => structuredClone(parseSdmxDatasetMetadata(dataflowXml, constraintXml, datasetCode)));
|
|
110
304
|
}
|
|
111
305
|
fetchJson(url, ctx) {
|
|
112
306
|
const { requestTimeoutMs } = getServerConfig();
|
|
@@ -115,10 +309,11 @@ export class EurostatDataService {
|
|
|
115
309
|
try {
|
|
116
310
|
response = await fetchWithTimeout(url.toString(), requestTimeoutMs, ctx, {
|
|
117
311
|
signal: ctx.signal,
|
|
118
|
-
// 400 (invalid dimension / conflicting params)
|
|
119
|
-
// modeled outcomes reclassified below into the
|
|
120
|
-
// service failures — log them at debug. The
|
|
121
|
-
|
|
312
|
+
// 400 (invalid dimension / conflicting params), 404 (unknown dataset) and 413
|
|
313
|
+
// (extraction too large) are modeled outcomes reclassified below into the
|
|
314
|
+
// declared error contract, not service failures — log them at debug. The
|
|
315
|
+
// thrown McpError is unchanged.
|
|
316
|
+
expectedStatuses: [400, 404, 413],
|
|
122
317
|
});
|
|
123
318
|
}
|
|
124
319
|
catch (err) {
|
|
@@ -163,13 +358,20 @@ export class EurostatDataService {
|
|
|
163
358
|
}
|
|
164
359
|
checkResponseErrors(data, url) {
|
|
165
360
|
const firstError = Array.isArray(data.error) ? data.error[0] : undefined;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
361
|
+
/**
|
|
362
|
+
* Query too large to serve. Eurostat answers with a warning object on HTTP 200
|
|
363
|
+
* (the asynchronous response) or an error-array item on HTTP 413 — its label
|
|
364
|
+
* `EXTRACTION_TOO_BIG` with the estimated row count, or `ASYNCHRONOUS_RESPONSE`.
|
|
365
|
+
* Both are classified before withRetry sees them and are non-retryable: the same
|
|
366
|
+
* query re-run just re-triggers the refusal, so the caller has to narrow it. The
|
|
367
|
+
* dimensions to narrow by are the dataset's own, which the tool names; this
|
|
368
|
+
* message cannot, since a refusal carries no dimension list.
|
|
369
|
+
*/
|
|
370
|
+
if (data.warning?.status === 413) {
|
|
371
|
+
throw serviceUnavailable('Eurostat returned an asynchronous response — the query matched too many observations. Add dimension filters or a narrower period range to reduce the result size, then retry.', { reason: 'async_response', url, retryable: false });
|
|
372
|
+
}
|
|
373
|
+
if (firstError?.status === 413) {
|
|
374
|
+
throw serviceUnavailable(`Eurostat refused the query as too large to serve (${firstError.label}). Add dimension filters or a narrower period range to reduce the result size, then retry.`, { reason: 'async_response', url, retryable: false });
|
|
173
375
|
}
|
|
174
376
|
// Error responses
|
|
175
377
|
if (firstError) {
|
|
@@ -184,6 +386,14 @@ export class EurostatDataService {
|
|
|
184
386
|
if (err.id === 150) {
|
|
185
387
|
throw validationError(`Invalid dimension code. Eurostat error: ${err.label}. Use eurostat_get_dataset_info to see valid dimensions for this dataset.`, { reason: 'invalid_dimension', eurostatError: err });
|
|
186
388
|
}
|
|
389
|
+
// Eurostat's own refusal of a period literal: error id 140 for one it cannot parse
|
|
390
|
+
// as a time filter, or a generic 400 whose label names the period parameter.
|
|
391
|
+
if (err.id === 140 || PERIOD_PARAM_LABEL.test(err.label)) {
|
|
392
|
+
throw validationError(`Eurostat rejected the period range. Eurostat error: ${err.label}.`, {
|
|
393
|
+
reason: 'invalid_period',
|
|
394
|
+
eurostatError: err,
|
|
395
|
+
});
|
|
396
|
+
}
|
|
187
397
|
throw validationError(`Bad request. Eurostat error: ${err.label}.`, {
|
|
188
398
|
reason: 'conflicting_params',
|
|
189
399
|
eurostatError: err,
|
|
@@ -238,8 +448,9 @@ export class EurostatDataService {
|
|
|
238
448
|
if (timeSize > 0)
|
|
239
449
|
timeSeen[Math.floor(idx / timeStride) % timeSize] = 1;
|
|
240
450
|
};
|
|
451
|
+
// A text value (PRODCOM's `:C`, `KG`) carries no number, so it counts as missing.
|
|
241
452
|
for (const key in value)
|
|
242
|
-
count(key, value[key]
|
|
453
|
+
count(key, typeof value[key] !== 'number');
|
|
243
454
|
// A cell flagged in `status` but absent from `value` decodes to a null value.
|
|
244
455
|
for (const key in status) {
|
|
245
456
|
if (!(key in value))
|
|
@@ -314,7 +525,10 @@ export class EurostatDataService {
|
|
|
314
525
|
}
|
|
315
526
|
const rawValue = value[keyStr] ?? null;
|
|
316
527
|
const statusCode = status[keyStr];
|
|
317
|
-
const obs = {
|
|
528
|
+
const obs = {
|
|
529
|
+
dimensions,
|
|
530
|
+
value: typeof rawValue === 'number' ? rawValue : null,
|
|
531
|
+
};
|
|
318
532
|
if (statusCode) {
|
|
319
533
|
const { flag, confStatus } = splitStatus(statusCode, statusLabels);
|
|
320
534
|
if (flag)
|
|
@@ -322,6 +536,17 @@ export class EurostatDataService {
|
|
|
322
536
|
if (confStatus)
|
|
323
537
|
obs.confStatus = confStatus;
|
|
324
538
|
}
|
|
539
|
+
if (typeof rawValue === 'string') {
|
|
540
|
+
const { confStatus, text } = decodeTextValue(rawValue);
|
|
541
|
+
if (confStatus && !obs.confStatus) {
|
|
542
|
+
obs.confStatus = {
|
|
543
|
+
code: confStatus,
|
|
544
|
+
label: CONF_STATUS_LABELS[confStatus] ?? confStatus,
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
if (text)
|
|
548
|
+
obs.valueText = text;
|
|
549
|
+
}
|
|
325
550
|
yield obs;
|
|
326
551
|
}
|
|
327
552
|
}
|
|
@@ -344,23 +569,31 @@ export class EurostatDataService {
|
|
|
344
569
|
extractAnnotation(data, type, field) {
|
|
345
570
|
return data.extension?.annotation?.find((a) => a.type === type)?.[field];
|
|
346
571
|
}
|
|
347
|
-
/**
|
|
572
|
+
/**
|
|
573
|
+
* Fetch complete dataset metadata from its scoped SDMX structure and content constraint.
|
|
574
|
+
*
|
|
575
|
+
* Returns a copy of the cached entry carrying `code` as this caller spelled it: the
|
|
576
|
+
* cache is shared across spellings, and a caller that edits the result edits its own.
|
|
577
|
+
*/
|
|
348
578
|
async getDatasetInfo(datasetCode, ctx) {
|
|
349
579
|
ctx.log.info('Fetching dataset info', { datasetCode });
|
|
350
|
-
|
|
580
|
+
const { meta } = await this.getSdmxMetadata(datasetCode, ctx);
|
|
581
|
+
return { ...structuredClone(meta), code: datasetCode };
|
|
351
582
|
}
|
|
352
583
|
/**
|
|
353
584
|
* The dataset's dimensions in key order, `time` excluded.
|
|
354
585
|
*
|
|
355
|
-
* This is the order the SDMX positional key is built from,
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
586
|
+
* This is the order the SDMX positional key is built from, read from the
|
|
587
|
+
* dataset's structure definition. That response is a few KB however large the
|
|
588
|
+
* dataset is, where an observation request — even a one-period slice — is
|
|
589
|
+
* refused with HTTP 413 once the latest period alone exceeds Eurostat's
|
|
590
|
+
* extraction limit (`earn_ses_annual`). Verified against live SDMX TSV headers
|
|
591
|
+
* and JSON-stat `id` arrays: the header's comma-joined key field is exactly this
|
|
592
|
+
* order.
|
|
360
593
|
*/
|
|
361
594
|
async getDimensionOrder(datasetCode, ctx) {
|
|
362
|
-
const
|
|
363
|
-
const order = (
|
|
595
|
+
const xml = await this.fetchSdmxXml(this.buildSdmxUrl('datastructure', datasetCode), datasetCode, ctx, ctx.signal);
|
|
596
|
+
const order = parseSdmx(datasetCode, () => parseSdmxDimensionOrder(xml));
|
|
364
597
|
if (order.length === 0) {
|
|
365
598
|
throw serviceUnavailable(`Eurostat reported no dimensions for dataset "${datasetCode}", so a positional filter key cannot be built. Retry without filters to download the whole dataset.`, { reason: 'upstream_fault', datasetCode });
|
|
366
599
|
}
|
|
@@ -384,10 +617,11 @@ export class EurostatDataService {
|
|
|
384
617
|
if (!dimDef || !values) {
|
|
385
618
|
throw notFound(`Dimension "${dimension}" not found in dataset "${datasetCode}". Use eurostat_get_dataset_info to see valid dimensions.`, { reason: 'not_found', datasetCode, dimension });
|
|
386
619
|
}
|
|
620
|
+
// A fresh array either way: the cached list is frozen and shared across calls.
|
|
387
621
|
const effectiveGeoLevel = dimension === 'geo' ? (geoLevel ?? 'country') : undefined;
|
|
388
622
|
const filteredValues = effectiveGeoLevel
|
|
389
623
|
? values.filter(({ code }) => metadata.geoLevelsByCode[code] === effectiveGeoLevel)
|
|
390
|
-
: values;
|
|
624
|
+
: [...values];
|
|
391
625
|
if (effectiveGeoLevel && filteredValues.length === 0) {
|
|
392
626
|
throw notFound(`Dataset "${datasetCode}" has no "geo" values at the "${effectiveGeoLevel}" level. Choose a different geo_level or omit geo_level only when country values are wanted.`, {
|
|
393
627
|
reason: 'no_results',
|
|
@@ -425,8 +659,8 @@ export class EurostatDataService {
|
|
|
425
659
|
untilP,
|
|
426
660
|
lastN,
|
|
427
661
|
});
|
|
428
|
-
// Validate mutually exclusive params
|
|
429
|
-
if (appliedFilters.
|
|
662
|
+
// Validate mutually exclusive params. Eurostat reads filter keys in any case, so `GEO` is geo.
|
|
663
|
+
if (geoLevel && Object.keys(appliedFilters).some((key) => key.toLowerCase() === 'geo')) {
|
|
430
664
|
throw validationError(`"geo" filter and "geo_level" cannot be used together. Use one or the other: "geo" for specific country/region codes, "geo_level" for filtering by NUTS hierarchy level.`, { reason: 'conflicting_params' });
|
|
431
665
|
}
|
|
432
666
|
if (lastN && (sinceP || untilP)) {
|
|
@@ -456,9 +690,18 @@ export class EurostatDataService {
|
|
|
456
690
|
// entry, so the whole slice arrives as `"value": {}` while still being data the decoder
|
|
457
691
|
// yields. Deriving both the guard and the reported total from one count is what keeps a
|
|
458
692
|
// rejected query and a returned one from disagreeing about what an observation is.
|
|
693
|
+
//
|
|
694
|
+
// The empty reply still says which filter values matched nothing and which periods it
|
|
695
|
+
// selected, so that diagnosis rides the error for the tool to explain.
|
|
459
696
|
if (obsCount === 0) {
|
|
460
|
-
throw notFound(`Query returned no observations for dataset "${datasetCode}". The dimension filter combination may not exist in the data, or the period range may fall outside the dataset's coverage. Verify dimension values with eurostat_get_dimension_values first.`, {
|
|
697
|
+
throw notFound(`Query returned no observations for dataset "${datasetCode}". The dimension filter combination may not exist in the data, or the period range may fall outside the dataset's coverage. Verify dimension values with eurostat_get_dimension_values first.`, {
|
|
698
|
+
reason: 'no_results',
|
|
699
|
+
datasetCode,
|
|
700
|
+
filters: appliedFilters,
|
|
701
|
+
...diagnoseEmptyMatch(data, appliedFilters, (type) => this.extractAnnotation(data, type, 'title')),
|
|
702
|
+
});
|
|
461
703
|
}
|
|
704
|
+
const unmatchedValues = findUnmatchedValues(appliedFilters, data);
|
|
462
705
|
const observations = this.decodeObservations(data, Math.min(previewLimit, OBS_CAP));
|
|
463
706
|
// Compute timeRange from the actual time dimension values in the response.
|
|
464
707
|
// Fall back to dataset-wide annotations only when no time dimension is present, and omit
|
|
@@ -476,13 +719,14 @@ export class EurostatDataService {
|
|
|
476
719
|
timeRange,
|
|
477
720
|
missingObsCount,
|
|
478
721
|
appliedFilters,
|
|
479
|
-
|
|
722
|
+
...(unmatchedValues && { unmatchedValues }),
|
|
723
|
+
rows: () => this.iterateRows(data, dimensionsUsed, isComextDataset(datasetCode)),
|
|
480
724
|
};
|
|
481
725
|
}
|
|
482
726
|
/** {@link iterateObservations}, flattened to dataframe rows one at a time. */
|
|
483
|
-
*iterateRows(data, dimensionsUsed) {
|
|
727
|
+
*iterateRows(data, dimensionsUsed, valueText) {
|
|
484
728
|
for (const obs of this.iterateObservations(data)) {
|
|
485
|
-
yield toObservationRow(obs, dimensionsUsed);
|
|
729
|
+
yield toObservationRow(obs, dimensionsUsed, valueText);
|
|
486
730
|
}
|
|
487
731
|
}
|
|
488
732
|
}
|
|
@@ -495,8 +739,11 @@ export class EurostatDataService {
|
|
|
495
739
|
* `conf_status` / `conf_status_label`. Anything the observation does not carry —
|
|
496
740
|
* a dimension, either flag — yields `null` in its columns rather than an absent
|
|
497
741
|
* key, so every row has the same column set the table is declared with.
|
|
742
|
+
*
|
|
743
|
+
* `valueText` adds the `obs_value_text` column, which a `DS-*` table declares (see
|
|
744
|
+
* {@link observationRowSchema}).
|
|
498
745
|
*/
|
|
499
|
-
export function toObservationRow(obs, dimensionsUsed) {
|
|
746
|
+
export function toObservationRow(obs, dimensionsUsed, valueText = false) {
|
|
500
747
|
const row = {};
|
|
501
748
|
for (const dim of dimensionsUsed) {
|
|
502
749
|
const cell = obs.dimensions[dim];
|
|
@@ -504,6 +751,8 @@ export function toObservationRow(obs, dimensionsUsed) {
|
|
|
504
751
|
row[`${dim}_label`] = cell?.label ?? null;
|
|
505
752
|
}
|
|
506
753
|
row[OBS_VALUE_COLUMN] = obs.value;
|
|
754
|
+
if (valueText)
|
|
755
|
+
row[OBS_VALUE_TEXT_COLUMN] = obs.valueText ?? null;
|
|
507
756
|
row[OBS_FLAG_COLUMN] = obs.status?.code ?? null;
|
|
508
757
|
row[OBS_FLAG_LABEL_COLUMN] = obs.status?.label ?? null;
|
|
509
758
|
row[CONF_STATUS_COLUMN] = obs.confStatus?.code ?? null;
|
|
@@ -522,14 +771,20 @@ export function toObservationRow(obs, dimensionsUsed) {
|
|
|
522
771
|
* Names and order mirror {@link toObservationRow}. Nothing in the type system
|
|
523
772
|
* ties a row's keys to a schema's names, so the service tests assert the two
|
|
524
773
|
* against each other instead.
|
|
774
|
+
*
|
|
775
|
+
* `valueText` declares `obs_value_text` after `obs_value`. The query tool sets it for a
|
|
776
|
+
* `DS-*` dataset, whose PRODCOM indicators publish units and flags as text.
|
|
525
777
|
*/
|
|
526
|
-
export function observationRowSchema(dimensionsUsed) {
|
|
778
|
+
export function observationRowSchema(dimensionsUsed, valueText = false) {
|
|
527
779
|
return [
|
|
528
780
|
...dimensionsUsed.flatMap((dim) => [
|
|
529
781
|
{ name: dim, type: 'VARCHAR', nullable: true },
|
|
530
782
|
{ name: `${dim}_label`, type: 'VARCHAR', nullable: true },
|
|
531
783
|
]),
|
|
532
784
|
{ name: OBS_VALUE_COLUMN, type: 'DOUBLE', nullable: true },
|
|
785
|
+
...(valueText
|
|
786
|
+
? [{ name: OBS_VALUE_TEXT_COLUMN, type: 'VARCHAR', nullable: true }]
|
|
787
|
+
: []),
|
|
533
788
|
{ name: OBS_FLAG_COLUMN, type: 'VARCHAR', nullable: true },
|
|
534
789
|
{ name: OBS_FLAG_LABEL_COLUMN, type: 'VARCHAR', nullable: true },
|
|
535
790
|
{ name: CONF_STATUS_COLUMN, type: 'VARCHAR', nullable: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eurostat-data-service.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eurostat-data-service.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"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"}
|