@cyanheads/eurostat-mcp-server 0.7.0 → 0.8.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 (82) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/Dockerfile +2 -2
  4. package/README.md +28 -13
  5. package/changelog/0.8.x/0.8.0.md +30 -0
  6. package/changelog/0.8.x/0.8.1.md +11 -0
  7. package/dist/config/server-config.d.ts +2 -0
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +13 -0
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts.map +1 -1
  14. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js +4 -2
  15. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js.map +1 -1
  16. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +1 -1
  17. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
  18. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.d.ts +1 -1
  19. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +4 -4
  20. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +2 -2
  22. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +4 -4
  23. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +8 -18
  25. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +102 -51
  27. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts +3 -4
  29. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +8 -9
  31. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
  32. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +21 -7
  33. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
  34. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +115 -19
  35. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  36. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +3 -2
  37. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  38. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +27 -10
  39. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  40. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +2 -2
  41. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
  42. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +19 -6
  43. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
  44. package/dist/mcp-server/tools/narrowing-advice.d.ts +22 -0
  45. package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -0
  46. package/dist/mcp-server/tools/narrowing-advice.js +44 -0
  47. package/dist/mcp-server/tools/narrowing-advice.js.map +1 -0
  48. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +9 -1
  49. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
  50. package/dist/services/eurostat-bulk/eurostat-bulk-service.js +45 -10
  51. package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
  52. package/dist/services/eurostat-bulk/types.d.ts +5 -0
  53. package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
  54. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +47 -1
  55. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
  56. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +188 -13
  57. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
  58. package/dist/services/eurostat-codelists.d.ts +20 -0
  59. package/dist/services/eurostat-codelists.d.ts.map +1 -1
  60. package/dist/services/eurostat-codelists.js +25 -0
  61. package/dist/services/eurostat-codelists.js.map +1 -1
  62. package/dist/services/eurostat-data/eurostat-data-service.d.ts +63 -8
  63. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  64. package/dist/services/eurostat-data/eurostat-data-service.js +228 -48
  65. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  66. package/dist/services/eurostat-data/sdmx-metadata.d.ts +26 -0
  67. package/dist/services/eurostat-data/sdmx-metadata.d.ts.map +1 -1
  68. package/dist/services/eurostat-data/sdmx-metadata.js +38 -1
  69. package/dist/services/eurostat-data/sdmx-metadata.js.map +1 -1
  70. package/dist/services/eurostat-data/types.d.ts +12 -2
  71. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  72. package/dist/services/eurostat-data/types.js.map +1 -1
  73. package/dist/services/eurostat-hosts.d.ts +17 -0
  74. package/dist/services/eurostat-hosts.d.ts.map +1 -0
  75. package/dist/services/eurostat-hosts.js +23 -0
  76. package/dist/services/eurostat-hosts.js.map +1 -0
  77. package/dist/services/shared-load.d.ts +16 -0
  78. package/dist/services/shared-load.d.ts.map +1 -0
  79. package/dist/services/shared-load.js +27 -0
  80. package/dist/services/shared-load.js.map +1 -0
  81. package/package.json +2 -2
  82. package/server.json +31 -3
@@ -6,18 +6,47 @@
6
6
  import { invalidParams, notFound, serviceUnavailable, validationError, } from '@cyanheads/mcp-ts-core/errors';
7
7
  import { decodeCursor, encodeCursor, fetchWithTimeout, withRetry, } from '@cyanheads/mcp-ts-core/utils';
8
8
  import { getServerConfig } from '../../config/server-config.js';
9
+ import { parseSdmxDataflowList, } from '../eurostat-data/sdmx-metadata.js';
10
+ import { awaitShared } from '../shared-load.js';
9
11
  /** Upper bound on datasets returned per search page, mirroring the tool's `limit` cap. */
10
12
  const MAX_PAGE_SIZE = 100;
11
13
  /**
12
14
  * How long a failed refresh keeps the stale cache in service before upstream is
13
15
  * tried again. `withRetry` bounds one attempt; this bounds the attempt rate, so
14
- * an upstream outage costs one fetch per minute rather than one per call.
16
+ * an upstream outage costs one fetch per minute rather than one per call. A failed
17
+ * Comext merge is retried on the same schedule.
15
18
  */
16
19
  const REFRESH_RETRY_COOLDOWN_MS = 60_000;
20
+ /**
21
+ * Where each Comext collection is filed in the TOC tree, keyed by the stem of its
22
+ * dataflows' `ESMS_HTML` metadata page (`ext_go_detail_sims.htm`, `prom_esms.htm`) —
23
+ * the collection's own code, absent from the TOC. The labels carry "Comext" and
24
+ * "PRODCOM" because two PRODCOM titles contain neither word, and search reads the
25
+ * breadcrumb.
26
+ */
27
+ const COMEXT_FOLDERS = {
28
+ ext_go_detail: {
29
+ label: 'International trade in goods - detailed data (Comext)',
30
+ parent: 'ext_go',
31
+ },
32
+ prom: {
33
+ label: 'Statistics on the production of manufactured goods (PRODCOM)',
34
+ parent: 'icts',
35
+ },
36
+ };
37
+ /** Folder for a Comext dataflow whose metadata page names no collection in {@link COMEXT_FOLDERS}. */
38
+ const COMEXT_OTHER_FOLDER = {
39
+ code: 'comext',
40
+ label: 'Comext dissemination database - other collections',
41
+ };
42
+ /** A dataset code on the Comext host's scheme, as a lowercased search token. */
43
+ const DS_CODE_TOKEN = /^ds-\d+$/;
17
44
  export class EurostatCatalogueService {
18
45
  cache;
19
46
  /** Shared in-flight refresh so concurrent callers past the TTL trigger one fetch. */
20
47
  refresh;
48
+ /** Shared in-flight retry of a failed Comext merge. */
49
+ remerge;
21
50
  /** Epoch ms before which a stale cache is served without re-attempting a failed refresh. */
22
51
  refreshRetryAt = 0;
23
52
  // config and storage accepted to match the standard service init pattern;
@@ -31,15 +60,26 @@ export class EurostatCatalogueService {
31
60
  * next attempt for `REFRESH_RETRY_COOLDOWN_MS`, so an outage does not make
32
61
  * every catalogue call pay a full retry-and-backoff cycle. Only a cold-start
33
62
  * failure surfaces to the caller, and that path retries on the next call.
63
+ *
64
+ * A catalogue whose Comext merge failed is served as-is until its retry time,
65
+ * then the next call retries the merge alone; that retry never fails the call.
66
+ *
67
+ * Both loads are shared, so they run without a caller's signal, bounded by their
68
+ * timeouts: a caller that cancels stops waiting without failing the others,
69
+ * caching a failure, or postponing the merge.
34
70
  */
35
- async ensureLoaded(ctx) {
71
+ ensureLoaded(ctx) {
72
+ return awaitShared(ctx.signal, () => this.loadShared(ctx));
73
+ }
74
+ async loadShared(ctx) {
36
75
  const cached = this.cache;
37
76
  const now = Date.now();
38
- if (cached) {
39
- if (now - cached.loadedAt.getTime() < getServerConfig().tocCacheTtlMs)
40
- return cached;
41
- if (now < this.refreshRetryAt)
42
- return cached;
77
+ if (cached &&
78
+ (now - cached.loadedAt.getTime() < getServerConfig().tocCacheTtlMs ||
79
+ now < this.refreshRetryAt)) {
80
+ return cached.comextRetryAt !== undefined && now >= cached.comextRetryAt
81
+ ? this.retryComextMerge(cached, ctx)
82
+ : cached;
43
83
  }
44
84
  this.refresh ??= this.fetchAndParseToc(ctx)
45
85
  .then((fresh) => {
@@ -68,24 +108,136 @@ export class EurostatCatalogueService {
68
108
  return cached;
69
109
  }
70
110
  }
111
+ /**
112
+ * Fetch the TOC and the Comext dataflow list together, and merge them.
113
+ *
114
+ * Only the TOC is required. A Comext list that fails to load leaves the catalogue
115
+ * answering from the TOC alone: the failure is logged, and the merge is retried
116
+ * after `REFRESH_RETRY_COOLDOWN_MS` without re-fetching the TOC.
117
+ */
71
118
  async fetchAndParseToc(ctx) {
119
+ const comext = this.fetchComextFlows(ctx).then((flows) => ({ flows }), (error) => ({ error }));
120
+ const tocEntries = await this.fetchTocEntries(ctx);
121
+ const loaded = await comext;
122
+ if ('flows' in loaded)
123
+ return this.buildCache(tocEntries, loaded.flows, new Date());
124
+ this.logComextFailure(loaded.error, ctx);
125
+ return this.buildCache(tocEntries, undefined, new Date());
126
+ }
127
+ /** Retry a failed Comext merge onto the TOC already held; concurrent callers share it. */
128
+ retryComextMerge(cached, ctx) {
129
+ this.remerge ??= this.fetchComextFlows(ctx)
130
+ .then((flows) => {
131
+ const merged = this.buildCache(cached.entries, flows, cached.loadedAt);
132
+ if (this.cache === cached)
133
+ this.cache = merged;
134
+ return merged;
135
+ }, (error) => {
136
+ this.logComextFailure(error, ctx);
137
+ cached.comextRetryAt = Date.now() + REFRESH_RETRY_COOLDOWN_MS;
138
+ return cached;
139
+ })
140
+ .finally(() => {
141
+ this.remerge = undefined;
142
+ });
143
+ return this.remerge;
144
+ }
145
+ logComextFailure(error, ctx) {
146
+ ctx.log.warning('Comext dataflow list unavailable — search and browse answer from the TOC alone', {
147
+ error: error instanceof Error ? error.message : String(error),
148
+ retryAfterMs: REFRESH_RETRY_COOLDOWN_MS,
149
+ });
150
+ }
151
+ /**
152
+ * Assemble a catalogue snapshot. `flows` undefined means the Comext list failed to
153
+ * load, which arms the merge retry. `loadedAt` is the TOC's load time — the TTL and
154
+ * the cursor generation both key on it. A later merge only appends entries, so a
155
+ * cursor paged over the TOC alone still addresses the same leading matches.
156
+ */
157
+ buildCache(tocEntries, flows, loadedAt) {
158
+ const entries = flows ? this.mergeComextFlows(tocEntries, flows) : tocEntries;
159
+ return {
160
+ entries,
161
+ codeIndex: this.buildCodeIndex(entries),
162
+ loadedAt,
163
+ ...(!flows && { comextRetryAt: Date.now() + REFRESH_RETRY_COOLDOWN_MS }),
164
+ };
165
+ }
166
+ /** The Comext host's dataflow list — the `DS-*` collections the TOC does not carry. */
167
+ async fetchComextFlows(ctx) {
168
+ const { comextBaseUrl, requestTimeoutMs } = getServerConfig();
169
+ const url = `${comextBaseUrl}/sdmx/2.1/dataflow/ESTAT`;
170
+ const response = await fetchWithTimeout(url, requestTimeoutMs, ctx);
171
+ const flows = parseSdmxDataflowList(await response.text());
172
+ // An empty list is a broken answer, not an empty host: merging it would report every
173
+ // DS-* code as undisseminated, so it is retried like any other failure.
174
+ if (flows.length === 0)
175
+ throw new Error(`The Comext dataflow list at ${url} listed no dataflows`);
176
+ ctx.log.info('Comext dataflow list loaded', { url, dataflowCount: flows.length });
177
+ return flows;
178
+ }
179
+ /**
180
+ * Append the Comext dataflows to the TOC as datasets, each under the folder its
181
+ * collection maps to in {@link COMEXT_FOLDERS}. A folder is created only when a
182
+ * dataflow lands in it, and is parented to its TOC folder — or to the first root
183
+ * when the TOC no longer carries that folder. Merged entries carry `lastUpdated`
184
+ * in the TOC's `dd.mm.yyyy` form and no period coverage or observation count,
185
+ * which the Comext list does not publish.
186
+ */
187
+ mergeComextFlows(tocEntries, flows) {
188
+ const entries = [...tocEntries];
189
+ const firstRoot = entries.findIndex((e) => e.depth === 0 && e.type === 'folder');
190
+ const folderIndex = new Map();
191
+ const folderFor = (flow) => {
192
+ const stem = /([a-z0-9_]+?)(?:_sims|_esms)?\.htm$/i.exec(flow.esmsUrl ?? '')?.[1] ?? '';
193
+ const known = COMEXT_FOLDERS[stem];
194
+ const code = known ? stem : COMEXT_OTHER_FOLDER.code;
195
+ const existing = folderIndex.get(code);
196
+ if (existing !== undefined)
197
+ return existing;
198
+ const tocParent = known
199
+ ? entries.findIndex((e) => e.code === known.parent && e.type === 'folder')
200
+ : -1;
201
+ const parent = tocParent >= 0 ? tocParent : firstRoot;
202
+ entries.push({
203
+ code,
204
+ label: known?.label ?? COMEXT_OTHER_FOLDER.label,
205
+ type: 'folder',
206
+ depth: (entries[parent]?.depth ?? -1) + 1,
207
+ parentIndex: parent,
208
+ });
209
+ folderIndex.set(code, entries.length - 1);
210
+ return entries.length - 1;
211
+ };
212
+ for (const flow of flows) {
213
+ const parentIndex = folderFor(flow);
214
+ const lastUpdated = flow.lastUpdated && toTocDate(flow.lastUpdated);
215
+ entries.push({
216
+ code: flow.id,
217
+ label: flow.label,
218
+ type: 'dataset',
219
+ depth: (entries[parentIndex]?.depth ?? 0) + 1,
220
+ parentIndex,
221
+ ...(lastUpdated && { lastUpdated }),
222
+ });
223
+ }
224
+ return entries;
225
+ }
226
+ async fetchTocEntries(ctx) {
72
227
  const { baseUrl, requestTimeoutMs } = getServerConfig();
73
228
  const url = `${baseUrl}/catalogue/toc/txt?lang=en`;
74
229
  ctx.log.info('Fetching Eurostat TOC', { url });
75
230
  const text = await withRetry(async () => {
76
- const response = await fetchWithTimeout(url, requestTimeoutMs, ctx, {
77
- signal: ctx.signal,
78
- });
231
+ const response = await fetchWithTimeout(url, requestTimeoutMs, ctx);
79
232
  const body = await response.text();
80
233
  if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(body)) {
81
234
  throw serviceUnavailable('Eurostat TOC returned HTML instead of TSV — likely rate-limited or temporarily unavailable.');
82
235
  }
83
236
  return body;
84
- }, { operation: 'fetchToc', context: ctx, baseDelayMs: 1000, signal: ctx.signal });
237
+ }, { operation: 'fetchToc', context: ctx, baseDelayMs: 1000 });
85
238
  const entries = this.parseToc(text);
86
- const codeIndex = this.buildCodeIndex(entries);
87
239
  ctx.log.info('TOC loaded', { entryCount: entries.length });
88
- return { entries, codeIndex, loadedAt: new Date() };
240
+ return entries;
89
241
  }
90
242
  /**
91
243
  * Index code → entry position, keeping the FIRST placement of a code filed more than once.
@@ -330,6 +482,11 @@ export class EurostatCatalogueService {
330
482
  * it. An unusable cursor — malformed, from another query, or from a catalogue
331
483
  * since refreshed — is rejected as `invalid_cursor` instead of silently paging
332
484
  * a different result set.
485
+ *
486
+ * An empty match reports the `DS-*` codes the query names that neither source lists
487
+ * (`undisseminatedCodes`), so the caller can be told the collection is not
488
+ * disseminated rather than to broaden the search. `comextListMissing` flags that the
489
+ * Comext list is not merged right now, when absence from it proves nothing.
333
490
  */
334
491
  async search(query, limit, cursor, ctx) {
335
492
  const toc = await this.ensureLoaded(ctx);
@@ -369,10 +526,19 @@ export class EurostatCatalogueService {
369
526
  ...(e.obsCount !== undefined && { obsCount: e.obsCount }),
370
527
  themePath,
371
528
  }));
529
+ const undisseminatedCodes = matched.length === 0
530
+ ? tokens
531
+ .filter((t) => DS_CODE_TOKEN.test(t) && !toc.codeIndex.has(t.toUpperCase()))
532
+ .map((t) => t.toUpperCase())
533
+ : [];
372
534
  const nextOffset = offset + pageSize;
373
535
  return {
374
536
  datasets,
375
537
  totalMatches: matched.length,
538
+ ...(undisseminatedCodes.length > 0 && {
539
+ undisseminatedCodes,
540
+ ...(toc.comextRetryAt !== undefined && { comextListMissing: true }),
541
+ }),
376
542
  ...(nextOffset < matched.length && {
377
543
  nextCursor: encodeCursor({
378
544
  offset: nextOffset,
@@ -384,6 +550,15 @@ export class EurostatCatalogueService {
384
550
  };
385
551
  }
386
552
  }
553
+ /**
554
+ * An SDMX timestamp (`2026-09-15T11:00:00+0200`) in the TOC's `dd.mm.yyyy` form, the
555
+ * date read as published rather than shifted across time zones. Anything else is
556
+ * returned unchanged rather than dropped.
557
+ */
558
+ function toTocDate(timestamp) {
559
+ const match = /^(\d{4})-(\d{2})-(\d{2})/.exec(timestamp);
560
+ return match ? `${match[3]}.${match[2]}.${match[1]}` : timestamp;
561
+ }
387
562
  // --- Init/accessor pattern ---
388
563
  let _service;
389
564
  export function initEurostatCatalogueService(config, storage) {
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-catalogue-service.js","sourceRoot":"","sources":["../../../src/services/eurostat-catalogue/eurostat-catalogue-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eurostat-catalogue-service.js","sourceRoot":"","sources":["../../../src/services/eurostat-catalogue/eurostat-catalogue-service.ts"],"names":[],"mappings":"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"}
@@ -42,4 +42,24 @@ export declare const OBS_FLAG_LABELS: Readonly<Record<string, string>>;
42
42
  * path and never inside `obs_flag`.
43
43
  */
44
44
  export declare const CONF_STATUS_LABELS: Readonly<Record<string, string>>;
45
+ /**
46
+ * Column holding a value Eurostat publishes as text. Declared only on tables staged
47
+ * from a `DS-*` dataset — the only collections observed publishing one — so a main-host
48
+ * table keeps the five measure columns it has always had.
49
+ */
50
+ export declare const OBS_VALUE_TEXT_COLUMN = "obs_value_text";
51
+ /**
52
+ * Read an observation value that is not a number.
53
+ *
54
+ * PRODCOM publishes its flag and unit indicators in the value itself, on both wire
55
+ * formats: `:C` for a confidential cell and `KG` for a quantity unit, with nothing
56
+ * separating them from the numeric indicators beside them. `:` is Eurostat's
57
+ * missing-value marker, so `:` followed by a `CONF_STATUS` code is a withheld value
58
+ * carrying its confidentiality status, and `:` alone is a plain missing value. Any
59
+ * other text is kept as published — never coerced to a number, and never dropped.
60
+ */
61
+ export declare function decodeTextValue(raw: string): {
62
+ confStatus?: string;
63
+ text?: string;
64
+ };
45
65
  //# sourceMappingURL=eurostat-codelists.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-codelists.d.ts","sourceRoot":"","sources":["../../src/services/eurostat-codelists.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2C5D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI/D,CAAC"}
1
+ {"version":3,"file":"eurostat-codelists.d.ts","sourceRoot":"","sources":["../../src/services/eurostat-codelists.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2C5D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI/D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAMnF"}
@@ -89,4 +89,29 @@ export const CONF_STATUS_LABELS = {
89
89
  N: 'not for publication',
90
90
  P: 'information under non-statistical secrecy arrangements',
91
91
  };
92
+ /**
93
+ * Column holding a value Eurostat publishes as text. Declared only on tables staged
94
+ * from a `DS-*` dataset — the only collections observed publishing one — so a main-host
95
+ * table keeps the five measure columns it has always had.
96
+ */
97
+ export const OBS_VALUE_TEXT_COLUMN = 'obs_value_text';
98
+ /**
99
+ * Read an observation value that is not a number.
100
+ *
101
+ * PRODCOM publishes its flag and unit indicators in the value itself, on both wire
102
+ * formats: `:C` for a confidential cell and `KG` for a quantity unit, with nothing
103
+ * separating them from the numeric indicators beside them. `:` is Eurostat's
104
+ * missing-value marker, so `:` followed by a `CONF_STATUS` code is a withheld value
105
+ * carrying its confidentiality status, and `:` alone is a plain missing value. Any
106
+ * other text is kept as published — never coerced to a number, and never dropped.
107
+ */
108
+ export function decodeTextValue(raw) {
109
+ const text = raw.trim();
110
+ if (text === '' || text === ':')
111
+ return {};
112
+ const code = text.startsWith(':') ? text.slice(1).trim() : undefined;
113
+ if (code && CONF_STATUS_LABELS[code])
114
+ return { confStatus: code };
115
+ return { text };
116
+ }
92
117
  //# sourceMappingURL=eurostat-codelists.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-codelists.js","sourceRoot":"","sources":["../../src/services/eurostat-codelists.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqC;IAC/D,CAAC,EAAE,sBAAsB;IACzB,EAAE,EAAE,yDAAyD;IAC7D,GAAG,EAAE,oEAAoE;IACzE,IAAI,EAAE,iFAAiF;IACvF,GAAG,EAAE,mEAAmE;IACxE,GAAG,EAAE,gHAAgH;IACrH,IAAI,EAAE,6HAA6H;IACnI,GAAG,EAAE,2FAA2F;IAChG,GAAG,EAAE,0EAA0E;IAC/E,GAAG,EAAE,sEAAsE;IAC3E,GAAG,EAAE,0EAA0E;IAC/E,EAAE,EAAE,iCAAiC;IACrC,GAAG,EAAE,8CAA8C;IACnD,EAAE,EAAE,gCAAgC;IACpC,EAAE,EAAE,6EAA6E;IACjF,GAAG,EAAE,0FAA0F;IAC/F,EAAE,EAAE,wDAAwD;IAC5D,EAAE,EAAE,uCAAuC;IAC3C,EAAE,EAAE,mCAAmC;IACvC,GAAG,EAAE,oDAAoD;IACzD,EAAE,EAAE,uCAAuC;IAC3C,CAAC,EAAE,mCAAmC;IACtC,EAAE,EAAE,8CAA8C;IAClD,GAAG,EAAE,2DAA2D;IAChE,EAAE,EAAE,6CAA6C;IACjD,EAAE,EAAE,0FAA0F;IAC9F,GAAG,EAAE,uGAAuG;IAC5G,EAAE,EAAE,qEAAqE;IACzE,EAAE,EAAE,oDAAoD;IACxD,EAAE,EAAE,gDAAgD;IACpD,GAAG,EAAE,iEAAiE;IACtE,EAAE,EAAE,oDAAoD;IACxD,CAAC,EAAE,WAAW;IACd,EAAE,EAAE,wBAAwB;IAC5B,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,uDAAuD;IAC1D,EAAE,EAAE,oEAAoE;IACxE,CAAC,EAAE,kCAAkC;IACrC,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,aAAa;IAChB,EAAE,EAAE,8BAA8B;IAClC,CAAC,EAAE,iBAAiB;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,wDAAwD;CAC5D,CAAC"}
1
+ {"version":3,"file":"eurostat-codelists.js","sourceRoot":"","sources":["../../src/services/eurostat-codelists.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqC;IAC/D,CAAC,EAAE,sBAAsB;IACzB,EAAE,EAAE,yDAAyD;IAC7D,GAAG,EAAE,oEAAoE;IACzE,IAAI,EAAE,iFAAiF;IACvF,GAAG,EAAE,mEAAmE;IACxE,GAAG,EAAE,gHAAgH;IACrH,IAAI,EAAE,6HAA6H;IACnI,GAAG,EAAE,2FAA2F;IAChG,GAAG,EAAE,0EAA0E;IAC/E,GAAG,EAAE,sEAAsE;IAC3E,GAAG,EAAE,0EAA0E;IAC/E,EAAE,EAAE,iCAAiC;IACrC,GAAG,EAAE,8CAA8C;IACnD,EAAE,EAAE,gCAAgC;IACpC,EAAE,EAAE,6EAA6E;IACjF,GAAG,EAAE,0FAA0F;IAC/F,EAAE,EAAE,wDAAwD;IAC5D,EAAE,EAAE,uCAAuC;IAC3C,EAAE,EAAE,mCAAmC;IACvC,GAAG,EAAE,oDAAoD;IACzD,EAAE,EAAE,uCAAuC;IAC3C,CAAC,EAAE,mCAAmC;IACtC,EAAE,EAAE,8CAA8C;IAClD,GAAG,EAAE,2DAA2D;IAChE,EAAE,EAAE,6CAA6C;IACjD,EAAE,EAAE,0FAA0F;IAC9F,GAAG,EAAE,uGAAuG;IAC5G,EAAE,EAAE,qEAAqE;IACzE,EAAE,EAAE,oDAAoD;IACxD,EAAE,EAAE,gDAAgD;IACpD,GAAG,EAAE,iEAAiE;IACtE,EAAE,EAAE,oDAAoD;IACxD,CAAC,EAAE,WAAW;IACd,EAAE,EAAE,wBAAwB;IAC5B,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,uDAAuD;IAC1D,EAAE,EAAE,oEAAoE;IACxE,CAAC,EAAE,kCAAkC;IACrC,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,aAAa;IAChB,EAAE,EAAE,8BAA8B;IAClC,CAAC,EAAE,iBAAiB;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,wDAAwD;CAC5D,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,IAAI,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAClE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC"}
@@ -50,11 +50,53 @@ export declare function splitStatus(code: string, labels: Record<string, string>
50
50
  };
51
51
  };
52
52
  export declare class EurostatDataService {
53
+ /**
54
+ * Parsed metadata per dataset, keyed by host and lowercased code — Eurostat matches
55
+ * codes in any case, so `ds-045409` and `DS-045409` share one entry. The value is the
56
+ * in-flight or settled parse, so concurrent first calls share one download. Entries
57
+ * are deep-frozen, expire after {@link METADATA_CACHE_TTL_MS}, are bounded in total
58
+ * by {@link METADATA_CACHE_MAX_BYTES}, and a failed load is dropped rather than
59
+ * cached. Map order is recency order: a hit is re-inserted.
60
+ */
61
+ private readonly metadataCache;
53
62
  constructor(_config: AppConfig, _storage: StorageService);
54
63
  private buildUrl;
64
+ /**
65
+ * One dataset-scoped SDMX 2.1 structure URL — every structure read goes through
66
+ * here, on the host {@link dataHostFor} picks for the code.
67
+ *
68
+ * The structure definition is requested unversioned, which Eurostat answers with
69
+ * the current one. Its version moves with the dataset (`earn_ses_annual`'s is
70
+ * 22.0), and a pinned `/1.0` returns the dataset's first structure instead.
71
+ */
55
72
  private buildSdmxUrl;
73
+ /**
74
+ * `signal` cancels the request. It is the caller's own for a read one caller owns,
75
+ * and undefined for the shared metadata load, which no single caller may cancel.
76
+ */
56
77
  private fetchSdmxXml;
78
+ /**
79
+ * The dataset's parsed metadata, from {@link metadataCache} when a live entry holds it.
80
+ *
81
+ * The load is shared by every caller of the dataset, so it runs without a caller's
82
+ * signal and is bounded by its timeouts alone: a caller that cancels stops waiting
83
+ * without failing the others or the entry.
84
+ */
57
85
  private getSdmxMetadata;
86
+ /**
87
+ * Drop settled entries, least recently used first, until the estimated total fits
88
+ * {@link METADATA_CACHE_MAX_BYTES}. A load still in flight has no size yet and is
89
+ * kept, so concurrent callers of it still share one download.
90
+ */
91
+ private evictToBudget;
92
+ /**
93
+ * Download and parse one dataset's dataflow structure and content constraint.
94
+ *
95
+ * The dataflow carries a label for every code the dataset uses, so it is the one
96
+ * structure read that scales with the dataset — 23 MB, uncompressed, for the CN8
97
+ * collection — and it alone gets `EUROSTAT_METADATA_TIMEOUT_MS`.
98
+ */
99
+ private loadSdmxMetadata;
58
100
  private fetchJson;
59
101
  private checkResponseErrors;
60
102
  /** Strides for a JSON-stat linear index: stride[i] = product of sizes[i+1..n-1]. */
@@ -98,16 +140,23 @@ export declare class EurostatDataService {
98
140
  */
99
141
  private decodeObservations;
100
142
  private extractAnnotation;
101
- /** Fetch complete dataset metadata from its scoped SDMX structure and content constraint. */
143
+ /**
144
+ * Fetch complete dataset metadata from its scoped SDMX structure and content constraint.
145
+ *
146
+ * Returns a copy of the cached entry carrying `code` as this caller spelled it: the
147
+ * cache is shared across spellings, and a caller that edits the result edits its own.
148
+ */
102
149
  getDatasetInfo(datasetCode: string, ctx: Context): Promise<DatasetMeta>;
103
150
  /**
104
151
  * The dataset's dimensions in key order, `time` excluded.
105
152
  *
106
- * This is the order the SDMX positional key is built from, and it is read from
107
- * the JSON-stat `id` array of a one-period slice — the cheapest response that
108
- * carries the full dimension list. Verified against live SDMX TSV headers on
109
- * 4-, 6- and 7-dimension datasets: the TSV header's comma-joined key field is
110
- * exactly this array.
153
+ * This is the order the SDMX positional key is built from, read from the
154
+ * dataset's structure definition. That response is a few KB however large the
155
+ * dataset is, where an observation request — even a one-period slice — is
156
+ * refused with HTTP 413 once the latest period alone exceeds Eurostat's
157
+ * extraction limit (`earn_ses_annual`). Verified against live SDMX TSV headers
158
+ * and JSON-stat `id` arrays: the header's comma-joined key field is exactly this
159
+ * order.
111
160
  */
112
161
  getDimensionOrder(datasetCode: string, ctx: Context): Promise<string[]>;
113
162
  /**
@@ -139,8 +188,11 @@ export declare class EurostatDataService {
139
188
  * `conf_status` / `conf_status_label`. Anything the observation does not carry —
140
189
  * a dimension, either flag — yields `null` in its columns rather than an absent
141
190
  * key, so every row has the same column set the table is declared with.
191
+ *
192
+ * `valueText` adds the `obs_value_text` column, which a `DS-*` table declares (see
193
+ * {@link observationRowSchema}).
142
194
  */
143
- export declare function toObservationRow(obs: Observation, dimensionsUsed: string[]): ObservationRow;
195
+ export declare function toObservationRow(obs: Observation, dimensionsUsed: string[], valueText?: boolean): ObservationRow;
144
196
  /**
145
197
  * Explicit canvas column schema for {@link toObservationRow}'s output.
146
198
  *
@@ -153,8 +205,11 @@ export declare function toObservationRow(obs: Observation, dimensionsUsed: strin
153
205
  * Names and order mirror {@link toObservationRow}. Nothing in the type system
154
206
  * ties a row's keys to a schema's names, so the service tests assert the two
155
207
  * against each other instead.
208
+ *
209
+ * `valueText` declares `obs_value_text` after `obs_value`. The query tool sets it for a
210
+ * `DS-*` dataset, whose PRODCOM indicators publish units and flags as text.
156
211
  */
157
- export declare function observationRowSchema(dimensionsUsed: string[]): ColumnSchema[];
212
+ export declare function observationRowSchema(dimensionsUsed: string[], valueText?: boolean): ColumnSchema[];
158
213
  export declare function initEurostatDataService(config: AppConfig, storage: StorageService): void;
159
214
  export declare function getEurostatDataService(): EurostatDataService;
160
215
  //# sourceMappingURL=eurostat-data-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eurostat-data-service.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eurostat-data-service.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/eurostat-data-service.ts"],"names":[],"mappings":"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"}