@nz-open-data-connectors/nz-sources 0.1.0 → 0.1.3

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 (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -28
  3. package/dist/adeSearch.d.ts.map +1 -1
  4. package/dist/adeSearch.js +3 -5
  5. package/dist/adeSearch.js.map +1 -1
  6. package/dist/apiKey.d.ts +12 -0
  7. package/dist/apiKey.d.ts.map +1 -0
  8. package/dist/apiKey.js +18 -0
  9. package/dist/apiKey.js.map +1 -0
  10. package/dist/arcgisHub.d.ts.map +1 -1
  11. package/dist/arcgisHub.js +4 -9
  12. package/dist/arcgisHub.js.map +1 -1
  13. package/dist/dataGovtDatastore.d.ts.map +1 -1
  14. package/dist/dataGovtDatastore.js +4 -6
  15. package/dist/dataGovtDatastore.js.map +1 -1
  16. package/dist/dataGovtNz.d.ts.map +1 -1
  17. package/dist/dataGovtNz.js +3 -5
  18. package/dist/dataGovtNz.js.map +1 -1
  19. package/dist/digitalNz.d.ts.map +1 -1
  20. package/dist/digitalNz.js +11 -13
  21. package/dist/digitalNz.js.map +1 -1
  22. package/dist/errors.d.ts +12 -2
  23. package/dist/errors.d.ts.map +1 -1
  24. package/dist/errors.js +8 -4
  25. package/dist/errors.js.map +1 -1
  26. package/dist/geonet.d.ts.map +1 -1
  27. package/dist/geonet.js +5 -5
  28. package/dist/geonet.js.map +1 -1
  29. package/dist/http.d.ts +34 -0
  30. package/dist/http.d.ts.map +1 -0
  31. package/dist/http.js +83 -0
  32. package/dist/http.js.map +1 -0
  33. package/dist/index.d.ts +12 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +6 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/lawa.d.ts.map +1 -1
  38. package/dist/lawa.js +3 -5
  39. package/dist/lawa.js.map +1 -1
  40. package/dist/linz.d.ts.map +1 -1
  41. package/dist/linz.js +8 -6
  42. package/dist/linz.js.map +1 -1
  43. package/dist/lris.d.ts.map +1 -1
  44. package/dist/lris.js +3 -5
  45. package/dist/lris.js.map +1 -1
  46. package/dist/mfe.d.ts.map +1 -1
  47. package/dist/mfe.js +3 -5
  48. package/dist/mfe.js.map +1 -1
  49. package/dist/nzor.d.ts.map +1 -1
  50. package/dist/nzor.js +3 -5
  51. package/dist/nzor.js.map +1 -1
  52. package/dist/nzta.d.ts.map +1 -1
  53. package/dist/nzta.js +4 -5
  54. package/dist/nzta.js.map +1 -1
  55. package/dist/nztaOpenData.d.ts +50 -0
  56. package/dist/nztaOpenData.d.ts.map +1 -0
  57. package/dist/nztaOpenData.js +107 -0
  58. package/dist/nztaOpenData.js.map +1 -0
  59. package/dist/registry.d.ts.map +1 -1
  60. package/dist/registry.js +2 -0
  61. package/dist/registry.js.map +1 -1
  62. package/dist/tradeMe.d.ts.map +1 -1
  63. package/dist/tradeMe.js +5 -5
  64. package/dist/tradeMe.js.map +1 -1
  65. package/package.json +27 -5
@@ -0,0 +1,107 @@
1
+ import { z } from 'zod';
2
+ import { NzSourceParseError } from './errors.js';
3
+ import { httpGet } from './http.js';
4
+ import { readFixtureJson } from './fixtures.js';
5
+ /** Registry id for the Waka Kotahi (NZTA) open data adapter. */
6
+ export const NZTA_OPEN_DATA_SOURCE_ID = 'nzta-open-data';
7
+ const NZTA_OPEN_DATA_DISTRIBUTION_SCHEMA = z.object({
8
+ title: z.string(),
9
+ format: z.string(),
10
+ mediaType: z.string(),
11
+ accessURL: z.string(),
12
+ });
13
+ const NZTA_OPEN_DATA_CONTACT_SCHEMA = z.object({
14
+ fn: z.string(),
15
+ hasEmail: z.string().optional().default(''),
16
+ });
17
+ const NZTA_OPEN_DATA_DATASET_SCHEMA = z.object({
18
+ '@type': z.literal('dcat:Dataset'),
19
+ identifier: z.string(),
20
+ title: z.string(),
21
+ description: z.string().optional().default(''),
22
+ landingPage: z.string().optional().default(''),
23
+ keyword: z.array(z.string()).optional().default([]),
24
+ issued: z.string().optional().default(''),
25
+ modified: z.string().optional().default(''),
26
+ publisher: z.object({ name: z.string() }).optional(),
27
+ contactPoint: NZTA_OPEN_DATA_CONTACT_SCHEMA.optional(),
28
+ license: z.string().optional().default(''),
29
+ theme: z
30
+ .union([z.array(z.string()), z.string()])
31
+ .optional()
32
+ .default(''),
33
+ spatial: z.string().optional().default(''),
34
+ distribution: z.array(NZTA_OPEN_DATA_DISTRIBUTION_SCHEMA).optional().default([]),
35
+ });
36
+ const NZTA_OPEN_DATA_CATALOGUE_SCHEMA = z.object({
37
+ '@type': z.literal('dcat:Catalog'),
38
+ dataset: z.array(NZTA_OPEN_DATA_DATASET_SCHEMA),
39
+ });
40
+ /**
41
+ * Normalizes a DCAT theme, which the feed sends as a list or a bare string.
42
+ *
43
+ * @param theme - Theme list, empty string, or a single theme name.
44
+ * @returns Theme names with empty entries removed.
45
+ */
46
+ function normalizeNztaOpenDataThemes(theme) {
47
+ if (typeof theme === 'string') {
48
+ return theme.length > 0 ? [theme] : [];
49
+ }
50
+ return theme.filter((name) => name.length > 0);
51
+ }
52
+ /**
53
+ * Parses a Waka Kotahi (NZTA) open data DCAT 1.1 catalogue payload.
54
+ *
55
+ * @param payload - Raw JSON from the NZTA DCAT US 1.1 catalogue feed.
56
+ * @returns Catalogue datasets with their distributions and licence details.
57
+ */
58
+ export function parseNztaOpenDataCatalogue(payload) {
59
+ const parsed = NZTA_OPEN_DATA_CATALOGUE_SCHEMA.safeParse(payload);
60
+ if (!parsed.success) {
61
+ throw new NzSourceParseError('NZTA open data', parsed.error.message);
62
+ }
63
+ const datasets = parsed.data.dataset.map((dataset) => ({
64
+ identifier: dataset.identifier,
65
+ title: dataset.title,
66
+ description: dataset.description,
67
+ landingPage: dataset.landingPage,
68
+ keywords: dataset.keyword,
69
+ issued: dataset.issued,
70
+ modified: dataset.modified,
71
+ publisher: dataset.publisher?.name ?? '',
72
+ contactName: dataset.contactPoint?.fn ?? '',
73
+ contactEmail: (dataset.contactPoint?.hasEmail ?? '').replace(/^mailto:/i, ''),
74
+ license: dataset.license,
75
+ themes: normalizeNztaOpenDataThemes(dataset.theme),
76
+ spatial: dataset.spatial,
77
+ distributions: dataset.distribution.map((distribution) => ({
78
+ title: distribution.title,
79
+ format: distribution.format,
80
+ mediaType: distribution.mediaType,
81
+ accessUrl: distribution.accessURL,
82
+ })),
83
+ }));
84
+ return { count: datasets.length, datasets };
85
+ }
86
+ /**
87
+ * Fetches the Waka Kotahi (NZTA) open data DCAT 1.1 catalogue feed. Keyless.
88
+ * Falls back to a committed fixture when the API is unreachable.
89
+ *
90
+ * @param fetchImpl - Fetch implementation override for tests.
91
+ * @returns Catalogue datasets with their distributions and licence details.
92
+ */
93
+ export async function fetchNztaOpenDataCatalogue(fetchImpl = globalThis.fetch) {
94
+ const response = await httpGet('NZTA open data', 'https://opendata-nzta.opendata.arcgis.com/api/feed/dcat-us/1.1.json', { fetchImpl: fetchImpl });
95
+ return parseNztaOpenDataCatalogue(await response.json());
96
+ }
97
+ /** Waka Kotahi (NZTA) adapter: open data hub catalogue, keyless. */
98
+ export const nztaOpenDataAdapter = {
99
+ id: NZTA_OPEN_DATA_SOURCE_ID,
100
+ name: 'Waka Kotahi open data hub',
101
+ auth: 'none',
102
+ description: 'DCAT 1.1 catalogue of Waka Kotahi (NZTA) transport and road datasets.',
103
+ fetchLive: (options) => fetchNztaOpenDataCatalogue(options?.fetchImpl),
104
+ parse: parseNztaOpenDataCatalogue,
105
+ loadFixture: () => parseNztaOpenDataCatalogue(readFixtureJson('nzta-open-data-2026-10-05.json')),
106
+ };
107
+ //# sourceMappingURL=nztaOpenData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nztaOpenData.js","sourceRoot":"","sources":["../src/nztaOpenData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,gEAAgE;AAChE,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAkCzD,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,YAAY,EAAE,6BAA6B,CAAC,QAAQ,EAAE;IACtD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SACxC,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACjF,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;CAChD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAS,2BAA2B,CAAC,KAAwB;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACrD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,OAAO;QACzB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE;QACxC,WAAW,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;QAC3C,YAAY,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7E,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC;QAClD,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACzD,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,SAAS,EAAE,YAAY,CAAC,SAAS;SAClC,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,gBAAgB,EAChB,qEAAqE,EACrE,EAAE,SAAS,EAAE,SAAS,EAAE,CACzB,CAAC;IACF,OAAO,0BAA0B,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAyC;IACvE,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,2BAA2B;IACjC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,uEAAuE;IACpF,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC;IACtE,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,eAAe,CAAC,gCAAgC,CAAC,CAAC;CACjG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/E,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,EAcnD,CAAC;AAEF,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAE3E;AAED,mEAAmE;AACnE,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,iFAAiF;AACjF,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ3B"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/E,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,EAenD,CAAC;AAEF,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAE3E;AAED,mEAAmE;AACnE,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,aAAa,CAAC,CAsBxB;AAED,iFAAiF;AACjF,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ3B"}
package/dist/registry.js CHANGED
@@ -10,6 +10,7 @@ import { lrisAdapter } from './lris.js';
10
10
  import { mfeAdapter } from './mfe.js';
11
11
  import { nzorAdapter } from './nzor.js';
12
12
  import { nztaAdapter } from './nzta.js';
13
+ import { nztaOpenDataAdapter } from './nztaOpenData.js';
13
14
  import { tradeMeAdapter } from './tradeMe.js';
14
15
  /** Every NZ data source behind the uniform adapter interface. */
15
16
  export const NZ_DATA_SOURCES = [
@@ -26,6 +27,7 @@ export const NZ_DATA_SOURCES = [
26
27
  mfeAdapter,
27
28
  lrisAdapter,
28
29
  nztaAdapter,
30
+ nztaOpenDataAdapter,
29
31
  ];
30
32
  /** Looks up a source adapter by id. */
31
33
  export function getNzDataSource(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,aAAa;IACb,iBAAiB;IACjB,wBAAwB;IACxB,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,mBAAmB;CACpB,CAAC;AAEF,uCAAuC;AACvC,MAAM,UAAU,eAAe,CAAI,EAAU;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAiC,CAAC;AAC5F,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAyB,EACzB,OAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,YAAY,GAChB,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACnD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAG3C;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1C,OAAO,OAAO,CAAC,GAAG,CAChB,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;QAC3C,OAAO,iBAAiB,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tradeMe.d.ts","sourceRoot":"","sources":["../src/tradeMe.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC;AAyBD,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAKxE;AAYD,oEAAoE;AACpE,wBAAsB,sBAAsB,CAC1C,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,eAAe,CAAC,CAM1B;AAED,qEAAqE;AACrE,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CAQzD,CAAC"}
1
+ {"version":3,"file":"tradeMe.d.ts","sourceRoot":"","sources":["../src/tradeMe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,eAAe,EAAE,CAAC;CAClC;AAyBD,sEAAsE;AACtE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAKxE;AAYD,oEAAoE;AACpE,wBAAsB,sBAAsB,CAC1C,SAAS,GAAE,OAAO,UAAU,CAAC,KAAwB,GACpD,OAAO,CAAC,eAAe,CAAC,CAK1B;AAED,qEAAqE;AACrE,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,eAAe,CAQzD,CAAC"}
package/dist/tradeMe.js CHANGED
@@ -1,4 +1,5 @@
1
- import { NzSourceApiError, NzSourceParseError } from './errors.js';
1
+ import { NzSourceParseError } from './errors.js';
2
+ import { httpGet } from './http.js';
2
3
  import { readFixtureJson } from './fixtures.js';
3
4
  function isRawTradeMeCategory(value) {
4
5
  if (typeof value !== 'object' || value === null) {
@@ -29,10 +30,9 @@ function toTradeMeCategory(category) {
29
30
  }
30
31
  /** Fetches the Trade Me category tree. Public endpoint, keyless. */
31
32
  export async function fetchTradeMeCategories(fetchImpl = globalThis.fetch) {
32
- const response = await fetchImpl('https://api.trademe.co.nz/v1/Categories.json');
33
- if (!response.ok) {
34
- throw new NzSourceApiError('Trade Me', `HTTP ${response.status}`);
35
- }
33
+ const response = await httpGet('Trade Me', 'https://api.trademe.co.nz/v1/Categories.json', {
34
+ fetchImpl: fetchImpl,
35
+ });
36
36
  return parseTradeMeCategories(await response.json());
37
37
  }
38
38
  /** Trade Me adapter: category tree, keyless for public endpoints. */
@@ -1 +1 @@
1
- {"version":3,"file":"tradeMe.js","sourceRoot":"","sources":["../src/tradeMe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAqBhD,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,CACL,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QACjC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;QACnE,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA4B;IACrD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,8CAA8C,CAAC,CAAC;IACjF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,sBAAsB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAmC;IAC5D,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,oCAAoC;IACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC;IAClE,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;CACtF,CAAC"}
1
+ {"version":3,"file":"tradeMe.js","sourceRoot":"","sources":["../src/tradeMe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAqBhD,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,OAAO,CACL,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QACjC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;QACnE,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,kBAAkB,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA4B;IACrD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,YAAqC,UAAU,CAAC,KAAK;IAErD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,8CAA8C,EAAE;QACzF,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAmC;IAC5D,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,oCAAoC;IACjD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC;IAClE,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;CACtF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,20 @@
1
1
  {
2
2
  "name": "@nz-open-data-connectors/nz-sources",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
+ "license": "MIT",
5
+ "description": "Keyless-first TypeScript clients for 14 New Zealand public data sources, with live probes and offline fixtures.",
6
+ "keywords": [
7
+ "new-zealand",
8
+ "open-data",
9
+ "api",
10
+ "api-client",
11
+ "typescript",
12
+ "geonet",
13
+ "stats-nz",
14
+ "linz",
15
+ "digitalnz",
16
+ "arcgis"
17
+ ],
4
18
  "private": false,
5
19
  "type": "module",
6
20
  "main": "./dist/index.js",
@@ -31,16 +45,24 @@
31
45
  "devDependencies": {
32
46
  "@nz-open-data-connectors/config-eslint": "*",
33
47
  "@nz-open-data-connectors/config-typescript": "*",
34
- "@types/node": "22.20.1",
48
+ "@types/node": "26.6.6",
35
49
  "eslint": "9.39.5",
36
50
  "typescript": "6.0.3",
37
- "vitest": "3.2.7"
51
+ "vitest": "5.0.5"
38
52
  },
39
53
  "dependencies": {
40
- "fast-xml-parser": "5.11.0",
41
- "zod": "3.25.76"
54
+ "fast-xml-parser": "5.11.2",
55
+ "zod": "4.6.7"
42
56
  },
43
57
  "publishConfig": {
44
58
  "access": "public"
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git+https://github.com/olitreadwell/nz-open-data-connectors.git"
63
+ },
64
+ "homepage": "https://github.com/olitreadwell/nz-open-data-connectors#readme",
65
+ "bugs": {
66
+ "url": "https://github.com/olitreadwell/nz-open-data-connectors/issues"
45
67
  }
46
68
  }