keepset 0.25.0 → 0.27.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.
@@ -63,11 +63,13 @@ declare const CitationSchema: z.ZodObject<{
63
63
  type Citation = z.infer<typeof CitationSchema>;
64
64
  /** A relative path inside an archive or a catalogue: `/`-separated segments, none empty, `.` or `..`, so it can never climb out of the directory it is resolved against. */
65
65
  declare const RelativePathSchema: z.ZodString;
66
- /** Which file of an archive to read: a member path, matched against a member's whole path or its trailing segments (so `net.gml` finds `net/net.gml`), or the member whose name ends with one of a list of extensions (a format can have several, such as Pajek's `.net` and `.paj`). Either must match exactly one member when the recipe runs; macOS resource-fork members (`__MACOSX/` and `._` files) never match. */
66
+ /** Which file of an archive to read: a member path, matched against a member's whole path or its trailing segments (so `net.gml` finds `net/net.gml`), the member whose name ends with one of a list of extensions (a format can have several, such as Pajek's `.net` and `.paj`), or the member whose whole path matches a regular expression (for an archive whose instance files cannot be told from its readmes and solutions by extension). A `member` selector must match exactly one member when the recipe runs, a `members` selector at least one; macOS resource-fork members (`__MACOSX/` and `._` files) never match. */
67
67
  declare const ArchiveMemberSchema: z.ZodUnion<readonly [z.ZodObject<{
68
68
  path: z.ZodString;
69
69
  }, z.core.$strict>, z.ZodObject<{
70
70
  extensions: z.ZodArray<z.ZodString>;
71
+ }, z.core.$strict>, z.ZodObject<{
72
+ pattern: z.ZodString;
71
73
  }, z.core.$strict>]>;
72
74
  type ArchiveMember = z.infer<typeof ArchiveMemberSchema>;
73
75
  /** 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. A workbook (`xlsx`) is read as the CSV of its named sheet, with dates as ISO 8601 text, for the `csv-table` parser. */
@@ -85,6 +87,8 @@ declare const ArchiveSchema: z.ZodUnion<readonly [z.ZodObject<{
85
87
  path: z.ZodString;
86
88
  }, z.core.$strict>, z.ZodObject<{
87
89
  extensions: z.ZodArray<z.ZodString>;
90
+ }, z.core.$strict>, z.ZodObject<{
91
+ pattern: z.ZodString;
88
92
  }, z.core.$strict>]>;
89
93
  }, z.core.$strict>, z.ZodObject<{
90
94
  kind: z.ZodEnum<{
@@ -96,6 +100,8 @@ declare const ArchiveSchema: z.ZodUnion<readonly [z.ZodObject<{
96
100
  path: z.ZodString;
97
101
  }, z.core.$strict>, z.ZodObject<{
98
102
  extensions: z.ZodArray<z.ZodString>;
103
+ }, z.core.$strict>, z.ZodObject<{
104
+ pattern: z.ZodString;
99
105
  }, z.core.$strict>]>;
100
106
  }, z.core.$strict>, z.ZodObject<{
101
107
  kind: z.ZodLiteral<"xlsx">;
@@ -140,6 +146,12 @@ declare const ParserSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
140
146
  "utf-8": "utf-8";
141
147
  latin1: "latin1";
142
148
  }>;
149
+ }, z.core.$strict>, z.ZodObject<{
150
+ format: z.ZodLiteral<"customer-points">;
151
+ encoding: z.ZodEnum<{
152
+ "utf-8": "utf-8";
153
+ latin1: "latin1";
154
+ }>;
143
155
  }, z.core.$strict>, z.ZodObject<{
144
156
  format: z.ZodLiteral<"solomon">;
145
157
  encoding: z.ZodEnum<{
@@ -158,6 +170,18 @@ declare const ParserSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
158
170
  "utf-8": "utf-8";
159
171
  latin1: "latin1";
160
172
  }>;
173
+ }, z.core.$strict>, z.ZodObject<{
174
+ format: z.ZodLiteral<"tsplib">;
175
+ encoding: z.ZodEnum<{
176
+ "utf-8": "utf-8";
177
+ latin1: "latin1";
178
+ }>;
179
+ }, z.core.$strict>, z.ZodObject<{
180
+ format: z.ZodLiteral<"verolog-2019">;
181
+ encoding: z.ZodLiteral<"utf-8">;
182
+ }, z.core.$strict>, z.ZodObject<{
183
+ format: z.ZodLiteral<"vrp-rep">;
184
+ encoding: z.ZodLiteral<"utf-8">;
161
185
  }, z.core.$strict>, z.ZodObject<{
162
186
  format: z.ZodLiteral<"csv-table">;
163
187
  encoding: z.ZodEnum<{
@@ -220,6 +244,8 @@ declare const RecipeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
220
244
  path: z.ZodString;
221
245
  }, z.core.$strict>, z.ZodObject<{
222
246
  extensions: z.ZodArray<z.ZodString>;
247
+ }, z.core.$strict>, z.ZodObject<{
248
+ pattern: z.ZodString;
223
249
  }, z.core.$strict>]>;
224
250
  }, z.core.$strict>, z.ZodObject<{
225
251
  kind: z.ZodEnum<{
@@ -231,6 +257,8 @@ declare const RecipeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
231
257
  path: z.ZodString;
232
258
  }, z.core.$strict>, z.ZodObject<{
233
259
  extensions: z.ZodArray<z.ZodString>;
260
+ }, z.core.$strict>, z.ZodObject<{
261
+ pattern: z.ZodString;
234
262
  }, z.core.$strict>]>;
235
263
  }, z.core.$strict>, z.ZodObject<{
236
264
  kind: z.ZodLiteral<"xlsx">;
@@ -271,6 +299,12 @@ declare const RecipeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
271
299
  "utf-8": "utf-8";
272
300
  latin1: "latin1";
273
301
  }>;
302
+ }, z.core.$strict>, z.ZodObject<{
303
+ format: z.ZodLiteral<"customer-points">;
304
+ encoding: z.ZodEnum<{
305
+ "utf-8": "utf-8";
306
+ latin1: "latin1";
307
+ }>;
274
308
  }, z.core.$strict>, z.ZodObject<{
275
309
  format: z.ZodLiteral<"solomon">;
276
310
  encoding: z.ZodEnum<{
@@ -289,6 +323,18 @@ declare const RecipeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
289
323
  "utf-8": "utf-8";
290
324
  latin1: "latin1";
291
325
  }>;
326
+ }, z.core.$strict>, z.ZodObject<{
327
+ format: z.ZodLiteral<"tsplib">;
328
+ encoding: z.ZodEnum<{
329
+ "utf-8": "utf-8";
330
+ latin1: "latin1";
331
+ }>;
332
+ }, z.core.$strict>, z.ZodObject<{
333
+ format: z.ZodLiteral<"verolog-2019">;
334
+ encoding: z.ZodLiteral<"utf-8">;
335
+ }, z.core.$strict>, z.ZodObject<{
336
+ format: z.ZodLiteral<"vrp-rep">;
337
+ encoding: z.ZodLiteral<"utf-8">;
292
338
  }, z.core.$strict>, z.ZodObject<{
293
339
  format: z.ZodLiteral<"csv-table">;
294
340
  encoding: z.ZodEnum<{
@@ -406,6 +452,8 @@ declare const EntrySchema: z.ZodObject<{
406
452
  path: z.ZodString;
407
453
  }, z.core.$strict>, z.ZodObject<{
408
454
  extensions: z.ZodArray<z.ZodString>;
455
+ }, z.core.$strict>, z.ZodObject<{
456
+ pattern: z.ZodString;
409
457
  }, z.core.$strict>]>;
410
458
  }, z.core.$strict>, z.ZodObject<{
411
459
  kind: z.ZodEnum<{
@@ -417,6 +465,8 @@ declare const EntrySchema: z.ZodObject<{
417
465
  path: z.ZodString;
418
466
  }, z.core.$strict>, z.ZodObject<{
419
467
  extensions: z.ZodArray<z.ZodString>;
468
+ }, z.core.$strict>, z.ZodObject<{
469
+ pattern: z.ZodString;
420
470
  }, z.core.$strict>]>;
421
471
  }, z.core.$strict>, z.ZodObject<{
422
472
  kind: z.ZodLiteral<"xlsx">;
@@ -457,6 +507,12 @@ declare const EntrySchema: z.ZodObject<{
457
507
  "utf-8": "utf-8";
458
508
  latin1: "latin1";
459
509
  }>;
510
+ }, z.core.$strict>, z.ZodObject<{
511
+ format: z.ZodLiteral<"customer-points">;
512
+ encoding: z.ZodEnum<{
513
+ "utf-8": "utf-8";
514
+ latin1: "latin1";
515
+ }>;
460
516
  }, z.core.$strict>, z.ZodObject<{
461
517
  format: z.ZodLiteral<"solomon">;
462
518
  encoding: z.ZodEnum<{
@@ -475,6 +531,18 @@ declare const EntrySchema: z.ZodObject<{
475
531
  "utf-8": "utf-8";
476
532
  latin1: "latin1";
477
533
  }>;
534
+ }, z.core.$strict>, z.ZodObject<{
535
+ format: z.ZodLiteral<"tsplib">;
536
+ encoding: z.ZodEnum<{
537
+ "utf-8": "utf-8";
538
+ latin1: "latin1";
539
+ }>;
540
+ }, z.core.$strict>, z.ZodObject<{
541
+ format: z.ZodLiteral<"verolog-2019">;
542
+ encoding: z.ZodLiteral<"utf-8">;
543
+ }, z.core.$strict>, z.ZodObject<{
544
+ format: z.ZodLiteral<"vrp-rep">;
545
+ encoding: z.ZodLiteral<"utf-8">;
478
546
  }, z.core.$strict>, z.ZodObject<{
479
547
  format: z.ZodLiteral<"csv-table">;
480
548
  encoding: z.ZodEnum<{
@@ -555,6 +623,8 @@ declare const EntrySchema: z.ZodObject<{
555
623
  path: string;
556
624
  } | {
557
625
  extensions: string[];
626
+ } | {
627
+ pattern: string;
558
628
  };
559
629
  } | {
560
630
  kind: "none";
@@ -566,6 +636,8 @@ declare const EntrySchema: z.ZodObject<{
566
636
  path: string;
567
637
  } | {
568
638
  extensions: string[];
639
+ } | {
640
+ pattern: string;
569
641
  };
570
642
  } | {
571
643
  kind: "xlsx";
@@ -610,6 +682,9 @@ declare const EntrySchema: z.ZodObject<{
610
682
  } | {
611
683
  format: "pajek";
612
684
  encoding: "utf-8" | "latin1";
685
+ } | {
686
+ format: "customer-points";
687
+ encoding: "utf-8" | "latin1";
613
688
  } | {
614
689
  format: "solomon";
615
690
  encoding: "utf-8" | "latin1";
@@ -619,6 +694,15 @@ declare const EntrySchema: z.ZodObject<{
619
694
  } | {
620
695
  format: "toptw";
621
696
  encoding: "utf-8" | "latin1";
697
+ } | {
698
+ format: "tsplib";
699
+ encoding: "utf-8" | "latin1";
700
+ } | {
701
+ format: "verolog-2019";
702
+ encoding: "utf-8";
703
+ } | {
704
+ format: "vrp-rep";
705
+ encoding: "utf-8";
622
706
  };
623
707
  paging?: {
624
708
  kind: "arcgis-query";
@@ -811,6 +895,8 @@ declare const CatalogueIndexSchema: z.ZodObject<{
811
895
  path: z.ZodString;
812
896
  }, z.core.$strict>, z.ZodObject<{
813
897
  extensions: z.ZodArray<z.ZodString>;
898
+ }, z.core.$strict>, z.ZodObject<{
899
+ pattern: z.ZodString;
814
900
  }, z.core.$strict>]>;
815
901
  }, z.core.$strict>, z.ZodObject<{
816
902
  kind: z.ZodEnum<{
@@ -822,6 +908,8 @@ declare const CatalogueIndexSchema: z.ZodObject<{
822
908
  path: z.ZodString;
823
909
  }, z.core.$strict>, z.ZodObject<{
824
910
  extensions: z.ZodArray<z.ZodString>;
911
+ }, z.core.$strict>, z.ZodObject<{
912
+ pattern: z.ZodString;
825
913
  }, z.core.$strict>]>;
826
914
  }, z.core.$strict>, z.ZodObject<{
827
915
  kind: z.ZodLiteral<"xlsx">;
@@ -862,6 +950,12 @@ declare const CatalogueIndexSchema: z.ZodObject<{
862
950
  "utf-8": "utf-8";
863
951
  latin1: "latin1";
864
952
  }>;
953
+ }, z.core.$strict>, z.ZodObject<{
954
+ format: z.ZodLiteral<"customer-points">;
955
+ encoding: z.ZodEnum<{
956
+ "utf-8": "utf-8";
957
+ latin1: "latin1";
958
+ }>;
865
959
  }, z.core.$strict>, z.ZodObject<{
866
960
  format: z.ZodLiteral<"solomon">;
867
961
  encoding: z.ZodEnum<{
@@ -880,6 +974,18 @@ declare const CatalogueIndexSchema: z.ZodObject<{
880
974
  "utf-8": "utf-8";
881
975
  latin1: "latin1";
882
976
  }>;
977
+ }, z.core.$strict>, z.ZodObject<{
978
+ format: z.ZodLiteral<"tsplib">;
979
+ encoding: z.ZodEnum<{
980
+ "utf-8": "utf-8";
981
+ latin1: "latin1";
982
+ }>;
983
+ }, z.core.$strict>, z.ZodObject<{
984
+ format: z.ZodLiteral<"verolog-2019">;
985
+ encoding: z.ZodLiteral<"utf-8">;
986
+ }, z.core.$strict>, z.ZodObject<{
987
+ format: z.ZodLiteral<"vrp-rep">;
988
+ encoding: z.ZodLiteral<"utf-8">;
883
989
  }, z.core.$strict>, z.ZodObject<{
884
990
  format: z.ZodLiteral<"csv-table">;
885
991
  encoding: z.ZodEnum<{
@@ -960,6 +1066,8 @@ declare const CatalogueIndexSchema: z.ZodObject<{
960
1066
  path: string;
961
1067
  } | {
962
1068
  extensions: string[];
1069
+ } | {
1070
+ pattern: string;
963
1071
  };
964
1072
  } | {
965
1073
  kind: "none";
@@ -971,6 +1079,8 @@ declare const CatalogueIndexSchema: z.ZodObject<{
971
1079
  path: string;
972
1080
  } | {
973
1081
  extensions: string[];
1082
+ } | {
1083
+ pattern: string;
974
1084
  };
975
1085
  } | {
976
1086
  kind: "xlsx";
@@ -1015,6 +1125,9 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1015
1125
  } | {
1016
1126
  format: "pajek";
1017
1127
  encoding: "utf-8" | "latin1";
1128
+ } | {
1129
+ format: "customer-points";
1130
+ encoding: "utf-8" | "latin1";
1018
1131
  } | {
1019
1132
  format: "solomon";
1020
1133
  encoding: "utf-8" | "latin1";
@@ -1024,6 +1137,15 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1024
1137
  } | {
1025
1138
  format: "toptw";
1026
1139
  encoding: "utf-8" | "latin1";
1140
+ } | {
1141
+ format: "tsplib";
1142
+ encoding: "utf-8" | "latin1";
1143
+ } | {
1144
+ format: "verolog-2019";
1145
+ encoding: "utf-8";
1146
+ } | {
1147
+ format: "vrp-rep";
1148
+ encoding: "utf-8";
1027
1149
  };
1028
1150
  paging?: {
1029
1151
  kind: "arcgis-query";
@@ -1107,6 +1229,8 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1107
1229
  path: string;
1108
1230
  } | {
1109
1231
  extensions: string[];
1232
+ } | {
1233
+ pattern: string;
1110
1234
  };
1111
1235
  } | {
1112
1236
  kind: "none";
@@ -1118,6 +1242,8 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1118
1242
  path: string;
1119
1243
  } | {
1120
1244
  extensions: string[];
1245
+ } | {
1246
+ pattern: string;
1121
1247
  };
1122
1248
  } | {
1123
1249
  kind: "xlsx";
@@ -1162,6 +1288,9 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1162
1288
  } | {
1163
1289
  format: "pajek";
1164
1290
  encoding: "utf-8" | "latin1";
1291
+ } | {
1292
+ format: "customer-points";
1293
+ encoding: "utf-8" | "latin1";
1165
1294
  } | {
1166
1295
  format: "solomon";
1167
1296
  encoding: "utf-8" | "latin1";
@@ -1171,6 +1300,15 @@ declare const CatalogueIndexSchema: z.ZodObject<{
1171
1300
  } | {
1172
1301
  format: "toptw";
1173
1302
  encoding: "utf-8" | "latin1";
1303
+ } | {
1304
+ format: "tsplib";
1305
+ encoding: "utf-8" | "latin1";
1306
+ } | {
1307
+ format: "verolog-2019";
1308
+ encoding: "utf-8";
1309
+ } | {
1310
+ format: "vrp-rep";
1311
+ encoding: "utf-8";
1174
1312
  };
1175
1313
  paging?: {
1176
1314
  kind: "arcgis-query";
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as Parser, A as LineageSchema, B as Citation, C as CatalogueIndex, D as NamespaceNode, E as DatasetQuery, F as AliasSchema, G as Entry, H as ColumnNameSchema, I as Archive, J as IdSchema, K as EntrySchema, L as ArchiveMember, M as ManifestSchema, N as SemVerSchema, O as createCatalogue, P as parseManifest, Q as NamespaceSchema, R as ArchiveMemberSchema, S as Catalogue, T as Dataset, U as CrosswalkReference, V as CitationSchema, W as CrosswalkReferenceSchema, X as LicenceSchema, Y as Licence, Z as Namespace, _ as GraphEdgeSchema, a as CategoryTargets, at as Snapshot, b as GraphV1, c as getCategory, ct as SourceSchema, d as listCategories, dt as waybackUrl, et as ParserSchema, f as OrNode, g as GraphEdge, h as OrV1Schema, i as CategoryTarget, it as RelativePathSchema, j as Manifest, k as Lineage, l as getTarget, lt as WaybackTimestampSchema, m as OrV1, n as CategoryId, nt as Recipe, o as CountedKey, ot as SnapshotSchema, p as OrNodeSchema, q as HttpUrlSchema, r as CategoryIdSchema, rt as RecipeSchema, s as countTarget, st as Source, t as Category, tt as RESERVED_META_KEYS, u as kindOf, ut as parseEntry, v as GraphNode, w as CatalogueIndexSchema, x as GraphV1Schema, y as GraphNodeSchema, z as ArchiveSchema } from "./categories-zC2eMs6y.js";
1
+ import { $ as Parser, A as LineageSchema, B as Citation, C as CatalogueIndex, D as NamespaceNode, E as DatasetQuery, F as AliasSchema, G as Entry, H as ColumnNameSchema, I as Archive, J as IdSchema, K as EntrySchema, L as ArchiveMember, M as ManifestSchema, N as SemVerSchema, O as createCatalogue, P as parseManifest, Q as NamespaceSchema, R as ArchiveMemberSchema, S as Catalogue, T as Dataset, U as CrosswalkReference, V as CitationSchema, W as CrosswalkReferenceSchema, X as LicenceSchema, Y as Licence, Z as Namespace, _ as GraphEdgeSchema, a as CategoryTargets, at as Snapshot, b as GraphV1, c as getCategory, ct as SourceSchema, d as listCategories, dt as waybackUrl, et as ParserSchema, f as OrNode, g as GraphEdge, h as OrV1Schema, i as CategoryTarget, it as RelativePathSchema, j as Manifest, k as Lineage, l as getTarget, lt as WaybackTimestampSchema, m as OrV1, n as CategoryId, nt as Recipe, o as CountedKey, ot as SnapshotSchema, p as OrNodeSchema, q as HttpUrlSchema, r as CategoryIdSchema, rt as RecipeSchema, s as countTarget, st as Source, t as Category, tt as RESERVED_META_KEYS, u as kindOf, ut as parseEntry, v as GraphNode, w as CatalogueIndexSchema, x as GraphV1Schema, y as GraphNodeSchema, z as ArchiveSchema } from "./categories-Dwo8gSp_.js";
2
2
  import { Crosswalk } from "twindex";
3
3
  import { z } from "zod";
4
4
  //#region src/errors.d.ts
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as NativeParseError, A as toIssues, B as kindOf, C as RESERVED_META_KEYS, D as SourceSchema, E as SnapshotSchema, G as GraphNodeSchema, H as OrNodeSchema, I as CategoryIdSchema, J as ArchiveError, K as GraphV1Schema, L as countTarget, M as NAME_SEPARATOR, N as groupsOf, O as WaybackTimestampSchema, P as namesOf, Q as KeepsetError, R as getCategory, S as ParserSchema, T as RelativePathSchema, U as OrV1Schema, V as listCategories, W as GraphEdgeSchema, X as DatasetAmbiguousError, Y as CatalogueSyntaxError, Z as DatasetNotFoundError, _ as EntrySchema, a as CatalogueIndexSchema, b as LicenceSchema, c as ManifestSchema, d as AliasSchema, et as RecipeError, f as ArchiveMemberSchema, g as CrosswalkReferenceSchema, h as ColumnNameSchema, i as listNamespaces, j as waybackUrl, k as parseEntry, l as SemVerSchema, m as CitationSchema, n as getManifest, o as createCatalogue, p as ArchiveSchema, q as JsonScalarSchema, r as listDatasets, s as LineageSchema, t as getDataset, tt as UnknownCategoryError, u as parseManifest, v as HttpUrlSchema, w as RecipeSchema, x as NamespaceSchema, y as IdSchema, z as getTarget } from "./bundled-Dkvod55t.js";
1
+ import { $ as NativeParseError, A as toIssues, B as kindOf, C as RESERVED_META_KEYS, D as SourceSchema, E as SnapshotSchema, G as GraphNodeSchema, H as OrNodeSchema, I as CategoryIdSchema, J as ArchiveError, K as GraphV1Schema, L as countTarget, M as NAME_SEPARATOR, N as groupsOf, O as WaybackTimestampSchema, P as namesOf, Q as KeepsetError, R as getCategory, S as ParserSchema, T as RelativePathSchema, U as OrV1Schema, V as listCategories, W as GraphEdgeSchema, X as DatasetAmbiguousError, Y as CatalogueSyntaxError, Z as DatasetNotFoundError, _ as EntrySchema, a as CatalogueIndexSchema, b as LicenceSchema, c as ManifestSchema, d as AliasSchema, et as RecipeError, f as ArchiveMemberSchema, g as CrosswalkReferenceSchema, h as ColumnNameSchema, i as listNamespaces, j as waybackUrl, k as parseEntry, l as SemVerSchema, m as CitationSchema, n as getManifest, o as createCatalogue, p as ArchiveSchema, q as JsonScalarSchema, r as listDatasets, s as LineageSchema, t as getDataset, tt as UnknownCategoryError, u as parseManifest, v as HttpUrlSchema, w as RecipeSchema, x as NamespaceSchema, y as IdSchema, z as getTarget } from "./bundled-qRweq3SB.js";
2
2
  import { validateCrosswalk } from "twindex";
3
3
  //#region src/serialise.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { G as Entry, T as Dataset, at as Snapshot, i as CategoryTarget, st as Source } from "../categories-zC2eMs6y.js";
1
+ import { G as Entry, T as Dataset, at as Snapshot, i as CategoryTarget, st as Source } from "../categories-Dwo8gSp_.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: {