@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.
Files changed (85) hide show
  1. package/AGENTS.md +1 -1
  2. package/CLAUDE.md +1 -1
  3. package/README.md +85 -85
  4. package/changelog/0.7.x/0.7.0.md +33 -0
  5. package/changelog/0.8.x/0.8.0.md +30 -0
  6. package/dist/config/server-config.d.ts +2 -0
  7. package/dist/config/server-config.d.ts.map +1 -1
  8. package/dist/config/server-config.js +13 -0
  9. package/dist/config/server-config.js.map +1 -1
  10. package/dist/index.js +2 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.d.ts.map +1 -1
  13. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js +4 -2
  14. package/dist/mcp-server/resources/definitions/eurostat-dataset.resource.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js +1 -1
  16. package/dist/mcp-server/tools/definitions/eurostat-browse-themes.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.d.ts +1 -1
  18. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js +4 -4
  19. package/dist/mcp-server/tools/definitions/eurostat-dataframe-describe.tool.js.map +1 -1
  20. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.d.ts +2 -2
  21. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js +4 -4
  22. package/dist/mcp-server/tools/definitions/eurostat-dataframe-query.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts +16 -23
  24. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js +156 -65
  26. package/dist/mcp-server/tools/definitions/eurostat-download-dataset.tool.js.map +1 -1
  27. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts +3 -4
  28. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.d.ts.map +1 -1
  29. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js +8 -9
  30. package/dist/mcp-server/tools/definitions/eurostat-get-dataset-info.tool.js.map +1 -1
  31. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts +21 -7
  32. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js +115 -19
  34. package/dist/mcp-server/tools/definitions/eurostat-get-dimension-values.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts +10 -3
  36. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js +156 -24
  38. package/dist/mcp-server/tools/definitions/eurostat-query-dataset.tool.js.map +1 -1
  39. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts +2 -2
  40. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.d.ts.map +1 -1
  41. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js +19 -6
  42. package/dist/mcp-server/tools/definitions/eurostat-search-datasets.tool.js.map +1 -1
  43. package/dist/mcp-server/tools/narrowing-advice.d.ts +22 -0
  44. package/dist/mcp-server/tools/narrowing-advice.d.ts.map +1 -0
  45. package/dist/mcp-server/tools/narrowing-advice.js +44 -0
  46. package/dist/mcp-server/tools/narrowing-advice.js.map +1 -0
  47. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts +12 -1
  48. package/dist/services/eurostat-bulk/eurostat-bulk-service.d.ts.map +1 -1
  49. package/dist/services/eurostat-bulk/eurostat-bulk-service.js +66 -12
  50. package/dist/services/eurostat-bulk/eurostat-bulk-service.js.map +1 -1
  51. package/dist/services/eurostat-bulk/types.d.ts +5 -0
  52. package/dist/services/eurostat-bulk/types.d.ts.map +1 -1
  53. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts +47 -1
  54. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.d.ts.map +1 -1
  55. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js +188 -13
  56. package/dist/services/eurostat-catalogue/eurostat-catalogue-service.js.map +1 -1
  57. package/dist/services/eurostat-codelists.d.ts +20 -0
  58. package/dist/services/eurostat-codelists.d.ts.map +1 -1
  59. package/dist/services/eurostat-codelists.js +25 -0
  60. package/dist/services/eurostat-codelists.js.map +1 -1
  61. package/dist/services/eurostat-data/eurostat-data-service.d.ts +78 -9
  62. package/dist/services/eurostat-data/eurostat-data-service.d.ts.map +1 -1
  63. package/dist/services/eurostat-data/eurostat-data-service.js +306 -51
  64. package/dist/services/eurostat-data/eurostat-data-service.js.map +1 -1
  65. package/dist/services/eurostat-data/sdmx-metadata.d.ts +26 -0
  66. package/dist/services/eurostat-data/sdmx-metadata.d.ts.map +1 -1
  67. package/dist/services/eurostat-data/sdmx-metadata.js +38 -1
  68. package/dist/services/eurostat-data/sdmx-metadata.js.map +1 -1
  69. package/dist/services/eurostat-data/types.d.ts +38 -2
  70. package/dist/services/eurostat-data/types.d.ts.map +1 -1
  71. package/dist/services/eurostat-data/types.js.map +1 -1
  72. package/dist/services/eurostat-hosts.d.ts +17 -0
  73. package/dist/services/eurostat-hosts.d.ts.map +1 -0
  74. package/dist/services/eurostat-hosts.js +23 -0
  75. package/dist/services/eurostat-hosts.js.map +1 -0
  76. package/dist/services/eurostat-periods.d.ts +68 -0
  77. package/dist/services/eurostat-periods.d.ts.map +1 -0
  78. package/dist/services/eurostat-periods.js +204 -0
  79. package/dist/services/eurostat-periods.js.map +1 -0
  80. package/dist/services/shared-load.d.ts +16 -0
  81. package/dist/services/shared-load.d.ts.map +1 -0
  82. package/dist/services/shared-load.js +27 -0
  83. package/dist/services/shared-load.js.map +1 -0
  84. package/package.json +2 -2
  85. package/server.json +31 -3
@@ -11,6 +11,32 @@ export interface SdmxDatasetMetadata {
11
11
  label: string;
12
12
  }>>;
13
13
  }
14
+ /** One dataflow from an SDMX 2.1 dataflow list (`dataflow/{agency}`). */
15
+ export interface SdmxDataflowSummary {
16
+ /** `ESMS_HTML` annotation: the dataflow's metadata page, which names its collection. */
17
+ esmsUrl?: string;
18
+ id: string;
19
+ /** English name, whitespace collapsed. Falls back to the id. */
20
+ label: string;
21
+ /** `UPDATE_DATA` annotation, verbatim (e.g. `2026-09-15T11:00:00+0200`). */
22
+ lastUpdated?: string;
23
+ }
24
+ /**
25
+ * The dataflows an SDMX 2.1 dataflow list describes, with the annotations a
26
+ * catalogue entry needs. The list requested with no `detail` carries every
27
+ * dataflow's names and annotations — 23 KB for the Comext host's 11 — where the
28
+ * `allstubs` form carries names only.
29
+ */
30
+ export declare function parseSdmxDataflowList(xml: string): SdmxDataflowSummary[];
31
+ /**
32
+ * The key dimensions of an SDMX 2.1 structure definition (`datastructure/{agency}/{id}`),
33
+ * in the order the positional series key places them, time excluded.
34
+ *
35
+ * Order comes from each dimension's `position` attribute, not document order. The
36
+ * structure definition runs to a few KB whatever the dataset's size, so reading the
37
+ * order here never trips the extraction limit an observation request can hit.
38
+ */
39
+ export declare function parseSdmxDimensionOrder(dataStructureXml: string): string[];
14
40
  /** Combine one dataflow's referencepartial descendants with its dataset content constraint. */
15
41
  export declare function parseSdmxDatasetMetadata(dataflowXml: string, constraintXml: string, datasetCode: string): SdmxDatasetMetadata;
16
42
  //# sourceMappingURL=sdmx-metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdmx-metadata.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/sdmx-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiBxD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3E;AAyRD,+FAA+F;AAC/F,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAmErB"}
1
+ {"version":3,"file":"sdmx-metadata.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/sdmx-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAmBxD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3E;AA0RD,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAexE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1E;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAmErB"}
@@ -216,7 +216,7 @@ function parseConceptLabels(root) {
216
216
  function parseDimensions(root, conceptLabels) {
217
217
  const dimensionList = firstDescendant(root, 'DimensionList');
218
218
  if (!dimensionList)
219
- throw new Error('SDMX dataflow descendants omitted the dimension list');
219
+ throw new Error('SDMX structure omitted the dimension list');
220
220
  return dimensionList.children
221
221
  .filter(({ name }) => name === 'Dimension' || name === 'TimeDimension')
222
222
  .map((dimension, index) => {
@@ -235,6 +235,7 @@ function parseDimensions(root, conceptLabels) {
235
235
  return {
236
236
  code,
237
237
  ...(codelistId && { codelistId }),
238
+ isTime: dimension.name === 'TimeDimension',
238
239
  label: (conceptId && conceptLabels.get(conceptId)) ?? conceptLabels.get(rawCode) ?? code,
239
240
  position: Number.parseInt(dimension.attributes.position ?? '', 10) || index + 1,
240
241
  };
@@ -265,6 +266,42 @@ function parseConstraintValues(root) {
265
266
  }
266
267
  return valuesByDimension;
267
268
  }
269
+ /**
270
+ * The dataflows an SDMX 2.1 dataflow list describes, with the annotations a
271
+ * catalogue entry needs. The list requested with no `detail` carries every
272
+ * dataflow's names and annotations — 23 KB for the Comext host's 11 — where the
273
+ * `allstubs` form carries names only.
274
+ */
275
+ export function parseSdmxDataflowList(xml) {
276
+ return descendants(parseXml(xml), 'Dataflow').flatMap((dataflow) => {
277
+ const id = dataflow.attributes.id;
278
+ if (!id)
279
+ return [];
280
+ const lastUpdated = annotationValue(dataflow, 'UPDATE_DATA', 'AnnotationTitle');
281
+ const esmsUrl = annotationValue(dataflow, 'ESMS_HTML', 'AnnotationURL');
282
+ return [
283
+ {
284
+ id,
285
+ label: (localizedName(dataflow) ?? id).replace(/\s+/g, ' '),
286
+ ...(lastUpdated && { lastUpdated }),
287
+ ...(esmsUrl && { esmsUrl }),
288
+ },
289
+ ];
290
+ });
291
+ }
292
+ /**
293
+ * The key dimensions of an SDMX 2.1 structure definition (`datastructure/{agency}/{id}`),
294
+ * in the order the positional series key places them, time excluded.
295
+ *
296
+ * Order comes from each dimension's `position` attribute, not document order. The
297
+ * structure definition runs to a few KB whatever the dataset's size, so reading the
298
+ * order here never trips the extraction limit an observation request can hit.
299
+ */
300
+ export function parseSdmxDimensionOrder(dataStructureXml) {
301
+ return parseDimensions(parseXml(dataStructureXml), new Map())
302
+ .filter(({ isTime }) => !isTime)
303
+ .map(({ code }) => code);
304
+ }
268
305
  /** Combine one dataflow's referencepartial descendants with its dataset content constraint. */
269
306
  export function parseSdmxDatasetMetadata(dataflowXml, constraintXml, datasetCode) {
270
307
  const dataflowRoot = parseXml(dataflowXml);
@@ -1 +1 @@
1
- {"version":3,"file":"sdmx-metadata.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/sdmx-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdmx-metadata.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/sdmx-metadata.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,11 @@ export interface JsonStatResponse {
19
19
  size?: number[];
20
20
  /** Status codes for non-normal observations: linear_index (as string) → status code. */
21
21
  status?: Record<string, string>;
22
- /** Flat dict: linear_index → numeric value (or null for missing). */
23
- value?: Record<string, number | null>;
22
+ /**
23
+ * Flat dict: linear_index → value. Numeric, or null for missing — except on the
24
+ * PRODCOM collections, which publish flag and unit indicators as text (`":C"`, `"KG"`).
25
+ */
26
+ value?: Record<string, number | string | null>;
24
27
  /** Async/error response structures. */
25
28
  warning?: {
26
29
  status: number;
@@ -68,7 +71,14 @@ export interface Observation {
68
71
  code: string;
69
72
  label: string;
70
73
  };
74
+ /** Numeric value; null when missing, withheld, or published as text. */
71
75
  value: number | null;
76
+ /**
77
+ * A value Eurostat published as text rather than a number (a PRODCOM unit such as
78
+ * `KG`), verbatim. Absent for numeric and missing values; `:C` decodes to
79
+ * `confStatus` instead.
80
+ */
81
+ valueText?: string;
72
82
  }
73
83
  /**
74
84
  * One observation flattened into a dataframe row.
@@ -159,6 +169,32 @@ export interface QueryResult {
159
169
  start?: string;
160
170
  end?: string;
161
171
  };
172
+ /**
173
+ * Filter values the reply matched to nothing, keyed by dimension, spelled as sent.
174
+ * Absent when every value matched.
175
+ */
176
+ unmatchedValues?: UnmatchedValues;
177
+ }
178
+ /** Filter values that matched nothing, keyed by dimension code, spelled as sent. */
179
+ export type UnmatchedValues = Record<string, string[]>;
180
+ /**
181
+ * What an empty JSON-stat match says about why it is empty, carried on a
182
+ * `no_results` error's data. The members co-occur — an unmatched value can sit
183
+ * beside periods that carry no value — and all are absent when the reply says
184
+ * nothing more than "empty".
185
+ */
186
+ export interface NoResultsDiagnosis {
187
+ /** Periods the reply selected, none carrying a value. Set only when every dimension matched. */
188
+ matchedPeriods?: string[];
189
+ /**
190
+ * Set when the requested range selected no period at all: the dataset's overall
191
+ * coverage from its annotations, each bound absent when Eurostat does not report it.
192
+ */
193
+ outsideCoverage?: {
194
+ oldest?: string;
195
+ latest?: string;
196
+ };
197
+ unmatchedValues?: UnmatchedValues;
162
198
  }
163
199
  /**
164
200
  * A query result plus a lazy row source over everything it matched.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8JH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC;AAI7B,4FAA4F;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;CAC+B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/eurostat-data/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiMH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC;AAI7B,4FAA4F;AAC5F,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,SAAS;IACT,OAAO;IACP,OAAO;IACP,OAAO;CAC+B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview Which Eurostat host serves a dataset. Every service that builds a
3
+ * dataset-scoped URL asks here, so the routing rule lives in one place.
4
+ * @module services/eurostat-hosts
5
+ */
6
+ /**
7
+ * True for a `DS-*` code — the detailed trade (Comext) and PRODCOM collections.
8
+ *
9
+ * The Comext dissemination host serves exactly these, and the main host serves none
10
+ * of them: its 8,149 dataflow ids are letters, digits and underscores with no hyphen,
11
+ * so its `dsb_*` codes never match. Both hosts match codes case-insensitively, so
12
+ * `ds-045409` routes the same as `DS-045409`.
13
+ */
14
+ export declare function isComextDataset(datasetCode: string): boolean;
15
+ /** Base URL of the host that serves `datasetCode`. */
16
+ export declare function dataHostFor(datasetCode: string): string;
17
+ //# sourceMappingURL=eurostat-hosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eurostat-hosts.d.ts","sourceRoot":"","sources":["../../src/services/eurostat-hosts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAGvD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Which Eurostat host serves a dataset. Every service that builds a
3
+ * dataset-scoped URL asks here, so the routing rule lives in one place.
4
+ * @module services/eurostat-hosts
5
+ */
6
+ import { getServerConfig } from '../config/server-config.js';
7
+ /**
8
+ * True for a `DS-*` code — the detailed trade (Comext) and PRODCOM collections.
9
+ *
10
+ * The Comext dissemination host serves exactly these, and the main host serves none
11
+ * of them: its 8,149 dataflow ids are letters, digits and underscores with no hyphen,
12
+ * so its `dsb_*` codes never match. Both hosts match codes case-insensitively, so
13
+ * `ds-045409` routes the same as `DS-045409`.
14
+ */
15
+ export function isComextDataset(datasetCode) {
16
+ return /^ds-/i.test(datasetCode);
17
+ }
18
+ /** Base URL of the host that serves `datasetCode`. */
19
+ export function dataHostFor(datasetCode) {
20
+ const { baseUrl, comextBaseUrl } = getServerConfig();
21
+ return isComextDataset(datasetCode) ? comextBaseUrl : baseUrl;
22
+ }
23
+ //# sourceMappingURL=eurostat-hosts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eurostat-hosts.js","sourceRoot":"","sources":["../../src/services/eurostat-hosts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,CAAC;IACrD,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;AAChE,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @fileoverview Local check of the period literals `since_period`/`until_period`
3
+ * carry, run by both data tools before any request reaches Eurostat.
4
+ * @module services/eurostat-periods
5
+ */
6
+ /**
7
+ * The accepted forms, as the tools' descriptions and recovery hints state them.
8
+ * `YYYY-A1`, the SDMX annual form, is read as well and sent as `YYYY`.
9
+ */
10
+ export declare const PERIOD_FORMS = "YYYY, YYYY-MM, YYYY-MM-DD, YYYY-Qn (1\u20134), YYYY-Sn (1\u20132), YYYY-Tn (1\u20133), YYYY-Mnn (01\u201312), YYYY-Wnn (a week the year has, up to 53) or YYYY-Dnnn (a day the year has, up to 366)";
11
+ /**
12
+ * A checked period: the literal to send, and the first and last day it covers as
13
+ * {@link dayNumber}s. The span is what lets two bounds of different frequencies be
14
+ * compared.
15
+ */
16
+ export interface Period {
17
+ firstDay: number;
18
+ lastDay: number;
19
+ period: string;
20
+ }
21
+ /**
22
+ * The period to send upstream, or why there is none.
23
+ *
24
+ * A literal already in the form both endpoints read comes back unchanged, letter
25
+ * case included. Otherwise it comes back rewritten to that form, the letter's case
26
+ * kept as sent: a frequency number with extra leading zeros is cut to its canonical
27
+ * width (`2020-Q01` → `2020-Q1`, `2020-W001` → `2020-W01`), a day of the year is
28
+ * always sent as three digits (`2026-D1` → `2026-D001`, the only width the
29
+ * Statistics API reads), and `YYYY-A1` is sent as `YYYY`, which the Statistics API
30
+ * reads and `YYYY-A1` it does not.
31
+ *
32
+ * Beyond the shape, every component must exist: month 01–12, quarter 1–4,
33
+ * semester 1–2, trimester 1–3, a week the ISO year has, a day the year has, and a
34
+ * real calendar day. Both endpoints accept some out-of-range components and
35
+ * silently roll them into a neighbouring period (`2020-13` becomes 2021-01 on the
36
+ * bulk endpoint, `2021-W53` becomes 2022-W01 on both), so an unchecked one returns
37
+ * data for a range the caller never asked for.
38
+ */
39
+ export declare function normalizePeriod(period: string): Period | {
40
+ problem: string;
41
+ };
42
+ /**
43
+ * Check both period bounds, `since_period` first, and return them in the form to
44
+ * send upstream (and echo back). Pass the values after trimming — a blank bound is
45
+ * "no bound" and never reaches this check.
46
+ *
47
+ * With both bounds set, the range must hold at least one day: it is empty when
48
+ * `since_period`'s period starts after `until_period`'s ends. Comparing the start of
49
+ * one against the end of the other keeps a cross-frequency pair such as `2020-06`
50
+ * to `2020` valid. Neither endpoint rejects an inverted range — the Statistics API
51
+ * answers with everything outside the gap, the bulk endpoint with the whole series.
52
+ *
53
+ * Returns the first failure's caller-facing message — naming the parameter, the
54
+ * value as sent, and what is wrong with it — rather than throwing, so the calling
55
+ * tool raises it through its own typed error contract.
56
+ */
57
+ export declare function resolvePeriods(bounds: {
58
+ since_period?: string | undefined;
59
+ until_period?: string | undefined;
60
+ }): {
61
+ ok: true;
62
+ since_period?: string;
63
+ until_period?: string;
64
+ } | {
65
+ ok: false;
66
+ message: string;
67
+ };
68
+ //# sourceMappingURL=eurostat-periods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eurostat-periods.d.ts","sourceRoot":"","sources":["../../src/services/eurostat-periods.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,eAAO,MAAM,YAAY,wMAC0J,CAAC;AAsGpL;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CA6C5E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4B9F"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * @fileoverview Local check of the period literals `since_period`/`until_period`
3
+ * carry, run by both data tools before any request reaches Eurostat.
4
+ * @module services/eurostat-periods
5
+ */
6
+ /**
7
+ * The accepted forms, as the tools' descriptions and recovery hints state them.
8
+ * `YYYY-A1`, the SDMX annual form, is read as well and sent as `YYYY`.
9
+ */
10
+ export const PERIOD_FORMS = 'YYYY, YYYY-MM, YYYY-MM-DD, YYYY-Qn (1–4), YYYY-Sn (1–2), YYYY-Tn (1–3), YYYY-Mnn (01–12), YYYY-Wnn (a week the year has, up to 53) or YYYY-Dnnn (a day the year has, up to 366)';
11
+ /**
12
+ * `YYYY`, `YYYY-MM`, `YYYY-MM-DD`, the annual `YYYY-A1`, or a frequency letter (in
13
+ * either case) followed by its number: `YYYY-Qn`, `YYYY-Sn`, `YYYY-Tn`, `YYYY-Mnn`,
14
+ * `YYYY-Wnn`, `YYYY-Dnnn`.
15
+ *
16
+ * Read off live probes of both endpoints: each shape here is parsed the same way by
17
+ * the Statistics API and the SDMX bulk endpoint once it is in the form {@link
18
+ * normalizePeriod} sends. The number after the letter may carry extra leading zeros
19
+ * (`2020-Q01`, `2020-W001`) — the bulk endpoint reads those, the Statistics API
20
+ * refuses them. Month and day in `YYYY-MM`/`YYYY-MM-DD` stay exactly two digits
21
+ * (both endpoints refuse `2020-1`). Frequency is deliberately not checked — both
22
+ * endpoints map a literal of another frequency (`2020-01` on annual data) onto the
23
+ * dataset's own.
24
+ */
25
+ const PERIOD_SHAPE = /^(\d{4})(?:-(\d{2})(?:-(\d{2}))?|-(A)0{0,3}1|-([QSTMWD])(\d{1,4}))?$/i;
26
+ /**
27
+ * Per frequency letter: the digits its canonical form keeps and the largest number
28
+ * any year has. Weeks and days are further bounded by the year itself.
29
+ */
30
+ const COMPONENT = {
31
+ Q: { name: 'quarter', max: 4, width: 1 },
32
+ S: { name: 'semester', max: 2, width: 1 },
33
+ T: { name: 'trimester', max: 3, width: 1 },
34
+ M: { name: 'month', max: 12, width: 2 },
35
+ W: { name: 'week', max: 53, width: 2 },
36
+ D: { name: 'day', max: 366, width: 3 },
37
+ };
38
+ const MONTH_NAMES = [
39
+ 'January',
40
+ 'February',
41
+ 'March',
42
+ 'April',
43
+ 'May',
44
+ 'June',
45
+ 'July',
46
+ 'August',
47
+ 'September',
48
+ 'October',
49
+ 'November',
50
+ 'December',
51
+ ];
52
+ /** Characters of an offending value echoed back before it is cut short. */
53
+ const ECHO_LIMIT = 40;
54
+ const isLeapYear = (year) => (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
55
+ const daysInMonth = (year, month) => month === 2 ? (isLeapYear(year) ? 29 : 28) : [4, 6, 9, 11].includes(month) ? 30 : 31;
56
+ /**
57
+ * ISO 8601 weeks in a year: 53 when the year starts on a Thursday, or on a
58
+ * Wednesday in a leap year, otherwise 52. Asking either endpoint for week 53 of
59
+ * a 52-week year silently returns data from week 1 of the next year.
60
+ */
61
+ function isoWeeksInYear(year) {
62
+ const weekday = (y) => (y + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400)) % 7;
63
+ return weekday(year) === 4 || weekday(year - 1) === 3 ? 53 : 52;
64
+ }
65
+ /** Days since 1970-01-01 (UTC). `setUTCFullYear` keeps years 0–99 literal, where `Date.UTC` would add 1900. */
66
+ function dayNumber(year, month, day) {
67
+ const date = new Date(0);
68
+ date.setUTCFullYear(year, month - 1, day);
69
+ return date.getTime() / 86_400_000;
70
+ }
71
+ /** First and last day of months `from`–`to` of `year`, as {@link dayNumber}s. */
72
+ const monthSpan = (year, from, to) => [
73
+ dayNumber(year, from, 1),
74
+ dayNumber(year, to, daysInMonth(year, to)),
75
+ ];
76
+ /** First and last day of ISO week `week`: week 1 is the one holding 4 January. */
77
+ function isoWeekSpan(year, week) {
78
+ const jan4 = dayNumber(year, 1, 4);
79
+ const mondayOffset = (((jan4 + 3) % 7) + 7) % 7; // 1970-01-01, day 0, was a Thursday
80
+ const first = jan4 - mondayOffset + 7 * (week - 1);
81
+ return [first, first + 6];
82
+ }
83
+ /** First and last day each frequency number covers. */
84
+ const FREQUENCY_SPAN = {
85
+ Q: (year, n) => monthSpan(year, 3 * n - 2, 3 * n),
86
+ S: (year, n) => monthSpan(year, 6 * n - 5, 6 * n),
87
+ T: (year, n) => monthSpan(year, 4 * n - 3, 4 * n),
88
+ M: (year, n) => monthSpan(year, n, n),
89
+ W: isoWeekSpan,
90
+ D: (year, n) => {
91
+ const day = dayNumber(year, 1, n);
92
+ return [day, day];
93
+ },
94
+ };
95
+ /**
96
+ * The period to send upstream, or why there is none.
97
+ *
98
+ * A literal already in the form both endpoints read comes back unchanged, letter
99
+ * case included. Otherwise it comes back rewritten to that form, the letter's case
100
+ * kept as sent: a frequency number with extra leading zeros is cut to its canonical
101
+ * width (`2020-Q01` → `2020-Q1`, `2020-W001` → `2020-W01`), a day of the year is
102
+ * always sent as three digits (`2026-D1` → `2026-D001`, the only width the
103
+ * Statistics API reads), and `YYYY-A1` is sent as `YYYY`, which the Statistics API
104
+ * reads and `YYYY-A1` it does not.
105
+ *
106
+ * Beyond the shape, every component must exist: month 01–12, quarter 1–4,
107
+ * semester 1–2, trimester 1–3, a week the ISO year has, a day the year has, and a
108
+ * real calendar day. Both endpoints accept some out-of-range components and
109
+ * silently roll them into a neighbouring period (`2020-13` becomes 2021-01 on the
110
+ * bulk endpoint, `2021-W53` becomes 2022-W01 on both), so an unchecked one returns
111
+ * data for a range the caller never asked for.
112
+ */
113
+ export function normalizePeriod(period) {
114
+ const match = PERIOD_SHAPE.exec(period);
115
+ if (!match)
116
+ return { problem: 'it is not one of the accepted period forms' };
117
+ const [, yearText = '', monthText, dayText, annual, letter, digits] = match;
118
+ const year = Number(yearText);
119
+ const wholeYear = () => {
120
+ const [firstDay, lastDay] = monthSpan(year, 1, 12);
121
+ return { firstDay, lastDay };
122
+ };
123
+ if (annual !== undefined)
124
+ return { period: yearText, ...wholeYear() };
125
+ if (monthText !== undefined) {
126
+ const month = Number(monthText);
127
+ if (month < 1 || month > 12)
128
+ return { problem: `month ${monthText} is outside 01–12` };
129
+ if (dayText === undefined) {
130
+ const [firstDay, lastDay] = monthSpan(year, month, month);
131
+ return { period, firstDay, lastDay };
132
+ }
133
+ const day = Number(dayText);
134
+ const last = daysInMonth(year, month);
135
+ if (day < 1 || day > last) {
136
+ return {
137
+ problem: `day ${dayText} does not exist: ${MONTH_NAMES[month - 1]} ${yearText} has ${last} days`,
138
+ };
139
+ }
140
+ const firstDay = dayNumber(year, month, day);
141
+ return { period, firstDay, lastDay: firstDay };
142
+ }
143
+ if (letter === undefined || digits === undefined)
144
+ return { period, ...wholeYear() };
145
+ const kind = letter.toUpperCase();
146
+ const n = Number(digits);
147
+ const { name, max, width } = COMPONENT[kind];
148
+ if (n < 1 || n > max)
149
+ return { problem: `${name} ${n} is outside 1–${max}` };
150
+ if (kind === 'W' && n > isoWeeksInYear(year)) {
151
+ return { problem: `week ${n} does not exist: ${yearText} has 52 ISO weeks` };
152
+ }
153
+ if (kind === 'D' && n === 366 && !isLeapYear(year)) {
154
+ return { problem: `day 366 does not exist: ${yearText} has 365 days` };
155
+ }
156
+ const number = digits.length < width && kind !== 'D' ? digits : String(n).padStart(width, '0');
157
+ const [firstDay, lastDay] = FREQUENCY_SPAN[kind](year, n);
158
+ return { period: `${yearText}-${letter}${number}`, firstDay, lastDay };
159
+ }
160
+ /**
161
+ * Check both period bounds, `since_period` first, and return them in the form to
162
+ * send upstream (and echo back). Pass the values after trimming — a blank bound is
163
+ * "no bound" and never reaches this check.
164
+ *
165
+ * With both bounds set, the range must hold at least one day: it is empty when
166
+ * `since_period`'s period starts after `until_period`'s ends. Comparing the start of
167
+ * one against the end of the other keeps a cross-frequency pair such as `2020-06`
168
+ * to `2020` valid. Neither endpoint rejects an inverted range — the Statistics API
169
+ * answers with everything outside the gap, the bulk endpoint with the whole series.
170
+ *
171
+ * Returns the first failure's caller-facing message — naming the parameter, the
172
+ * value as sent, and what is wrong with it — rather than throwing, so the calling
173
+ * tool raises it through its own typed error contract.
174
+ */
175
+ export function resolvePeriods(bounds) {
176
+ const checked = {};
177
+ for (const param of ['since_period', 'until_period']) {
178
+ const value = bounds[param];
179
+ if (value === undefined)
180
+ continue;
181
+ const result = normalizePeriod(value);
182
+ if ('problem' in result) {
183
+ const shown = value.length > ECHO_LIMIT ? `${value.slice(0, ECHO_LIMIT)}…` : value;
184
+ return {
185
+ ok: false,
186
+ message: `${param} "${shown}" is not a valid period: ${result.problem}.`,
187
+ };
188
+ }
189
+ checked[param] = result;
190
+ }
191
+ const { since_period: since, until_period: until } = checked;
192
+ if (since && until && since.firstDay > until.lastDay) {
193
+ return {
194
+ ok: false,
195
+ message: `since_period "${bounds.since_period}" starts after until_period "${bounds.until_period}" ends, so the range holds no period.`,
196
+ };
197
+ }
198
+ return {
199
+ ok: true,
200
+ ...(since && { since_period: since.period }),
201
+ ...(until && { until_period: until.period }),
202
+ };
203
+ }
204
+ //# sourceMappingURL=eurostat-periods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eurostat-periods.js","sourceRoot":"","sources":["../../src/services/eurostat-periods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview Await a load shared between concurrent callers without letting one
3
+ * caller's cancellation reach the others.
4
+ * @module services/shared-load
5
+ */
6
+ /**
7
+ * Settle with a shared load for one caller, or reject as soon as that caller's own
8
+ * signal aborts.
9
+ *
10
+ * `share` returns the in-flight or settled load, started without any caller's signal,
11
+ * so an abort here only releases this caller: the load keeps running for everyone
12
+ * else awaiting it and for the cache it fills. A caller already aborted is refused
13
+ * before `share` runs, so it never starts a download it will not wait for.
14
+ */
15
+ export declare function awaitShared<T>(signal: AbortSignal, share: () => Promise<T>): Promise<T>;
16
+ //# sourceMappingURL=shared-load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-load.d.ts","sourceRoot":"","sources":["../../src/services/shared-load.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUvF"}