keepset 0.15.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -63,7 +63,7 @@ The catalogue itself is a manifest (`catalogue/manifest.json`: id, version, repo
63
63
 
64
64
  ## Categories and normalisation targets
65
65
 
66
- A category names a normalisation target: the shape every entry in that category resolves to, whatever its native shape. `graph/v1` is the first, `{ meta, nodes, edges }` with unique node ids and edges whose endpoints name nodes, seeded from 823 graph datasets surveyed from about forty upstream collections (SuiteSparse, Netzschleuder, SNAP, KONECT, OGB and others). `or/v1` is the second: `{ meta, nodes }`, an operations-research instance as the nodes it offers to visit, each flat with optional coordinates, prize, prize probability, duration, travel time, skill, territory, lifecycle status and times, and deadline, read from tabular sources by the `csv-table` parser. Its entries come from a survey of open operations-research datasets, imported with a curation that records, for each source, what its download gives and how its columns map onto the node; a dataset whose source has no usable table yet is imported without a recipe and says why. A new category starts by defining its target schema in `src/targets/` and registering it in the category registry; an entry cannot name a category that does not exist. The statically generated site renders every entry with schema.org Dataset JSON-LD, so the catalogue surfaces in the dataset discovery layers.
66
+ A category names a normalisation target: the shape every entry in that category resolves to, whatever its native shape. `graph/v1` is `{ meta, nodes, edges }` with unique node ids and edges whose endpoints name nodes; its entries are graph datasets taken from upstream collections such as SuiteSparse, Netzschleuder, SNAP, KONECT and OGB. `or/v1` is `{ meta, nodes }`, an operations-research instance as the nodes it offers to visit, each flat with optional coordinates, prize, prize probability, duration, travel time, skill, territory, lifecycle status and times, and deadline, read from tabular sources by the `csv-table` parser. Its entries come from a survey of open operations-research datasets, imported with a curation that records, for each source, what its download gives and how its columns map onto the node; a dataset whose source has no usable table is imported without a recipe and says why. A new category starts by defining its target schema in `src/targets/` and registering it in the category registry; an entry cannot name a category that does not exist. The statically generated site renders every entry with schema.org Dataset JSON-LD, so the catalogue surfaces in the dataset discovery layers.
67
67
 
68
68
  ## Licensing
69
69
 
@@ -78,7 +78,9 @@ Node 22 or later, pnpm, ESM only. See [CONTRIBUTING.md](CONTRIBUTING.md) for add
78
78
  | `pnpm lint` / `pnpm lint:check` | ESLint, fixing and check-only |
79
79
  | `pnpm typecheck` | `tsc` over the library, CLI and site programs |
80
80
  | `pnpm test` | Vitest, tests colocated as `*.unit.test.ts` and `*.e2e.test.ts` |
81
- | `pnpm build` | tsdown into `dist` and `dist-cli`, then the JSON Schema generation and the site build |
81
+ | `pnpm build` | tsdown into `dist` and `dist-cli`, after generating the bundled catalogue, then the JSON Schema generation |
82
+ | `pnpm site` | The static site, built from the package's own catalogue |
83
+ | `pnpm seed:check` | Checks that the committed seed entries and reports are exactly what each import produces from its committed source; `seed:import:graph` and `seed:import:or` regenerate them |
82
84
 
83
85
  `CLAUDE.md` and `AGENTS.md` are symlinks to this file.
84
86
 
@@ -856,7 +856,7 @@ var catalogue_default = {
856
856
  "id": "keepset",
857
857
  "name": "keepset",
858
858
  "description": "The keepset catalogue: datasets with machine-readable recipes that fetch each one and normalise it into its category's target shape.",
859
- "version": "1.3.0",
859
+ "version": "1.4.0",
860
860
  "repository": "https://github.com/Mearman/keepset",
861
861
  "namespaceAliases": {
862
862
  "networkrepository": ["nr"],
@@ -3240,7 +3240,7 @@ var catalogue_default = {
3240
3240
  "encoding": "utf-8",
3241
3241
  "delimiter": "comma",
3242
3242
  "skipLines": 0,
3243
- "idColumn": "ID",
3243
+ "idColumn": null,
3244
3244
  "numericColumns": [{
3245
3245
  "column": "Latitude",
3246
3246
  "factor": 1
@@ -3301,6 +3301,11 @@ var catalogue_default = {
3301
3301
  }
3302
3302
  ],
3303
3303
  "oneWay": [
3304
+ {
3305
+ "op": "drop",
3306
+ "from": "nodes[].ID",
3307
+ "direction": "encode"
3308
+ },
3304
3309
  {
3305
3310
  "op": "drop",
3306
3311
  "from": "nodes[].Application_Number",
@@ -5438,7 +5443,7 @@ var catalogue_default = {
5438
5443
  "retrieved": "2026-10-19",
5439
5444
  "status": "live"
5440
5445
  }, {
5441
- "url": "https://www.dallasopendata.com/resource/xy7j-y59g.csv",
5446
+ "url": "https://www.dallasopendata.com/resource/xy7j-y59g.csv?%24limit=1000000",
5442
5447
  "retrieved": "2026-10-19",
5443
5448
  "status": "live"
5444
5449
  }],
@@ -5740,7 +5745,7 @@ var catalogue_default = {
5740
5745
  "retrieved": "2026-10-19",
5741
5746
  "status": "live"
5742
5747
  }, {
5743
- "url": "https://www.dallasopendata.com/resource/skju-bfp8.csv",
5748
+ "url": "https://www.dallasopendata.com/resource/skju-bfp8.csv?%24limit=1000000",
5744
5749
  "retrieved": "2026-10-19",
5745
5750
  "status": "live"
5746
5751
  }],
@@ -5755,7 +5760,7 @@ var catalogue_default = {
5755
5760
  "encoding": "utf-8",
5756
5761
  "delimiter": "comma",
5757
5762
  "skipLines": 0,
5758
- "idColumn": "id",
5763
+ "idColumn": null,
5759
5764
  "numericColumns": [{
5760
5765
  "column": "total_value",
5761
5766
  "factor": 1
@@ -5798,6 +5803,11 @@ var catalogue_default = {
5798
5803
  }
5799
5804
  ],
5800
5805
  "oneWay": [
5806
+ {
5807
+ "op": "drop",
5808
+ "from": "nodes[].column_1",
5809
+ "direction": "encode"
5810
+ },
5801
5811
  {
5802
5812
  "op": "drop",
5803
5813
  "from": "nodes[].incident",
@@ -9706,7 +9716,7 @@ var catalogue_default = {
9706
9716
  "retrieved": "2026-10-19",
9707
9717
  "status": "live"
9708
9718
  }, {
9709
- "url": "https://data.lacity.org/resource/2u8b-eyuu.csv",
9719
+ "url": "https://data.lacity.org/resource/2u8b-eyuu.csv?%24limit=1000000",
9710
9720
  "retrieved": "2026-10-19",
9711
9721
  "status": "live"
9712
9722
  }],
@@ -9834,109 +9844,10 @@ var catalogue_default = {
9834
9844
  },
9835
9845
  "citations": [],
9836
9846
  "recipe": {
9837
- "status": "fetchable",
9838
- "source": 1,
9839
- "archive": { "kind": "none" },
9840
- "parser": {
9841
- "format": "csv-table",
9842
- "encoding": "latin1",
9843
- "delimiter": "semicolon",
9844
- "skipLines": 0,
9845
- "idColumn": null,
9846
- "numericColumns": [{
9847
- "column": "IMP_BOL",
9848
- "factor": 1
9849
- }]
9850
- }
9851
- },
9852
- "crosswalk": {
9853
- "source": "csv-table",
9854
- "target": "or/v1",
9855
- "rules": [
9856
- {
9857
- "op": "move",
9858
- "from": "meta",
9859
- "to": "meta"
9860
- },
9861
- {
9862
- "op": "move",
9863
- "from": "nodes[].id",
9864
- "to": "nodes[].id"
9865
- },
9866
- {
9867
- "op": "move",
9868
- "from": "nodes[].IMP_BOL",
9869
- "to": "nodes[].prize"
9870
- },
9871
- {
9872
- "op": "move",
9873
- "from": "nodes[].HECHO_BOL",
9874
- "to": "nodes[].skill"
9875
- }
9876
- ],
9877
- "oneWay": [
9878
- {
9879
- "op": "drop",
9880
- "from": "nodes[].CALIFICACION",
9881
- "direction": "encode"
9882
- },
9883
- {
9884
- "op": "drop",
9885
- "from": "nodes[].LUGAR",
9886
- "direction": "encode"
9887
- },
9888
- {
9889
- "op": "drop",
9890
- "from": "nodes[].MES",
9891
- "direction": "encode"
9892
- },
9893
- {
9894
- "op": "drop",
9895
- "from": "nodes[].ANIO",
9896
- "direction": "encode"
9897
- },
9898
- {
9899
- "op": "drop",
9900
- "from": "nodes[].HORA",
9901
- "direction": "encode"
9902
- },
9903
- {
9904
- "op": "drop",
9905
- "from": "nodes[].DESCUENTO",
9906
- "direction": "encode"
9907
- },
9908
- {
9909
- "op": "drop",
9910
- "from": "nodes[].PUNTOS",
9911
- "direction": "encode"
9912
- },
9913
- {
9914
- "op": "drop",
9915
- "from": "nodes[].DENUNCIANTE",
9916
- "direction": "encode"
9917
- },
9918
- {
9919
- "op": "drop",
9920
- "from": "nodes[].VEL_LIMITE",
9921
- "direction": "encode"
9922
- },
9923
- {
9924
- "op": "drop",
9925
- "from": "nodes[].VEL_CIRCULA",
9926
- "direction": "encode"
9927
- },
9928
- {
9929
- "op": "drop",
9930
- "from": "nodes[].COORDENADA_X",
9931
- "direction": "encode"
9932
- },
9933
- {
9934
- "op": "drop",
9935
- "from": "nodes[].COORDENADA_Y",
9936
- "direction": "encode"
9937
- }
9938
- ]
9847
+ "status": "not-fetchable",
9848
+ "reason": "The CSV is not valid RFC 4180: a quote opens inside an unquoted field (first at line 183433), so the csv-table parser refuses the file."
9939
9849
  },
9850
+ "crosswalk": { "file": "crosswalks/or-v1/nodes.json" },
9940
9851
  "expectedCounts": {},
9941
9852
  "properties": { "surveyId": "or-76" }
9942
9853
  },
@@ -10519,7 +10430,7 @@ var catalogue_default = {
10519
10430
  "encoding": "utf-8",
10520
10431
  "delimiter": "comma",
10521
10432
  "skipLines": 0,
10522
- "idColumn": "Record_ID",
10433
+ "idColumn": null,
10523
10434
  "numericColumns": [
10524
10435
  {
10525
10436
  "column": "Latitude",
@@ -10592,6 +10503,11 @@ var catalogue_default = {
10592
10503
  }
10593
10504
  ],
10594
10505
  "oneWay": [
10506
+ {
10507
+ "op": "drop",
10508
+ "from": "nodes[].Record_ID",
10509
+ "direction": "encode"
10510
+ },
10595
10511
  {
10596
10512
  "op": "drop",
10597
10513
  "from": "nodes[].Permit_Number",
@@ -10904,279 +10820,10 @@ var catalogue_default = {
10904
10820
  "licence": { "kind": "unrecorded" },
10905
10821
  "citations": [],
10906
10822
  "recipe": {
10907
- "status": "fetchable",
10908
- "source": 1,
10909
- "archive": { "kind": "none" },
10910
- "parser": {
10911
- "format": "csv-table",
10912
- "encoding": "utf-8",
10913
- "delimiter": "comma",
10914
- "skipLines": 0,
10915
- "idColumn": null,
10916
- "numericColumns": [
10917
- {
10918
- "column": "latitude",
10919
- "factor": 1
10920
- },
10921
- {
10922
- "column": "longitude",
10923
- "factor": 1
10924
- },
10925
- {
10926
- "column": "response_time_in_seconds",
10927
- "factor": 1
10928
- }
10929
- ]
10930
- }
10931
- },
10932
- "crosswalk": {
10933
- "source": "csv-table",
10934
- "target": "or/v1",
10935
- "rules": [
10936
- {
10937
- "op": "move",
10938
- "from": "meta",
10939
- "to": "meta"
10940
- },
10941
- {
10942
- "op": "move",
10943
- "from": "nodes[].id",
10944
- "to": "nodes[].id"
10945
- },
10946
- {
10947
- "op": "move",
10948
- "from": "nodes[].clear_datetime",
10949
- "to": "nodes[].closed"
10950
- },
10951
- {
10952
- "op": "move",
10953
- "from": "nodes[].latitude",
10954
- "to": "nodes[].lat"
10955
- },
10956
- {
10957
- "op": "move",
10958
- "from": "nodes[].longitude",
10959
- "to": "nodes[].lon"
10960
- },
10961
- {
10962
- "op": "move",
10963
- "from": "nodes[].call_received_datetime",
10964
- "to": "nodes[].opened"
10965
- },
10966
- {
10967
- "op": "move",
10968
- "from": "nodes[].reason_category",
10969
- "to": "nodes[].skill"
10970
- },
10971
- {
10972
- "op": "move",
10973
- "from": "nodes[].city",
10974
- "to": "nodes[].territory"
10975
- },
10976
- {
10977
- "op": "move",
10978
- "from": "nodes[].response_time_in_seconds",
10979
- "to": "nodes[].travelTime"
10980
- }
10981
- ],
10982
- "oneWay": [
10983
- {
10984
- "op": "drop",
10985
- "from": "nodes[].reason_subcategory",
10986
- "direction": "encode"
10987
- },
10988
- {
10989
- "op": "drop",
10990
- "from": "nodes[].arrive_datetime",
10991
- "direction": "encode"
10992
- },
10993
- {
10994
- "op": "drop",
10995
- "from": "nodes[].incident_type",
10996
- "direction": "encode"
10997
- },
10998
- {
10999
- "op": "drop",
11000
- "from": "nodes[].incident_type_code",
11001
- "direction": "encode"
11002
- },
11003
- {
11004
- "op": "drop",
11005
- "from": "nodes[].incident_date",
11006
- "direction": "encode"
11007
- },
11008
- {
11009
- "op": "drop",
11010
- "from": "nodes[].incident_calendar_year",
11011
- "direction": "encode"
11012
- },
11013
- {
11014
- "op": "drop",
11015
- "from": "nodes[].incident_fiscal_year",
11016
- "direction": "encode"
11017
- },
11018
- {
11019
- "op": "drop",
11020
- "from": "nodes[].incident_week",
11021
- "direction": "encode"
11022
- },
11023
- {
11024
- "op": "drop",
11025
- "from": "nodes[].incident_month",
11026
- "direction": "encode"
11027
- },
11028
- {
11029
- "op": "drop",
11030
- "from": "nodes[].jurisdiction",
11031
- "direction": "encode"
11032
- },
11033
- {
11034
- "op": "drop",
11035
- "from": "nodes[].call_handling_time_in_seconds",
11036
- "direction": "encode"
11037
- },
11038
- {
11039
- "op": "drop",
11040
- "from": "nodes[].valley_benchmark_cities_vbc_response_time_in_seconds",
11041
- "direction": "encode"
11042
- },
11043
- {
11044
- "op": "drop",
11045
- "from": "nodes[].call_handling_time_in_minutes",
11046
- "direction": "encode"
11047
- },
11048
- {
11049
- "op": "drop",
11050
- "from": "nodes[].response_time_in_minutes",
11051
- "direction": "encode"
11052
- },
11053
- {
11054
- "op": "drop",
11055
- "from": "nodes[].travel_time_in_minutes",
11056
- "direction": "encode"
11057
- },
11058
- {
11059
- "op": "drop",
11060
- "from": "nodes[].commit_time_in_seconds",
11061
- "direction": "encode"
11062
- },
11063
- {
11064
- "op": "drop",
11065
- "from": "nodes[].code_3_response_times_in_minutes_by_calendar_year_at_90th_percentile",
11066
- "direction": "encode"
11067
- },
11068
- {
11069
- "op": "drop",
11070
- "from": "nodes[].code_3_response_times_in_minutes_by_calendar_year_at_75th_percentile",
11071
- "direction": "encode"
11072
- },
11073
- {
11074
- "op": "drop",
11075
- "from": "nodes[].code_3_response_times_in_minutes_by_calendar_year_at_50th_percentile",
11076
- "direction": "encode"
11077
- },
11078
- {
11079
- "op": "drop",
11080
- "from": "nodes[].code_3_response_times_in_seconds_by_fiscal_year_at_50th_percentile_for_valley_benchmark_cities_reporting",
11081
- "direction": "encode"
11082
- },
11083
- {
11084
- "op": "drop",
11085
- "from": "nodes[].response_time_45_minutes_flag",
11086
- "direction": "encode"
11087
- },
11088
- {
11089
- "op": "drop",
11090
- "from": "nodes[].location",
11091
- "direction": "encode"
11092
- },
11093
- {
11094
- "op": "drop",
11095
- "from": "nodes[].zip",
11096
- "direction": "encode"
11097
- },
11098
- {
11099
- "op": "drop",
11100
- "from": "nodes[].state",
11101
- "direction": "encode"
11102
- },
11103
- {
11104
- "op": "drop",
11105
- "from": "nodes[].notify_datetime",
11106
- "direction": "encode"
11107
- },
11108
- {
11109
- "op": "drop",
11110
- "from": "nodes[].notify_date_month_name",
11111
- "direction": "encode"
11112
- },
11113
- {
11114
- "op": "drop",
11115
- "from": "nodes[].roll_datetime",
11116
- "direction": "encode"
11117
- },
11118
- {
11119
- "op": "drop",
11120
- "from": "nodes[].incident_number",
11121
- "direction": "encode"
11122
- },
11123
- {
11124
- "op": "drop",
11125
- "from": "nodes[].street_name",
11126
- "direction": "encode"
11127
- },
11128
- {
11129
- "op": "drop",
11130
- "from": "nodes[].street_type",
11131
- "direction": "encode"
11132
- },
11133
- {
11134
- "op": "drop",
11135
- "from": "nodes[].first_response_unit_count",
11136
- "direction": "encode"
11137
- },
11138
- {
11139
- "op": "drop",
11140
- "from": "nodes[].error_with_valley_benchmark_cities_time",
11141
- "direction": "encode"
11142
- },
11143
- {
11144
- "op": "drop",
11145
- "from": "nodes[].error_with_response_time",
11146
- "direction": "encode"
11147
- },
11148
- {
11149
- "op": "drop",
11150
- "from": "nodes[].error_with_travel_time",
11151
- "direction": "encode"
11152
- },
11153
- {
11154
- "op": "drop",
11155
- "from": "nodes[].error_with_call_handling_time",
11156
- "direction": "encode"
11157
- },
11158
- {
11159
- "op": "drop",
11160
- "from": "nodes[].first_response_priority_code",
11161
- "direction": "encode"
11162
- },
11163
- {
11164
- "op": "drop",
11165
- "from": "nodes[].time_of_day",
11166
- "direction": "encode"
11167
- },
11168
- {
11169
- "op": "drop",
11170
- "from": "nodes[].property_use",
11171
- "direction": "encode"
11172
- },
11173
- {
11174
- "op": "drop",
11175
- "from": "nodes[].reason_code_listing_from_cad",
11176
- "direction": "encode"
11177
- }
11178
- ]
10823
+ "status": "not-fetchable",
10824
+ "reason": "Reading the whole table into memory exhausts Node's default heap: it has several hundred thousand rows of dozens of columns, and a fetch of it was killed out of memory."
11179
10825
  },
10826
+ "crosswalk": { "file": "crosswalks/or-v1/nodes.json" },
11180
10827
  "expectedCounts": {},
11181
10828
  "properties": { "surveyId": "or-110" }
11182
10829
  },
@@ -11236,7 +10883,7 @@ var catalogue_default = {
11236
10883
  "retrieved": "2026-10-19",
11237
10884
  "status": "live"
11238
10885
  }, {
11239
- "url": "https://citydata.mesaaz.gov/resource/ay68-xuca.csv",
10886
+ "url": "https://citydata.mesaaz.gov/resource/ay68-xuca.csv?%24limit=1000000",
11240
10887
  "retrieved": "2026-10-19",
11241
10888
  "status": "live"
11242
10889
  }],
@@ -11939,7 +11586,7 @@ var catalogue_default = {
11939
11586
  "retrieved": "2026-10-19",
11940
11587
  "status": "live"
11941
11588
  }, {
11942
- "url": "https://data.montgomerycountymd.gov/resource/bw2r-araf.csv",
11589
+ "url": "https://data.montgomerycountymd.gov/resource/bw2r-araf.csv?%24limit=1000000",
11943
11590
  "retrieved": "2026-10-19",
11944
11591
  "status": "live"
11945
11592
  }],
@@ -15561,7 +15208,7 @@ var catalogue_default = {
15561
15208
  "retrieved": "2026-10-19",
15562
15209
  "status": "live"
15563
15210
  }, {
15564
- "url": "https://data.nola.gov/resource/44ct-56tr.csv",
15211
+ "url": "https://data.nola.gov/resource/44ct-56tr.csv?%24limit=1000000",
15565
15212
  "retrieved": "2026-10-19",
15566
15213
  "status": "live"
15567
15214
  }],
@@ -16435,7 +16082,7 @@ var catalogue_default = {
16435
16082
  "retrieved": "2026-10-19",
16436
16083
  "status": "live"
16437
16084
  }, {
16438
- "url": "https://data.norfolk.gov/resource/qzfe-wj25.csv",
16085
+ "url": "https://data.norfolk.gov/resource/qzfe-wj25.csv?%24limit=1000000",
16439
16086
  "retrieved": "2026-10-19",
16440
16087
  "status": "live"
16441
16088
  }],
@@ -18439,7 +18086,7 @@ var catalogue_default = {
18439
18086
  "retrieved": "2026-10-19",
18440
18087
  "status": "live"
18441
18088
  }, {
18442
- "url": "https://data.cityofnewyork.us/resource/6z8x-wfk4.csv",
18089
+ "url": "https://data.cityofnewyork.us/resource/6z8x-wfk4.csv?%24limit=1000000",
18443
18090
  "retrieved": "2026-10-19",
18444
18091
  "status": "live"
18445
18092
  }],
@@ -19145,7 +18792,7 @@ var catalogue_default = {
19145
18792
  "retrieved": "2026-10-19",
19146
18793
  "status": "live"
19147
18794
  }, {
19148
- "url": "https://data.cityofnewyork.us/resource/xnfm-u3k5.csv",
18795
+ "url": "https://data.cityofnewyork.us/resource/xnfm-u3k5.csv?%24limit=1000000",
19149
18796
  "retrieved": "2026-10-19",
19150
18797
  "status": "live"
19151
18798
  }],
@@ -59225,7 +58872,7 @@ var catalogue_default = {
59225
58872
  "retrieved": "2026-10-19",
59226
58873
  "status": "live"
59227
58874
  }, {
59228
- "url": "https://data.wa.gov/resource/m8qx-ubtq.csv",
58875
+ "url": "https://data.wa.gov/resource/m8qx-ubtq.csv?%24limit=1000000",
59229
58876
  "retrieved": "2026-10-19",
59230
58877
  "status": "live"
59231
58878
  }],
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-DFGpicBt.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-DPEAZdj9.js";
2
2
  import { validateCrosswalk } from "twindex";
3
3
  //#region src/serialise.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { $ as NativeParseError, F as getOwn, J as ArchiveError, L as countTarget, Q as KeepsetError, et as RecipeError, t as getDataset, z as getTarget } from "../bundled-DFGpicBt.js";
1
+ import { $ as NativeParseError, F as getOwn, J as ArchiveError, L as countTarget, Q as KeepsetError, et as RecipeError, t as getDataset, z as getTarget } from "../bundled-DPEAZdj9.js";
2
2
  import { RoundTripMismatchError, assertRoundTrip, encode } from "twindex";
3
3
  import { createHash } from "node:crypto";
4
4
  import { gunzipSync } from "node:zlib";
@@ -4,7 +4,7 @@ import { KeepsetError, NAME_SEPARATOR, countTarget, getDataset, listDatasets, li
4
4
  import { fetchDataset, roundTripDataset } from "keepset/node";
5
5
  import { parseArgs } from "node:util";
6
6
  //#region package.json
7
- var version = "0.15.0";
7
+ var version = "0.16.1";
8
8
  const usage = `Usage: keepset <command> [options]
9
9
 
10
10
  Commands:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "keepset",
3
3
  "description": "Library, CLI and statically generated catalogue for dataset fetch-and-normalise recipes",
4
- "version": "0.15.0",
4
+ "version": "0.16.1",
5
5
  "bin": {
6
6
  "keepset": "./dist-cli/keepset.mjs"
7
7
  },
@@ -1 +1 @@
1
- {"$defs":{"Crosswalk":{"$ref":"https://cdn.jsdelivr.net/npm/twindex@0.1.4/schemas/twindex.schema.json"},"Entry":{"additionalProperties":false,"properties":{"aliases":{"items":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*(?:\\/[A-Za-z0-9][A-Za-z0-9._-]*)*$","type":"string"},"minItems":1,"type":"array"},"category":{"enum":["graph/v1","or/v1"],"type":"string"},"citations":{"items":{"additionalProperties":false,"properties":{"doi":{"pattern":"^10\\.\\d{4,9}\\/\\S+$","type":"string"},"text":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["text"],"type":"object"},"type":"array"},"crosswalk":{"anyOf":[{"$ref":"#/$defs/Crosswalk"},{"additionalProperties":false,"properties":{"file":{"type":"string"}},"required":["file"],"type":"object"}]},"description":{"minLength":1,"type":"string"},"domain":{"minLength":1,"type":"string"},"expectedCounts":{"additionalProperties":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"propertyNames":{"pattern":"^[A-Za-z][A-Za-z0-9]*$","type":"string"},"type":"object"},"id":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"licence":{"oneOf":[{"additionalProperties":false,"properties":{"id":{"pattern":"^[A-Za-z0-9][A-Za-z0-9.+-]*$","type":"string"},"kind":{"const":"spdx","type":"string"}},"required":["kind","id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"custom","type":"string"},"name":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["kind","name","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"unrecorded","type":"string"}},"required":["kind"],"type":"object"}]},"name":{"minLength":1,"type":"string"},"namespace":{"items":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"minItems":1,"type":"array"},"properties":{"additionalProperties":{"type":["string","number","boolean","null"]},"propertyNames":{"pattern":"^[A-Za-z][A-Za-z0-9]*$","type":"string"},"type":"object"},"recipe":{"oneOf":[{"additionalProperties":false,"properties":{"archive":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"none","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"gzip","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"zip","type":"string"},"member":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"extensions":{"items":{"pattern":"^\\.[A-Za-z0-9][A-Za-z0-9.]*$","type":"string"},"minItems":1,"type":"array"}},"required":["extensions"],"type":"object"}]}},"required":["kind","member"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"tar","type":"string"},"member":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"extensions":{"items":{"pattern":"^\\.[A-Za-z0-9][A-Za-z0-9.]*$","type":"string"},"minItems":1,"type":"array"}},"required":["extensions"],"type":"object"}]}},"required":["kind","member"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"tar.gz","type":"string"},"member":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"extensions":{"items":{"pattern":"^\\.[A-Za-z0-9][A-Za-z0-9.]*$","type":"string"},"minItems":1,"type":"array"}},"required":["extensions"],"type":"object"}]}},"required":["kind","member"],"type":"object"}]},"parser":{"oneOf":[{"additionalProperties":false,"properties":{"commentPrefixes":{"items":{"minLength":1,"type":"string"},"type":"array"},"delimiter":{"enum":["detect","whitespace","tab","comma","space"],"type":"string"},"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"edge-list","type":"string"},"skipLines":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sourceColumn":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"targetColumn":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["format","encoding","delimiter","skipLines","commentPrefixes","sourceColumn","targetColumn"],"type":"object"},{"additionalProperties":false,"properties":{"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"matrix-market","type":"string"}},"required":["format","encoding"],"type":"object"},{"additionalProperties":false,"properties":{"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"gml","type":"string"}},"required":["format","encoding"],"type":"object"},{"additionalProperties":false,"properties":{"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"pajek","type":"string"}},"required":["format","encoding"],"type":"object"},{"additionalProperties":false,"properties":{"delimiter":{"enum":["comma","tab","semicolon"],"type":"string"},"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"csv-table","type":"string"},"idColumn":{"anyOf":[{"pattern":"^[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?$","type":"string"},{"type":"null"}]},"numericColumns":{"items":{"additionalProperties":false,"properties":{"column":{"pattern":"^[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?$","type":"string"},"factor":{"exclusiveMinimum":0,"type":"number"}},"required":["column","factor"],"type":"object"},"type":"array"},"skipLines":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["format","encoding","delimiter","skipLines","idColumn","numericColumns"],"type":"object"}]},"source":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"const":"fetchable","type":"string"}},"required":["status","source","archive","parser"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"minLength":1,"type":"string"},"status":{"const":"not-fetchable","type":"string"}},"required":["status","reason"],"type":"object"}]},"sources":{"items":{"additionalProperties":false,"properties":{"retrieved":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"snapshot":{"additionalProperties":false,"properties":{"timestamp":{"pattern":"^\\d{8}(?:\\d{6})?$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","timestamp"],"type":"object"},"status":{"enum":["live","dead"],"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","retrieved","status"],"type":"object"},"minItems":1,"type":"array"},"tags":{"items":{"minLength":1,"type":"string"},"type":"array"}},"required":["id","name","tags","category","sources","licence","citations","recipe","crosswalk","expectedCounts","properties"],"type":"object"}},"$id":"https://cdn.jsdelivr.net/npm/keepset@0.15.0/schemas/entry.schema.json","$ref":"#/$defs/Entry","$schema":"https://json-schema.org/draft/2020-12/schema"}
1
+ {"$defs":{"Crosswalk":{"$ref":"https://cdn.jsdelivr.net/npm/twindex@0.1.4/schemas/twindex.schema.json"},"Entry":{"additionalProperties":false,"properties":{"aliases":{"items":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*(?:\\/[A-Za-z0-9][A-Za-z0-9._-]*)*$","type":"string"},"minItems":1,"type":"array"},"category":{"enum":["graph/v1","or/v1"],"type":"string"},"citations":{"items":{"additionalProperties":false,"properties":{"doi":{"pattern":"^10\\.\\d{4,9}\\/\\S+$","type":"string"},"text":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["text"],"type":"object"},"type":"array"},"crosswalk":{"anyOf":[{"$ref":"#/$defs/Crosswalk"},{"additionalProperties":false,"properties":{"file":{"type":"string"}},"required":["file"],"type":"object"}]},"description":{"minLength":1,"type":"string"},"domain":{"minLength":1,"type":"string"},"expectedCounts":{"additionalProperties":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"propertyNames":{"pattern":"^[A-Za-z][A-Za-z0-9]*$","type":"string"},"type":"object"},"id":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"licence":{"oneOf":[{"additionalProperties":false,"properties":{"id":{"pattern":"^[A-Za-z0-9][A-Za-z0-9.+-]*$","type":"string"},"kind":{"const":"spdx","type":"string"}},"required":["kind","id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"custom","type":"string"},"name":{"minLength":1,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["kind","name","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"unrecorded","type":"string"}},"required":["kind"],"type":"object"}]},"name":{"minLength":1,"type":"string"},"namespace":{"items":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"minItems":1,"type":"array"},"properties":{"additionalProperties":{"type":["string","number","boolean","null"]},"propertyNames":{"pattern":"^[A-Za-z][A-Za-z0-9]*$","type":"string"},"type":"object"},"recipe":{"oneOf":[{"additionalProperties":false,"properties":{"archive":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"none","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"gzip","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"zip","type":"string"},"member":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"extensions":{"items":{"pattern":"^\\.[A-Za-z0-9][A-Za-z0-9.]*$","type":"string"},"minItems":1,"type":"array"}},"required":["extensions"],"type":"object"}]}},"required":["kind","member"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"tar","type":"string"},"member":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"extensions":{"items":{"pattern":"^\\.[A-Za-z0-9][A-Za-z0-9.]*$","type":"string"},"minItems":1,"type":"array"}},"required":["extensions"],"type":"object"}]}},"required":["kind","member"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"tar.gz","type":"string"},"member":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"}},"required":["path"],"type":"object"},{"additionalProperties":false,"properties":{"extensions":{"items":{"pattern":"^\\.[A-Za-z0-9][A-Za-z0-9.]*$","type":"string"},"minItems":1,"type":"array"}},"required":["extensions"],"type":"object"}]}},"required":["kind","member"],"type":"object"}]},"parser":{"oneOf":[{"additionalProperties":false,"properties":{"commentPrefixes":{"items":{"minLength":1,"type":"string"},"type":"array"},"delimiter":{"enum":["detect","whitespace","tab","comma","space"],"type":"string"},"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"edge-list","type":"string"},"skipLines":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sourceColumn":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"targetColumn":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["format","encoding","delimiter","skipLines","commentPrefixes","sourceColumn","targetColumn"],"type":"object"},{"additionalProperties":false,"properties":{"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"matrix-market","type":"string"}},"required":["format","encoding"],"type":"object"},{"additionalProperties":false,"properties":{"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"gml","type":"string"}},"required":["format","encoding"],"type":"object"},{"additionalProperties":false,"properties":{"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"pajek","type":"string"}},"required":["format","encoding"],"type":"object"},{"additionalProperties":false,"properties":{"delimiter":{"enum":["comma","tab","semicolon"],"type":"string"},"encoding":{"enum":["utf-8","latin1"],"type":"string"},"format":{"const":"csv-table","type":"string"},"idColumn":{"anyOf":[{"pattern":"^[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?$","type":"string"},{"type":"null"}]},"numericColumns":{"items":{"additionalProperties":false,"properties":{"column":{"pattern":"^[A-Za-z](?:[A-Za-z0-9_]*[A-Za-z0-9])?$","type":"string"},"factor":{"exclusiveMinimum":0,"type":"number"}},"required":["column","factor"],"type":"object"},"type":"array"},"skipLines":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["format","encoding","delimiter","skipLines","idColumn","numericColumns"],"type":"object"}]},"source":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"const":"fetchable","type":"string"}},"required":["status","source","archive","parser"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"minLength":1,"type":"string"},"status":{"const":"not-fetchable","type":"string"}},"required":["status","reason"],"type":"object"}]},"sources":{"items":{"additionalProperties":false,"properties":{"retrieved":{"format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$","type":"string"},"snapshot":{"additionalProperties":false,"properties":{"timestamp":{"pattern":"^\\d{8}(?:\\d{6})?$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","timestamp"],"type":"object"},"status":{"enum":["live","dead"],"type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","retrieved","status"],"type":"object"},"minItems":1,"type":"array"},"tags":{"items":{"minLength":1,"type":"string"},"type":"array"}},"required":["id","name","tags","category","sources","licence","citations","recipe","crosswalk","expectedCounts","properties"],"type":"object"}},"$id":"https://cdn.jsdelivr.net/npm/keepset@0.16.1/schemas/entry.schema.json","$ref":"#/$defs/Entry","$schema":"https://json-schema.org/draft/2020-12/schema"}
@@ -1 +1 @@
1
- {"$defs":{"Manifest":{"additionalProperties":false,"properties":{"description":{"minLength":1,"type":"string"},"id":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"lineage":{"additionalProperties":false,"properties":{"catalogue":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"repository":{"format":"uri","type":"string"},"version":{"pattern":"^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$","type":"string"}},"required":["catalogue","version","repository"],"type":"object"},"name":{"minLength":1,"type":"string"},"namespaceAliases":{"additionalProperties":{"items":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"minItems":1,"type":"array"},"propertyNames":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"type":"object"},"repository":{"format":"uri","type":"string"},"version":{"pattern":"^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$","type":"string"}},"required":["id","name","description","version","repository"],"type":"object"}},"$id":"https://cdn.jsdelivr.net/npm/keepset@0.15.0/schemas/manifest.schema.json","$ref":"#/$defs/Manifest","$schema":"https://json-schema.org/draft/2020-12/schema"}
1
+ {"$defs":{"Manifest":{"additionalProperties":false,"properties":{"description":{"minLength":1,"type":"string"},"id":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"lineage":{"additionalProperties":false,"properties":{"catalogue":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"repository":{"format":"uri","type":"string"},"version":{"pattern":"^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$","type":"string"}},"required":["catalogue","version","repository"],"type":"object"},"name":{"minLength":1,"type":"string"},"namespaceAliases":{"additionalProperties":{"items":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"minItems":1,"type":"array"},"propertyNames":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]*$","type":"string"},"type":"object"},"repository":{"format":"uri","type":"string"},"version":{"pattern":"^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$","type":"string"}},"required":["id","name","description","version","repository"],"type":"object"}},"$id":"https://cdn.jsdelivr.net/npm/keepset@0.16.1/schemas/manifest.schema.json","$ref":"#/$defs/Manifest","$schema":"https://json-schema.org/draft/2020-12/schema"}