keepset 0.34.0 → 0.35.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.
@@ -514,17 +514,21 @@ const FileArchiveKindSchema = z.enum([
514
514
  "tar.gz",
515
515
  "tar.bz2"
516
516
  ]);
517
- /** An archive a collection is read from: every file a selector matches, at least one. */
517
+ /** An archive a collection is read from: every file a selector matches, at least one. With `inner` of kind `xlsx`, every matched member is a workbook and each of its sheets, in the workbook's order, is one file of the collection: the sheet's CSV, at the path of the member and the sheet's name joined by `/`, for an instance format laid out on a sheet. `sheets` is a regular expression a sheet's whole name must match for the sheet to be read (every sheet when it is absent), and it must match at least one sheet of every workbook. */
518
518
  const CollectionArchiveSchema = z.object({
519
519
  kind: FileArchiveKindSchema,
520
- members: ArchiveMemberSchema
520
+ members: ArchiveMemberSchema,
521
+ inner: z.object({
522
+ kind: z.literal("xlsx"),
523
+ sheets: MemberPatternSchema.optional()
524
+ }).strict().optional()
521
525
  }).strict();
522
526
  /** How a member that is itself an archive unpacks into the file the parser reads: gunzipped, or one member of it selected. It nests one level, which is as deep as any source in the catalogue goes. */
523
527
  const InnerArchiveSchema = z.union([z.object({ kind: z.literal("gzip") }).strict(), z.object({
524
528
  kind: FileArchiveKindSchema,
525
529
  member: ArchiveMemberSchema
526
530
  }).strict()]);
527
- /** How the downloaded bytes unpack into the file the parser reads, or for a collection the files it reads one by one. A `members` selector gives every member it matches, at least one, in path order. `gzip` and `bzip2` are one compressed file, and `tar.gz` and `tar.bz2` a tar archive compressed with them. A member that is an archive in its turn (a contest bundle that ships its problems as a zip inside the zip) is unpacked by `inner`. A workbook (`xlsx`) is read as the CSV of its named sheet, with dates as ISO 8601 text, for the `csv-table` parser. */
531
+ /** How the downloaded bytes unpack into the file the parser reads, or for a collection the files it reads one by one. A `members` selector gives every member it matches, at least one, in path order. `gzip` and `bzip2` are one compressed file, and `tar.gz` and `tar.bz2` a tar archive compressed with them. A member that is an archive in its turn (a contest bundle that ships its problems as a zip inside the zip) is unpacked by `inner`. A workbook (`xlsx`) is read as the CSV of its named sheet, with dates as ISO 8601 text, for the `csv-table` parser. A point shapefile (`shapefile`) is a zip whose `member` selects the `.shp`, read with the `.dbf`, `.prj` and `.cpg` of the same name beside it as the CSV of its attribute table with each point's stored coordinates and its WGS84 position, for the `csv-table` parser. */
528
532
  const ArchiveSchema = z.union([
529
533
  z.object({ kind: z.literal("none") }).strict(),
530
534
  z.object({ kind: z.literal("gzip") }).strict(),
@@ -538,6 +542,10 @@ const ArchiveSchema = z.union([
538
542
  z.object({
539
543
  kind: z.literal("xlsx"),
540
544
  sheet: z.string().min(1)
545
+ }).strict(),
546
+ z.object({
547
+ kind: z.literal("shapefile"),
548
+ member: ArchiveMemberSchema
541
549
  }).strict()
542
550
  ]);
543
551
  const ColumnSchema = z.int().min(0);
@@ -639,6 +647,10 @@ const ParserSchema = z.discriminatedUnion("format", [
639
647
  format: z.literal("vrp-rep"),
640
648
  encoding: z.literal("utf-8")
641
649
  }).strict(),
650
+ z.object({
651
+ format: z.literal("hhcrsp"),
652
+ encoding: z.literal("utf-8")
653
+ }).strict(),
642
654
  z.object({
643
655
  format: z.literal("csv-table"),
644
656
  encoding: EncodingSchema,
@@ -1096,7 +1108,7 @@ var catalogue_default = {
1096
1108
  "id": "keepset",
1097
1109
  "name": "keepset",
1098
1110
  "description": "The keepset catalogue: datasets with machine-readable recipes that fetch each one and normalise it into its category's target shape.",
1099
- "version": "1.25.0",
1111
+ "version": "1.26.0",
1100
1112
  "repository": "https://github.com/Mearman/keepset",
1101
1113
  "namespaceAliases": {
1102
1114
  "networkrepository": ["nr"],
@@ -7255,10 +7267,111 @@ var catalogue_default = {
7255
7267
  },
7256
7268
  "citations": [],
7257
7269
  "recipe": {
7258
- "status": "not-fetchable",
7259
- "reason": "The download is a per-request zip of a point shapefile (the attributes are in a dbf and the positions in a separate shp, in a projected system) with no CSV or GeoJSON route, and keepset has no shapefile parser."
7270
+ "status": "fetchable",
7271
+ "source": 1,
7272
+ "archive": {
7273
+ "kind": "shapefile",
7274
+ "member": { "path": "dataset/L_SITADEL_LOGEMENT_R11.shp" }
7275
+ },
7276
+ "parser": {
7277
+ "format": "csv-table",
7278
+ "encoding": "utf-8",
7279
+ "delimiter": "comma",
7280
+ "skipLines": 0,
7281
+ "idColumn": "id",
7282
+ "numericColumns": [
7283
+ {
7284
+ "column": "geometry_latitude",
7285
+ "factor": 1
7286
+ },
7287
+ {
7288
+ "column": "geometry_longitude",
7289
+ "factor": 1
7290
+ },
7291
+ {
7292
+ "column": "geometry_x",
7293
+ "factor": 1
7294
+ },
7295
+ {
7296
+ "column": "geometry_y",
7297
+ "factor": 1
7298
+ }
7299
+ ],
7300
+ "columns": [
7301
+ "date_ree_2",
7302
+ "geometry_latitude",
7303
+ "geometry_longitude",
7304
+ "date_reell",
7305
+ "type_dau",
7306
+ "etat_dau",
7307
+ "comm",
7308
+ "geometry_x",
7309
+ "geometry_y"
7310
+ ]
7311
+ }
7312
+ },
7313
+ "crosswalk": {
7314
+ "source": "csv-table",
7315
+ "target": "tasks/v1",
7316
+ "rules": [
7317
+ {
7318
+ "op": "move",
7319
+ "from": "meta",
7320
+ "to": "meta"
7321
+ },
7322
+ {
7323
+ "op": "move",
7324
+ "from": "nodes[].id",
7325
+ "to": "nodes[].id"
7326
+ },
7327
+ {
7328
+ "op": "move",
7329
+ "from": "nodes[].date_ree_2",
7330
+ "to": "nodes[].closed"
7331
+ },
7332
+ {
7333
+ "op": "move",
7334
+ "from": "nodes[].geometry_latitude",
7335
+ "to": "nodes[].lat"
7336
+ },
7337
+ {
7338
+ "op": "move",
7339
+ "from": "nodes[].geometry_longitude",
7340
+ "to": "nodes[].lon"
7341
+ },
7342
+ {
7343
+ "op": "move",
7344
+ "from": "nodes[].date_reell",
7345
+ "to": "nodes[].opened"
7346
+ },
7347
+ {
7348
+ "op": "move",
7349
+ "from": "nodes[].type_dau",
7350
+ "to": "nodes[].skill"
7351
+ },
7352
+ {
7353
+ "op": "move",
7354
+ "from": "nodes[].etat_dau",
7355
+ "to": "nodes[].status"
7356
+ },
7357
+ {
7358
+ "op": "move",
7359
+ "from": "nodes[].comm",
7360
+ "to": "nodes[].territory"
7361
+ },
7362
+ {
7363
+ "op": "move",
7364
+ "from": "nodes[].geometry_x",
7365
+ "to": "nodes[].x"
7366
+ },
7367
+ {
7368
+ "op": "move",
7369
+ "from": "nodes[].geometry_y",
7370
+ "to": "nodes[].y"
7371
+ }
7372
+ ],
7373
+ "oneWay": []
7260
7374
  },
7261
- "crosswalk": { "file": "crosswalks/tasks-v1/nodes.json" },
7262
7375
  "expectedCounts": {},
7263
7376
  "properties": { "surveyId": "or-72" }
7264
7377
  },
@@ -10679,7 +10792,7 @@ var catalogue_default = {
10679
10792
  }],
10680
10793
  "recipe": {
10681
10794
  "status": "not-fetchable",
10682
- "reason": "The downloads are MATLAB data files and keepset has no parser for them."
10795
+ "reason": "Each instance is a MATLAB 5 file whose orders, the nodes with their quantities, mix codes and delivery times, are a MATLAB table of datetime and other class objects, which MATLAB stores in the file's undocumented MCOS subsystem data rather than as arrays; the only plain arrays are the travel time and distance matrices, so nothing at node level can be read without reverse engineering that serialisation."
10683
10796
  },
10684
10797
  "crosswalk": { "file": "crosswalks/tasks-v1/nodes.json" },
10685
10798
  "expectedCounts": {},
@@ -10864,6 +10977,10 @@ var catalogue_default = {
10864
10977
  "url": "https://data.mendeley.com/datasets/hp3xftsrfx/1",
10865
10978
  "retrieved": "2026-10-19",
10866
10979
  "status": "live"
10980
+ }, {
10981
+ "url": "https://data.mendeley.com/public-api/zip/hp3xftsrfx/download/2",
10982
+ "retrieved": "2026-10-19",
10983
+ "status": "live"
10867
10984
  }],
10868
10985
  "licence": {
10869
10986
  "kind": "spdx",
@@ -10877,12 +10994,93 @@ var catalogue_default = {
10877
10994
  "doi": "10.1007/s10729-013-9243-1"
10878
10995
  }],
10879
10996
  "recipe": {
10880
- "status": "not-fetchable",
10881
- "reason": "The download is a RAR archive of macro enabled Excel workbooks, and keepset reads neither RAR archives nor macro workbooks."
10997
+ "status": "fetchable",
10998
+ "source": 1,
10999
+ "archive": {
11000
+ "kind": "zip",
11001
+ "members": { "extensions": [".xlsm"] },
11002
+ "inner": {
11003
+ "kind": "xlsx",
11004
+ "sheets": "(?!G5$|J5$).+"
11005
+ }
11006
+ },
11007
+ "parser": {
11008
+ "format": "hhcrsp",
11009
+ "encoding": "utf-8"
11010
+ }
10882
11011
  },
10883
- "crosswalk": { "file": "crosswalks/tasks-v1/nodes.json" },
10884
- "expectedCounts": {},
10885
- "properties": { "surveyId": "or-16" }
11012
+ "crosswalk": {
11013
+ "source": "hhcrsp",
11014
+ "target": "tasks/v1",
11015
+ "rules": [
11016
+ {
11017
+ "op": "move",
11018
+ "from": "meta",
11019
+ "to": "meta"
11020
+ },
11021
+ {
11022
+ "op": "move",
11023
+ "from": "nodes[].id",
11024
+ "to": "nodes[].id"
11025
+ },
11026
+ {
11027
+ "op": "move",
11028
+ "from": "nodes[].services",
11029
+ "to": "nodes[].skill"
11030
+ },
11031
+ {
11032
+ "op": "move",
11033
+ "from": "nodes[].x",
11034
+ "to": "nodes[].x"
11035
+ },
11036
+ {
11037
+ "op": "move",
11038
+ "from": "nodes[].y",
11039
+ "to": "nodes[].y"
11040
+ },
11041
+ {
11042
+ "op": "move",
11043
+ "from": "nodes[].role",
11044
+ "to": "nodes[].role"
11045
+ },
11046
+ {
11047
+ "op": "move",
11048
+ "from": "nodes[].duration1",
11049
+ "to": "nodes[].duration1"
11050
+ },
11051
+ {
11052
+ "op": "move",
11053
+ "from": "nodes[].duration2",
11054
+ "to": "nodes[].duration2"
11055
+ },
11056
+ {
11057
+ "op": "move",
11058
+ "from": "nodes[].earliest1",
11059
+ "to": "nodes[].earliest1"
11060
+ },
11061
+ {
11062
+ "op": "move",
11063
+ "from": "nodes[].latest1",
11064
+ "to": "nodes[].latest1"
11065
+ },
11066
+ {
11067
+ "op": "move",
11068
+ "from": "nodes[].earliest2",
11069
+ "to": "nodes[].earliest2"
11070
+ },
11071
+ {
11072
+ "op": "move",
11073
+ "from": "nodes[].latest2",
11074
+ "to": "nodes[].latest2"
11075
+ }
11076
+ ],
11077
+ "oneWay": []
11078
+ },
11079
+ "expectedCounts": { "instances": 82 },
11080
+ "properties": {
11081
+ "surveyId": "or-16",
11082
+ "timeUnit": "abstract units"
11083
+ }
10886
11084
  },
10887
11085
  {
10888
11086
  "id": "mendeley-data-last-mile-delivery-route-deviations",
@@ -18012,7 +18210,7 @@ var catalogue_default = {
18012
18210
  "citations": [],
18013
18211
  "recipe": {
18014
18212
  "status": "not-fetchable",
18015
- "reason": "The source is an SRU search endpoint that returns XML notices in a query language and not a table, and keepset has no parser for it."
18213
+ "reason": "The source is an SRU search interface whose Gemeenteblad environmental permit notices are a result set of well over a million records, while the interface serves at most 100 records a request and none past the 10,000th of a result set; a fetch would have to split the query by date into hundreds of windows and make more than ten thousand requests for gigabytes of XML, which no recipe reads, and a single window of the set is not this dataset."
18016
18214
  },
18017
18215
  "crosswalk": { "file": "crosswalks/tasks-v1/nodes.json" },
18018
18216
  "expectedCounts": {},
@@ -74,7 +74,7 @@ declare const ArchiveMemberSchema: z.ZodUnion<readonly [z.ZodObject<{
74
74
  pattern: z.ZodString;
75
75
  }, z.core.$strict>]>;
76
76
  type ArchiveMember = z.infer<typeof ArchiveMemberSchema>;
77
- /** An archive a collection is read from: every file a selector matches, at least one. */
77
+ /** An archive a collection is read from: every file a selector matches, at least one. With `inner` of kind `xlsx`, every matched member is a workbook and each of its sheets, in the workbook's order, is one file of the collection: the sheet's CSV, at the path of the member and the sheet's name joined by `/`, for an instance format laid out on a sheet. `sheets` is a regular expression a sheet's whole name must match for the sheet to be read (every sheet when it is absent), and it must match at least one sheet of every workbook. */
78
78
  declare const CollectionArchiveSchema: z.ZodObject<{
79
79
  kind: z.ZodEnum<{
80
80
  zip: "zip";
@@ -89,8 +89,12 @@ declare const CollectionArchiveSchema: z.ZodObject<{
89
89
  }, z.core.$strict>, z.ZodObject<{
90
90
  pattern: z.ZodString;
91
91
  }, z.core.$strict>]>;
92
+ inner: z.ZodOptional<z.ZodObject<{
93
+ kind: z.ZodLiteral<"xlsx">;
94
+ sheets: z.ZodOptional<z.ZodString>;
95
+ }, z.core.$strict>>;
92
96
  }, z.core.$strict>;
93
- /** How the downloaded bytes unpack into the file the parser reads, or for a collection the files it reads one by one. A `members` selector gives every member it matches, at least one, in path order. `gzip` and `bzip2` are one compressed file, and `tar.gz` and `tar.bz2` a tar archive compressed with them. A member that is an archive in its turn (a contest bundle that ships its problems as a zip inside the zip) is unpacked by `inner`. A workbook (`xlsx`) is read as the CSV of its named sheet, with dates as ISO 8601 text, for the `csv-table` parser. */
97
+ /** How the downloaded bytes unpack into the file the parser reads, or for a collection the files it reads one by one. A `members` selector gives every member it matches, at least one, in path order. `gzip` and `bzip2` are one compressed file, and `tar.gz` and `tar.bz2` a tar archive compressed with them. A member that is an archive in its turn (a contest bundle that ships its problems as a zip inside the zip) is unpacked by `inner`. A workbook (`xlsx`) is read as the CSV of its named sheet, with dates as ISO 8601 text, for the `csv-table` parser. A point shapefile (`shapefile`) is a zip whose `member` selects the `.shp`, read with the `.dbf`, `.prj` and `.cpg` of the same name beside it as the CSV of its attribute table with each point's stored coordinates and its WGS84 position, for the `csv-table` parser. */
94
98
  declare const ArchiveSchema: z.ZodUnion<readonly [z.ZodObject<{
95
99
  kind: z.ZodLiteral<"none">;
96
100
  }, z.core.$strict>, z.ZodObject<{
@@ -142,9 +146,22 @@ declare const ArchiveSchema: z.ZodUnion<readonly [z.ZodObject<{
142
146
  }, z.core.$strict>, z.ZodObject<{
143
147
  pattern: z.ZodString;
144
148
  }, z.core.$strict>]>;
149
+ inner: z.ZodOptional<z.ZodObject<{
150
+ kind: z.ZodLiteral<"xlsx">;
151
+ sheets: z.ZodOptional<z.ZodString>;
152
+ }, z.core.$strict>>;
145
153
  }, z.core.$strict>, z.ZodObject<{
146
154
  kind: z.ZodLiteral<"xlsx">;
147
155
  sheet: z.ZodString;
156
+ }, z.core.$strict>, z.ZodObject<{
157
+ kind: z.ZodLiteral<"shapefile">;
158
+ member: z.ZodUnion<readonly [z.ZodObject<{
159
+ path: z.ZodString;
160
+ }, z.core.$strict>, z.ZodObject<{
161
+ extensions: z.ZodArray<z.ZodString>;
162
+ }, z.core.$strict>, z.ZodObject<{
163
+ pattern: z.ZodString;
164
+ }, z.core.$strict>]>;
148
165
  }, z.core.$strict>]>;
149
166
  type Archive = z.infer<typeof ArchiveSchema>;
150
167
  /** An archive that gives the one file a document is read from. */
@@ -259,6 +276,9 @@ declare const ParserSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
259
276
  }, z.core.$strict>, z.ZodObject<{
260
277
  format: z.ZodLiteral<"vrp-rep">;
261
278
  encoding: z.ZodLiteral<"utf-8">;
279
+ }, z.core.$strict>, z.ZodObject<{
280
+ format: z.ZodLiteral<"hhcrsp">;
281
+ encoding: z.ZodLiteral<"utf-8">;
262
282
  }, z.core.$strict>, z.ZodObject<{
263
283
  format: z.ZodLiteral<"csv-table">;
264
284
  encoding: z.ZodEnum<{
@@ -358,9 +378,22 @@ declare const RecipeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
358
378
  }, z.core.$strict>, z.ZodObject<{
359
379
  pattern: z.ZodString;
360
380
  }, z.core.$strict>]>;
381
+ inner: z.ZodOptional<z.ZodObject<{
382
+ kind: z.ZodLiteral<"xlsx">;
383
+ sheets: z.ZodOptional<z.ZodString>;
384
+ }, z.core.$strict>>;
361
385
  }, z.core.$strict>, z.ZodObject<{
362
386
  kind: z.ZodLiteral<"xlsx">;
363
387
  sheet: z.ZodString;
388
+ }, z.core.$strict>, z.ZodObject<{
389
+ kind: z.ZodLiteral<"shapefile">;
390
+ member: z.ZodUnion<readonly [z.ZodObject<{
391
+ path: z.ZodString;
392
+ }, z.core.$strict>, z.ZodObject<{
393
+ extensions: z.ZodArray<z.ZodString>;
394
+ }, z.core.$strict>, z.ZodObject<{
395
+ pattern: z.ZodString;
396
+ }, z.core.$strict>]>;
364
397
  }, z.core.$strict>]>;
365
398
  parser: z.ZodDiscriminatedUnion<[z.ZodObject<{
366
399
  format: z.ZodLiteral<"edge-list">;
@@ -465,6 +498,9 @@ declare const RecipeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
465
498
  }, z.core.$strict>, z.ZodObject<{
466
499
  format: z.ZodLiteral<"vrp-rep">;
467
500
  encoding: z.ZodLiteral<"utf-8">;
501
+ }, z.core.$strict>, z.ZodObject<{
502
+ format: z.ZodLiteral<"hhcrsp">;
503
+ encoding: z.ZodLiteral<"utf-8">;
468
504
  }, z.core.$strict>, z.ZodObject<{
469
505
  format: z.ZodLiteral<"csv-table">;
470
506
  encoding: z.ZodEnum<{
@@ -619,9 +655,22 @@ declare const EntrySchema: z.ZodObject<{
619
655
  }, z.core.$strict>, z.ZodObject<{
620
656
  pattern: z.ZodString;
621
657
  }, z.core.$strict>]>;
658
+ inner: z.ZodOptional<z.ZodObject<{
659
+ kind: z.ZodLiteral<"xlsx">;
660
+ sheets: z.ZodOptional<z.ZodString>;
661
+ }, z.core.$strict>>;
622
662
  }, z.core.$strict>, z.ZodObject<{
623
663
  kind: z.ZodLiteral<"xlsx">;
624
664
  sheet: z.ZodString;
665
+ }, z.core.$strict>, z.ZodObject<{
666
+ kind: z.ZodLiteral<"shapefile">;
667
+ member: z.ZodUnion<readonly [z.ZodObject<{
668
+ path: z.ZodString;
669
+ }, z.core.$strict>, z.ZodObject<{
670
+ extensions: z.ZodArray<z.ZodString>;
671
+ }, z.core.$strict>, z.ZodObject<{
672
+ pattern: z.ZodString;
673
+ }, z.core.$strict>]>;
625
674
  }, z.core.$strict>]>;
626
675
  parser: z.ZodDiscriminatedUnion<[z.ZodObject<{
627
676
  format: z.ZodLiteral<"edge-list">;
@@ -726,6 +775,9 @@ declare const EntrySchema: z.ZodObject<{
726
775
  }, z.core.$strict>, z.ZodObject<{
727
776
  format: z.ZodLiteral<"vrp-rep">;
728
777
  encoding: z.ZodLiteral<"utf-8">;
778
+ }, z.core.$strict>, z.ZodObject<{
779
+ format: z.ZodLiteral<"hhcrsp">;
780
+ encoding: z.ZodLiteral<"utf-8">;
729
781
  }, z.core.$strict>, z.ZodObject<{
730
782
  format: z.ZodLiteral<"csv-table">;
731
783
  encoding: z.ZodEnum<{
@@ -809,6 +861,10 @@ declare const EntrySchema: z.ZodObject<{
809
861
  } | {
810
862
  pattern: string;
811
863
  };
864
+ inner?: {
865
+ kind: "xlsx";
866
+ sheets?: string | undefined;
867
+ } | undefined;
812
868
  } | {
813
869
  kind: "none";
814
870
  } | {
@@ -839,6 +895,15 @@ declare const EntrySchema: z.ZodObject<{
839
895
  } | {
840
896
  kind: "xlsx";
841
897
  sheet: string;
898
+ } | {
899
+ kind: "shapefile";
900
+ member: {
901
+ path: string;
902
+ } | {
903
+ extensions: string[];
904
+ } | {
905
+ pattern: string;
906
+ };
842
907
  };
843
908
  parser: {
844
909
  format: "edge-list";
@@ -919,6 +984,9 @@ declare const EntrySchema: z.ZodObject<{
919
984
  } | {
920
985
  format: "vrp-rep";
921
986
  encoding: "utf-8";
987
+ } | {
988
+ format: "hhcrsp";
989
+ encoding: "utf-8";
922
990
  };
923
991
  paging?: {
924
992
  kind: "arcgis-query";
@@ -1149,9 +1217,22 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1149
1217
  }, z.core.$strict>, z.ZodObject<{
1150
1218
  pattern: z.ZodString;
1151
1219
  }, z.core.$strict>]>;
1220
+ inner: z.ZodOptional<z.ZodObject<{
1221
+ kind: z.ZodLiteral<"xlsx">;
1222
+ sheets: z.ZodOptional<z.ZodString>;
1223
+ }, z.core.$strict>>;
1152
1224
  }, z.core.$strict>, z.ZodObject<{
1153
1225
  kind: z.ZodLiteral<"xlsx">;
1154
1226
  sheet: z.ZodString;
1227
+ }, z.core.$strict>, z.ZodObject<{
1228
+ kind: z.ZodLiteral<"shapefile">;
1229
+ member: z.ZodUnion<readonly [z.ZodObject<{
1230
+ path: z.ZodString;
1231
+ }, z.core.$strict>, z.ZodObject<{
1232
+ extensions: z.ZodArray<z.ZodString>;
1233
+ }, z.core.$strict>, z.ZodObject<{
1234
+ pattern: z.ZodString;
1235
+ }, z.core.$strict>]>;
1155
1236
  }, z.core.$strict>]>;
1156
1237
  parser: z.ZodDiscriminatedUnion<[z.ZodObject<{
1157
1238
  format: z.ZodLiteral<"edge-list">;
@@ -1256,6 +1337,9 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1256
1337
  }, z.core.$strict>, z.ZodObject<{
1257
1338
  format: z.ZodLiteral<"vrp-rep">;
1258
1339
  encoding: z.ZodLiteral<"utf-8">;
1340
+ }, z.core.$strict>, z.ZodObject<{
1341
+ format: z.ZodLiteral<"hhcrsp">;
1342
+ encoding: z.ZodLiteral<"utf-8">;
1259
1343
  }, z.core.$strict>, z.ZodObject<{
1260
1344
  format: z.ZodLiteral<"csv-table">;
1261
1345
  encoding: z.ZodEnum<{
@@ -1339,6 +1423,10 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1339
1423
  } | {
1340
1424
  pattern: string;
1341
1425
  };
1426
+ inner?: {
1427
+ kind: "xlsx";
1428
+ sheets?: string | undefined;
1429
+ } | undefined;
1342
1430
  } | {
1343
1431
  kind: "none";
1344
1432
  } | {
@@ -1369,6 +1457,15 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1369
1457
  } | {
1370
1458
  kind: "xlsx";
1371
1459
  sheet: string;
1460
+ } | {
1461
+ kind: "shapefile";
1462
+ member: {
1463
+ path: string;
1464
+ } | {
1465
+ extensions: string[];
1466
+ } | {
1467
+ pattern: string;
1468
+ };
1372
1469
  };
1373
1470
  parser: {
1374
1471
  format: "edge-list";
@@ -1449,6 +1546,9 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1449
1546
  } | {
1450
1547
  format: "vrp-rep";
1451
1548
  encoding: "utf-8";
1549
+ } | {
1550
+ format: "hhcrsp";
1551
+ encoding: "utf-8";
1452
1552
  };
1453
1553
  paging?: {
1454
1554
  kind: "arcgis-query";
@@ -1536,6 +1636,10 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1536
1636
  } | {
1537
1637
  pattern: string;
1538
1638
  };
1639
+ inner?: {
1640
+ kind: "xlsx";
1641
+ sheets?: string | undefined;
1642
+ } | undefined;
1539
1643
  } | {
1540
1644
  kind: "none";
1541
1645
  } | {
@@ -1566,6 +1670,15 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1566
1670
  } | {
1567
1671
  kind: "xlsx";
1568
1672
  sheet: string;
1673
+ } | {
1674
+ kind: "shapefile";
1675
+ member: {
1676
+ path: string;
1677
+ } | {
1678
+ extensions: string[];
1679
+ } | {
1680
+ pattern: string;
1681
+ };
1569
1682
  };
1570
1683
  parser: {
1571
1684
  format: "edge-list";
@@ -1646,6 +1759,9 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1646
1759
  } | {
1647
1760
  format: "vrp-rep";
1648
1761
  encoding: "utf-8";
1762
+ } | {
1763
+ format: "hhcrsp";
1764
+ encoding: "utf-8";
1649
1765
  };
1650
1766
  paging?: {
1651
1767
  kind: "arcgis-query";
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as CrosswalkReference, A as Catalogue, B as ManifestSchema, C as JsonScalarSchema, Ct as waybackUrl, D as GraphNodeSchema, E as GraphNode, F as NamespaceNode, G as ArchiveMember, H as parseManifest, I as createCatalogue, J as Citation, K as ArchiveMemberSchema, L as Lineage, M as CatalogueIndexSchema, N as Dataset, O as GraphV1, P as DatasetQuery, Q as ColumnNameSchema, R as LineageSchema, S as JsonScalar, St as parseEntry, T as GraphEdgeSchema, U as AliasSchema, V as SemVerSchema, W as Archive, X as CollectionArchive, Y as CitationSchema, Z as CollectionArchiveSchema, _ as TasksV1, _t as SnapshotSchema, a as CategoryTargets, at as IdSchema, b as Instance, bt as SubjectSchema, c as countTarget, ct as Namespace, d as getCollectionTarget, dt as ParserSchema, et as CrosswalkReferenceSchema, f as getTarget, ft as RESERVED_META_KEYS, g as TaskSchema, gt as Snapshot, h as Task, ht as RelativePathSchema, i as CategoryTarget, it as HttpUrlSchema, j as CatalogueIndex, k as GraphV1Schema, l as countedKeys, lt as NamespaceSchema, m as listCategories, mt as RecipeSchema, n as CategoryId, nt as Entry, o as CollectionTarget, ot as Licence, p as kindOf, pt as Recipe, q as ArchiveSchema, r as CategoryIdSchema, rt as EntrySchema, s as CountedKey, st as LicenceSchema, t as Category, tt as DocumentArchive, u as getCategory, ut as Parser, v as TasksV1Schema, vt as Source, w as GraphEdge, x as collectionOf, xt as WaybackTimestampSchema, y as Collection, yt as SourceSchema, z as Manifest } from "./categories-DUG7URRd.js";
1
+ import { $ as CrosswalkReference, A as Catalogue, B as ManifestSchema, C as JsonScalarSchema, Ct as waybackUrl, D as GraphNodeSchema, E as GraphNode, F as NamespaceNode, G as ArchiveMember, H as parseManifest, I as createCatalogue, J as Citation, K as ArchiveMemberSchema, L as Lineage, M as CatalogueIndexSchema, N as Dataset, O as GraphV1, P as DatasetQuery, Q as ColumnNameSchema, R as LineageSchema, S as JsonScalar, St as parseEntry, T as GraphEdgeSchema, U as AliasSchema, V as SemVerSchema, W as Archive, X as CollectionArchive, Y as CitationSchema, Z as CollectionArchiveSchema, _ as TasksV1, _t as SnapshotSchema, a as CategoryTargets, at as IdSchema, b as Instance, bt as SubjectSchema, c as countTarget, ct as Namespace, d as getCollectionTarget, dt as ParserSchema, et as CrosswalkReferenceSchema, f as getTarget, ft as RESERVED_META_KEYS, g as TaskSchema, gt as Snapshot, h as Task, ht as RelativePathSchema, i as CategoryTarget, it as HttpUrlSchema, j as CatalogueIndex, k as GraphV1Schema, l as countedKeys, lt as NamespaceSchema, m as listCategories, mt as RecipeSchema, n as CategoryId, nt as Entry, o as CollectionTarget, ot as Licence, p as kindOf, pt as Recipe, q as ArchiveSchema, r as CategoryIdSchema, rt as EntrySchema, s as CountedKey, st as LicenceSchema, t as Category, tt as DocumentArchive, u as getCategory, ut as Parser, v as TasksV1Schema, vt as Source, w as GraphEdge, x as collectionOf, xt as WaybackTimestampSchema, y as Collection, yt as SourceSchema, z as Manifest } from "./categories-D9r42M9E.js";
2
2
  import { Crosswalk } from "crossmap";
3
3
  //#region src/errors.d.ts
4
4
  /** The root of this package's error taxonomy: every error keepset throws is a `KeepsetError`, so callers can catch the family with one check. */
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as ArchiveError, A as WaybackTimestampSchema, B as countedKeys, C as ParserSchema, D as SnapshotSchema, E as RelativePathSchema, F as groupsOf, G as listCategories, H as getCollectionTarget, I as namesOf, J as collectionOf, K as TaskSchema, M as toIssues, N as waybackUrl, O as SourceSchema, P as NAME_SEPARATOR, Q as JsonScalarSchema, R as CategoryIdSchema, S as NamespaceSchema, T as RecipeSchema, U as getTarget, V as getCategory, W as kindOf, X as GraphNodeSchema, Y as GraphEdgeSchema, Z as GraphV1Schema, _ as CrosswalkReferenceSchema, a as CatalogueIndexSchema, at as RecipeError, b as IdSchema, c as ManifestSchema, d as AliasSchema, et as CatalogueSyntaxError, f as ArchiveMemberSchema, g as ColumnNameSchema, h as CollectionArchiveSchema, i as listNamespaces, it as NativeParseError, j as parseEntry, k as SubjectSchema, l as SemVerSchema, m as CitationSchema, n as getManifest, nt as DatasetNotFoundError, o as createCatalogue, ot as UnknownCategoryError, p as ArchiveSchema, q as TasksV1Schema, r as listDatasets, rt as KeepsetError, s as LineageSchema, t as getDataset, tt as DatasetAmbiguousError, u as parseManifest, v as EntrySchema, w as RESERVED_META_KEYS, x as LicenceSchema, y as HttpUrlSchema, z as countTarget } from "./bundled-CPSe9InV.js";
1
+ import { $ as ArchiveError, A as WaybackTimestampSchema, B as countedKeys, C as ParserSchema, D as SnapshotSchema, E as RelativePathSchema, F as groupsOf, G as listCategories, H as getCollectionTarget, I as namesOf, J as collectionOf, K as TaskSchema, M as toIssues, N as waybackUrl, O as SourceSchema, P as NAME_SEPARATOR, Q as JsonScalarSchema, R as CategoryIdSchema, S as NamespaceSchema, T as RecipeSchema, U as getTarget, V as getCategory, W as kindOf, X as GraphNodeSchema, Y as GraphEdgeSchema, Z as GraphV1Schema, _ as CrosswalkReferenceSchema, a as CatalogueIndexSchema, at as RecipeError, b as IdSchema, c as ManifestSchema, d as AliasSchema, et as CatalogueSyntaxError, f as ArchiveMemberSchema, g as ColumnNameSchema, h as CollectionArchiveSchema, i as listNamespaces, it as NativeParseError, j as parseEntry, k as SubjectSchema, l as SemVerSchema, m as CitationSchema, n as getManifest, nt as DatasetNotFoundError, o as createCatalogue, ot as UnknownCategoryError, p as ArchiveSchema, q as TasksV1Schema, r as listDatasets, rt as KeepsetError, s as LineageSchema, t as getDataset, tt as DatasetAmbiguousError, u as parseManifest, v as EntrySchema, w as RESERVED_META_KEYS, x as LicenceSchema, y as HttpUrlSchema, z as countTarget } from "./bundled-OGg9e42x.js";
2
2
  import { validateCrosswalk } from "crossmap";
3
3
  //#region src/serialise.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { N as Dataset, gt as Snapshot, i as CategoryTarget, nt as Entry, o as CollectionTarget, vt as Source } from "../categories-DUG7URRd.js";
1
+ import { N as Dataset, gt as Snapshot, i as CategoryTarget, nt as Entry, o as CollectionTarget, vt as Source } from "../categories-D9r42M9E.js";
2
2
  //#region src/node/fetch-dataset.d.ts
3
3
  /** The network port a recipe downloads through: `downloadRaw` by default, which returns the bytes exactly as served, or a stand-in under test. */
4
4
  export type FetchPort = (url: string, init: {