@finbheara/archive-client 0.51.0 → 0.53.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.
- package/README.md +20 -6
- package/dist/chunks/{index-kbg0a5pp.js → index-6np7hsst.js} +49 -17
- package/dist/cli.js +2 -2
- package/dist/index.js +1 -1
- package/dist/types/calendar.d.ts +1 -1
- package/dist/types/feises.d.ts +1 -0
- package/dist/types/stream.d.ts +2 -0
- package/dist/types/teams.d.ts +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -90,6 +90,7 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
|
|
|
90
90
|
| `results.stream`, `majors.stream` | `results.stream`, `results.entries` | 255 |
|
|
91
91
|
| `results.stream.competition`, `majors.stream.competition` | the competition fields a streamed row carries (`competition_line`, `dance_printed`, `dance`, `recalled_only`, `comp_flags`, `competitors_basis`); absent, never refused, without them | 270 |
|
|
92
92
|
| `feises.dates` | `feises.dates` | 245 |
|
|
93
|
+
| `feises.name` | the `name` `feises.find` and `feises.series` answer: the release's reading, the label as printed except where it lost a letter (U+FFFD) the feis's own pages print clean; `name_printed` beside it is the label verbatim. Without it `name` is the label, never refused | 350 |
|
|
93
94
|
| `dancers.records` | `dancers.records` | 215 |
|
|
94
95
|
| `dancers.records.names` | the `names_printed` a record of `dancers.records` carries; absent, never refused, without it | 215 |
|
|
95
96
|
| `dancers.years` | `dancers.years` | 245 |
|
|
@@ -98,6 +99,7 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
|
|
|
98
99
|
| `results.major`, `majors.major` | the `major` a row of `results.stream` and `results.entries` carries (1 where its competition is a main event of a T1-T3 event, exactly the rows `majors.sqlite` holds); absent without it, and the stream filter `major` is refused by name without it | 345 |
|
|
99
100
|
| `results.relative_place_err`, `majors.relative_place_err` | the `relative_place_err` a row of `results.stream` and `results.entries` carries (how far below `relative_place` the true value may sit, 0 over an exact field); absent, never refused, without it | 350 |
|
|
100
101
|
| `results.marks_printed`, `majors.marks_printed` | the `marks_printed` a row of `results.stream` and `results.entries` carries (the marks total a row served or printed, iFeis's beside its `points` and a Bucharest transcript row's, one string verbatim); absent, never refused, without it | 350 |
|
|
102
|
+
| `results.status_printed`, `majors.status_printed` | the `status_printed` a row of `results.stream` and `results.entries` carries (a transcribed row's status cell as printed, verbatim, in printed order, `[]` where none); absent, never refused, without it | 350 |
|
|
101
103
|
| `results.round_points_printed`, `majors.round_points_printed` | the `round_points_printed` a row of `results.stream` and `results.entries` carries (the per-round points a platform served, FeisFWD's, in its slot order, a slot served nothing in null); absent, never refused, without it | 350 |
|
|
102
104
|
| `dancers.records.birth_consistency`, `dancers.years.birth_consistency` | the `birth_consistency` (0-100, floored: the percent of the dancer's, or the dancer-year's, readable rows that fit the birth window) and its denominator `birth_consistency_rows` a record of `dancers.records` and a dancer-year of `dancers.years` carry; absent, never refused, without it | 345 |
|
|
103
105
|
| `dancers.records.birth_deadband`, `dancers.years.birth_deadband` | the `birth_deadband_rows` a record of `dancers.records` and a dancer-year of `dancers.years` carry (the readable rows a one-year dance-up alone keeps off the birth window, outside `birth_consistency` and its denominator); absent, never refused, without it | 345 |
|
|
@@ -107,6 +109,7 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
|
|
|
107
109
|
| `teams.fields` | the fields `teams.results` (`age`, `gender`, `printed_status`) and `teams.rosters` (`dance`, `school_printed_as_of`, a member's `gender`) carry; absent, never refused, without it | 266 |
|
|
108
110
|
| `teams.recall` | the `competitors_printed` and `recalled_only` a row of `teams.results` carries; absent, never refused, without it | 350 |
|
|
109
111
|
| `events` | `events.years` | 260 |
|
|
112
|
+
| `events.published` | the `published` (`results`, or `attended`: held, its dancers named in `name-school-listings.jsonl`, no place published) and `listed` (those lines) an event-year of `events.years` carries; absent, never refused, without it | 350 |
|
|
110
113
|
| `upcoming.feises` | `upcoming.feises`, and the `next` of `feises.series` (null with the reason without it) | 285 |
|
|
111
114
|
| `upcoming.fields`, `upcoming.entrants` | `upcoming.fields`, `upcoming.entrants` (285 and 290 carry the tables empty) | 291 |
|
|
112
115
|
| `upcoming.fields.instance` | the `feis_instance_id` `upcoming.fields` carries; absent, never refused, without it | 320 |
|
|
@@ -257,8 +260,8 @@ await rel.feises.find({ id: "<feis, series instance or brand id>" }); // a reti
|
|
|
257
260
|
await rel.feises.find({ name: "*Spring*", year: 2024 });
|
|
258
261
|
```
|
|
259
262
|
|
|
260
|
-
One answer per feis id:
|
|
261
|
-
and captures it has.
|
|
263
|
+
One answer per feis id: its `name` and the label as printed (`name_printed`), dates, location,
|
|
264
|
+
series ids, regions, and how many competitions, rows and captures it has. A name glob reads both.
|
|
262
265
|
|
|
263
266
|
```ts
|
|
264
267
|
const s = await rel.feises.series("Ardvarna Spring"); // a name, a host code ("fweb:ABC", "fweb:ABC26"), any feis id
|
|
@@ -652,6 +655,12 @@ or summed, and the places follow the points, not the marks. A Bucharest transcri
|
|
|
652
655
|
carries its printed mark the same way, one adjudicator's mark and no `points` (`"80"`). Null where
|
|
653
656
|
the row carries none and on every other source's row.
|
|
654
657
|
|
|
658
|
+
THE STATUS CELL AS PRINTED, where the release carries it
|
|
659
|
+
(`rel.capability("results.status_printed")`): `status_printed`, a transcribed row's status cell
|
|
660
|
+
verbatim, in printed order (`["Not Recalled"]`, `["-"]`, `["*"]`, `["WQ"]`). `atts` is the
|
|
661
|
+
reading of the same cell, so a cell it reads as nothing (`-`, `Not Recalled`) is told apart from
|
|
662
|
+
a blank cell here. `[]` where the row prints none, and on every platform row.
|
|
663
|
+
|
|
655
664
|
THE COMPETITION FIELDS, where the release carries them (`rel.capability("results.stream.competition")`,
|
|
656
665
|
`"majors.stream.competition"` for scope `majors`), are on every row, null meaning no value:
|
|
657
666
|
|
|
@@ -753,7 +762,8 @@ t.teams; // [{ team, kind, event, year, comp_no, title, team_index, seq, sch
|
|
|
753
762
|
const j = await rel.teams.resultRosters({ event: "<event>", year: 2024 });
|
|
754
763
|
j.joins; // [{ team, result_address, join_kind, via_split, roster_index, result_letter, ... }]
|
|
755
764
|
const e = await rel.events.years({ event: "<event>" });
|
|
756
|
-
e.years; // [{ event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed
|
|
765
|
+
e.years; // [{ event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed,
|
|
766
|
+
// published, listed }]
|
|
757
767
|
```
|
|
758
768
|
|
|
759
769
|
A query names an event (case-blind), a year, both, or neither (every row). Everything comes from
|
|
@@ -764,7 +774,10 @@ roster team met the results (`exact`, `card`, `branch`) or why it did not (`no-r
|
|
|
764
774
|
`no-school`, `no-roster`, `multi-team-unjoined`), and `result_address` is null where none joined.
|
|
765
775
|
An event-year's dates are a window (`date_lo`, `date_hi`) with how fine it is (`resolution`:
|
|
766
776
|
`day`, `month`, `calendar`) and what it is read from (`source`), and `place` is a place-tree node
|
|
767
|
-
where the release knows one.
|
|
777
|
+
where the release knows one. `published` is `results` where the event-year publishes result rows
|
|
778
|
+
and `attended` where it was held and only a listing page (a recall dump) names its dancers: no
|
|
779
|
+
competition or place is published, `listed` counts the event-year's lines of
|
|
780
|
+
`name-school-listings.jsonl`, and its calendar row reads terminal `attended`. A team result's `age` and `gender` are the competition's band and sex
|
|
768
781
|
as the release reads them, `printed_status` the row's printed status cell verbatim. Its
|
|
769
782
|
`competitors` is the field: the printed count, except on a sheet that printed the recalled teams
|
|
770
783
|
only (`recalled_only`), where it is the entries the event-year's programme lists, never fewer than
|
|
@@ -878,7 +891,8 @@ release holds captures of that kind for the instance's platform, so a later one
|
|
|
878
891
|
`not-captured` (it holds none). A day first observed never moves later from one release to the
|
|
879
892
|
next: a stage an earlier release observed keeps its day, named in `carried` (`["row"]` for a row
|
|
880
893
|
the cut no longer names, kept whole), and a retired id is listed in `formerly`. `terminal` is
|
|
881
|
-
`
|
|
894
|
+
`attended` (a majors event-year held and published with no results, only a listing naming its
|
|
895
|
+
dancers: its `results` stage is `not-captured`), `results`, `withdrawn` (every field withdrawn), `passed-no-results` (its first day is before the
|
|
882
896
|
cut's day), or null for a feis still ahead. Stage dates follow capture timing, not the feis's own
|
|
883
897
|
order: only results after the run is a belief. `get` tries the instance id, then `formerly`, then
|
|
884
898
|
a capture, then an occurrence id, and says which met (`via`). On a release without the table each
|
|
@@ -1092,7 +1106,7 @@ Every verb takes `--cache <dir>`, `--repo <owner/name>`, `--json`, `--live` and
|
|
|
1092
1106
|
idq upcoming --feises [--state upcoming|no-results] [--brand <series>] [--from <date>] [--to <date>]
|
|
1093
1107
|
idq calendar [--release <spec>] <instance|feis id|occurrence id>
|
|
1094
1108
|
idq calendar [--brand <series>] [--tier <t>] [--from <date>] [--to <date>] [--stage <s>] [--state <s>]
|
|
1095
|
-
[--terminal results|withdrawn|passed-no-results|none]
|
|
1109
|
+
[--terminal attended|results|withdrawn|passed-no-results|none]
|
|
1096
1110
|
idq calendar --next [--brand <series>]
|
|
1097
1111
|
idq calendar --missing [--stage results|entrants] [--platform <p>] [--tier <t>]
|
|
1098
1112
|
[--kind platform-host|listing-only]
|
|
@@ -606,6 +606,18 @@ var FEATURES2 = [
|
|
|
606
606
|
since: 350,
|
|
607
607
|
calls: "the same on a row of results.stream and results.entries (scope majors)"
|
|
608
608
|
},
|
|
609
|
+
{
|
|
610
|
+
feature: "results.status_printed",
|
|
611
|
+
needs: ["results:results.status_printed"],
|
|
612
|
+
since: 350,
|
|
613
|
+
calls: "the `status_printed` a row of results.stream and results.entries carries (a transcribed row's status cell as printed, verbatim, in printed order, `[]` where none): absent, never refused, on a release without it"
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
feature: "majors.status_printed",
|
|
617
|
+
needs: ["majors:results.status_printed"],
|
|
618
|
+
since: 350,
|
|
619
|
+
calls: "the same on a row of results.stream and results.entries (scope majors)"
|
|
620
|
+
},
|
|
609
621
|
{
|
|
610
622
|
feature: "majors.attach_basis",
|
|
611
623
|
needs: ["majors:results.attach_basis"],
|
|
@@ -624,6 +636,12 @@ var FEATURES2 = [
|
|
|
624
636
|
since: 245,
|
|
625
637
|
calls: "feises.dates"
|
|
626
638
|
},
|
|
639
|
+
{
|
|
640
|
+
feature: "feises.name",
|
|
641
|
+
needs: ["results:feises.name", "results:feises.name_source"],
|
|
642
|
+
since: 350,
|
|
643
|
+
calls: "the `name` feises.find and feises.series answer (the release's reading: the label as printed, except where it lost a letter the feis's own pages print); on a release without it, `name` is the label as printed, never refused"
|
|
644
|
+
},
|
|
627
645
|
{
|
|
628
646
|
feature: "dancers.records",
|
|
629
647
|
needs: [
|
|
@@ -783,6 +801,12 @@ var FEATURES2 = [
|
|
|
783
801
|
since: 260,
|
|
784
802
|
calls: "events.years (the events index)"
|
|
785
803
|
},
|
|
804
|
+
{
|
|
805
|
+
feature: "events.published",
|
|
806
|
+
needs: ["table:event_years.published", "table:event_years.listed"],
|
|
807
|
+
since: 350,
|
|
808
|
+
calls: "the `published` (`results`, or `attended`: held, its dancers named in name-school-listings.jsonl, no place published) and `listed` an event-year of events.years carries: absent, never refused, on a release without them"
|
|
809
|
+
},
|
|
786
810
|
{
|
|
787
811
|
feature: "upcoming.feises",
|
|
788
812
|
needs: [
|
|
@@ -1153,7 +1177,7 @@ var describeEvent = (e) => {
|
|
|
1153
1177
|
var SCHEMA = `
|
|
1154
1178
|
CREATE TABLE feis(
|
|
1155
1179
|
feis_id TEXT PRIMARY KEY, source TEXT NOT NULL, token TEXT NOT NULL, host_id TEXT NOT NULL,
|
|
1156
|
-
name TEXT NOT NULL, date_lo TEXT, date_hi TEXT, date_printed TEXT, year INTEGER,
|
|
1180
|
+
name TEXT NOT NULL, name_printed TEXT NOT NULL, date_lo TEXT, date_hi TEXT, date_printed TEXT, year INTEGER,
|
|
1157
1181
|
location TEXT, instance_id TEXT, brand_id TEXT, regions TEXT NOT NULL,
|
|
1158
1182
|
competitions INTEGER NOT NULL, rows INTEGER NOT NULL, captures INTEGER NOT NULL
|
|
1159
1183
|
);
|
|
@@ -1173,7 +1197,7 @@ function readJsonl(path) {
|
|
|
1173
1197
|
}
|
|
1174
1198
|
var feisesIndex = {
|
|
1175
1199
|
name: "feises",
|
|
1176
|
-
version: "
|
|
1200
|
+
version: "3",
|
|
1177
1201
|
inputs: ["results", "feis-redirects.jsonl"],
|
|
1178
1202
|
says: "every feis by id, platform, code, series and name, with its counts and regions",
|
|
1179
1203
|
build(rel, out) {
|
|
@@ -1188,15 +1212,16 @@ var feisesIndex = {
|
|
|
1188
1212
|
const rows = new Map;
|
|
1189
1213
|
for (const r of src.query("SELECT c.event AS event, sum(r.n) AS n FROM (SELECT competition, count(*) AS n FROM results GROUP BY competition) r JOIN (SELECT DISTINCT competition, event FROM competitions) c ON c.competition = r.competition GROUP BY c.event").all())
|
|
1190
1214
|
rows.set(r.event, r.n);
|
|
1191
|
-
const put = out.prepare("INSERT OR IGNORE INTO feis VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
1215
|
+
const put = out.prepare("INSERT OR IGNORE INTO feis VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
1192
1216
|
const captures = new Map;
|
|
1193
|
-
const
|
|
1217
|
+
const named = columnsOf2(src, "feises").has("name");
|
|
1218
|
+
const feisRows = src.query(`SELECT feis_id, source, host_id, name_printed, ${named ? "name" : "name_printed AS name"}, date_lo, date_hi, date_printed, year, location_printed, feis_instance_id, feis_brand_id FROM feises ORDER BY file, line`).all();
|
|
1194
1219
|
for (const f of feisRows)
|
|
1195
1220
|
captures.set(f.feis_id, (captures.get(f.feis_id) ?? 0) + 1);
|
|
1196
1221
|
for (const f of feisRows) {
|
|
1197
1222
|
const c = counts.get(f.feis_id);
|
|
1198
1223
|
const colon = f.feis_id.indexOf(":");
|
|
1199
|
-
put.run(f.feis_id, f.source, colon === -1 ? f.source : f.feis_id.slice(0, colon), f.host_id, f.name_printed, f.date_lo, f.date_hi, f.date_printed, f.year, f.location_printed, f.feis_instance_id, f.feis_brand_id, JSON.stringify([...c?.regions ?? []].sort()), c?.comps ?? 0, rows.get(f.feis_id) ?? 0, captures.get(f.feis_id) ?? 0);
|
|
1224
|
+
put.run(f.feis_id, f.source, colon === -1 ? f.source : f.feis_id.slice(0, colon), f.host_id, f.name, f.name_printed, f.date_lo, f.date_hi, f.date_printed, f.year, f.location_printed, f.feis_instance_id, f.feis_brand_id, JSON.stringify([...c?.regions ?? []].sort()), c?.comps ?? 0, rows.get(f.feis_id) ?? 0, captures.get(f.feis_id) ?? 0);
|
|
1200
1225
|
}
|
|
1201
1226
|
const red = out.prepare("INSERT OR REPLACE INTO redirect VALUES (?, ?, ?)");
|
|
1202
1227
|
for (const r of readJsonl(rel.path("feis-redirects.jsonl")))
|
|
@@ -1249,8 +1274,8 @@ class FeisFinder2 {
|
|
|
1249
1274
|
args.push(id, id, id);
|
|
1250
1275
|
}
|
|
1251
1276
|
if (q.name !== undefined) {
|
|
1252
|
-
where.push("name LIKE ? ESCAPE '\\'");
|
|
1253
|
-
args.push(globToLike(q.name));
|
|
1277
|
+
where.push("(name LIKE ? ESCAPE '\\' OR name_printed LIKE ? ESCAPE '\\')");
|
|
1278
|
+
args.push(globToLike(q.name), globToLike(q.name));
|
|
1254
1279
|
}
|
|
1255
1280
|
if (q.year !== undefined) {
|
|
1256
1281
|
where.push("year = ?");
|
|
@@ -1558,7 +1583,7 @@ function streamSql(q, shape = {}) {
|
|
|
1558
1583
|
if (q.major !== undefined)
|
|
1559
1584
|
where.push(q.major ? "r.major = 1" : "r.major = 0");
|
|
1560
1585
|
return {
|
|
1561
|
-
sql: `SELECT ${COLUMNS}${shape.competition === true ? COMPETITION_COLUMNS : ""}${shape.competitorsPrinted === true ? ", c.competitors_printed AS competitors_printed" : ""}${shape.attachBasis === true ? ", r.attach_basis AS attach_basis" : ""}${shape.major === true ? ", r.major AS major" : ""}${shape.relativePlaceErr === true ? ", r.relative_place_err AS relative_place_err" : ""}${shape.roundPoints === true ? ", r.round_points_printed AS round_points_printed" : ""}${shape.marks === true ? ", r.marks_printed AS marks_printed" : ""} FROM results r JOIN competitions c ON c.file = r.file AND c.line = r.competition_line${where.length === 0 ? "" : ` WHERE ${where.join(" AND ")}`} ORDER BY r.file, r.line`,
|
|
1586
|
+
sql: `SELECT ${COLUMNS}${shape.competition === true ? COMPETITION_COLUMNS : ""}${shape.competitorsPrinted === true ? ", c.competitors_printed AS competitors_printed" : ""}${shape.attachBasis === true ? ", r.attach_basis AS attach_basis" : ""}${shape.major === true ? ", r.major AS major" : ""}${shape.relativePlaceErr === true ? ", r.relative_place_err AS relative_place_err" : ""}${shape.roundPoints === true ? ", r.round_points_printed AS round_points_printed" : ""}${shape.marks === true ? ", r.marks_printed AS marks_printed" : ""}${shape.status === true ? ", r.status_printed AS status_printed" : ""} FROM results r JOIN competitions c ON c.file = r.file AND c.line = r.competition_line${where.length === 0 ? "" : ` WHERE ${where.join(" AND ")}`} ORDER BY r.file, r.line`,
|
|
1562
1587
|
args
|
|
1563
1588
|
};
|
|
1564
1589
|
}
|
|
@@ -1570,7 +1595,7 @@ function feisDates(db) {
|
|
|
1570
1595
|
}
|
|
1571
1596
|
var text = (v) => v === null || v === "" ? null : v;
|
|
1572
1597
|
function rowOf(r, dates) {
|
|
1573
|
-
const { atts, withdrawn, recalled_only, round_points_printed, ...rest } = r;
|
|
1598
|
+
const { atts, withdrawn, recalled_only, round_points_printed, status_printed, ...rest } = r;
|
|
1574
1599
|
const d = dates.get(r.event);
|
|
1575
1600
|
return {
|
|
1576
1601
|
...rest,
|
|
@@ -1587,6 +1612,7 @@ function rowOf(r, dates) {
|
|
|
1587
1612
|
...round_points_printed === undefined ? {} : {
|
|
1588
1613
|
round_points_printed: round_points_printed === null ? null : JSON.parse(round_points_printed)
|
|
1589
1614
|
},
|
|
1615
|
+
...status_printed === undefined ? {} : { status_printed: JSON.parse(status_printed) },
|
|
1590
1616
|
withdrawn: text(withdrawn),
|
|
1591
1617
|
qualifier: text(rest.qualifier),
|
|
1592
1618
|
primary_source: text(rest.primary_source),
|
|
@@ -1712,6 +1738,7 @@ class ResultFinder2 {
|
|
|
1712
1738
|
const relativePlaceErr = (await this.rel.capability(`${db}.relative_place_err`)).state === "full";
|
|
1713
1739
|
const roundPoints = (await this.rel.capability(`${db}.round_points_printed`)).state === "full";
|
|
1714
1740
|
const marks = (await this.rel.capability(`${db}.marks_printed`)).state === "full";
|
|
1741
|
+
const status = (await this.rel.capability(`${db}.status_printed`)).state === "full";
|
|
1715
1742
|
return {
|
|
1716
1743
|
db: this.rel.db(db),
|
|
1717
1744
|
shape: {
|
|
@@ -1721,7 +1748,8 @@ class ResultFinder2 {
|
|
|
1721
1748
|
major,
|
|
1722
1749
|
relativePlaceErr,
|
|
1723
1750
|
roundPoints,
|
|
1724
|
-
marks
|
|
1751
|
+
marks,
|
|
1752
|
+
status
|
|
1725
1753
|
}
|
|
1726
1754
|
};
|
|
1727
1755
|
}
|
|
@@ -3865,23 +3893,23 @@ var teamsIndex = {
|
|
|
3865
3893
|
};
|
|
3866
3894
|
var EVENTS_SCHEMA = `CREATE TABLE event_year(event TEXT NOT NULL, year INTEGER NOT NULL,
|
|
3867
3895
|
date_lo TEXT, date_hi TEXT, resolution TEXT, source TEXT, date_printed TEXT, place TEXT,
|
|
3868
|
-
place_printed TEXT, PRIMARY KEY(event, year))`;
|
|
3896
|
+
place_printed TEXT, published TEXT, listed INTEGER, PRIMARY KEY(event, year))`;
|
|
3869
3897
|
var eventsIndex = {
|
|
3870
3898
|
name: "events",
|
|
3871
|
-
version: "
|
|
3899
|
+
version: "2",
|
|
3872
3900
|
inputs: [tableAsset("event_years")],
|
|
3873
3901
|
says: "every event-year: its dates (and how fine they are) and its place",
|
|
3874
3902
|
load: (rel) => readTables(rel, ["event_years"]),
|
|
3875
3903
|
build(_rel, out, loaded) {
|
|
3876
3904
|
const rows = loaded.event_years ?? [];
|
|
3877
3905
|
out.run(EVENTS_SCHEMA);
|
|
3878
|
-
const put = out.prepare("INSERT OR IGNORE INTO event_year VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
3906
|
+
const put = out.prepare("INSERT OR IGNORE INTO event_year VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
3879
3907
|
for (const r of rows) {
|
|
3880
3908
|
const event = str2(r.event);
|
|
3881
3909
|
const year = num2(r.year);
|
|
3882
3910
|
if (event === null || year === null)
|
|
3883
3911
|
continue;
|
|
3884
|
-
put.run(event, year, str2(r.date_lo), str2(r.date_hi), str2(r.resolution), str2(r.source), JSON.stringify(strs(r.date_printed)), str2(r.place), JSON.stringify(strs(r.place_printed)));
|
|
3912
|
+
put.run(event, year, str2(r.date_lo), str2(r.date_hi), str2(r.resolution), str2(r.source), JSON.stringify(strs(r.date_printed)), str2(r.place), JSON.stringify(strs(r.place_printed)), str2(r.published), num2(r.listed));
|
|
3885
3913
|
}
|
|
3886
3914
|
out.run("CREATE INDEX event_year_event ON event_year(event COLLATE NOCASE)");
|
|
3887
3915
|
}
|
|
@@ -3980,15 +4008,18 @@ class EventFinder2 {
|
|
|
3980
4008
|
async years(q = {}) {
|
|
3981
4009
|
const db = await this.rel.indexDb("events");
|
|
3982
4010
|
const w = whereOf(q);
|
|
3983
|
-
const rows = db.query(`SELECT event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed
|
|
4011
|
+
const rows = db.query(`SELECT event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed,
|
|
4012
|
+
published, listed
|
|
3984
4013
|
FROM event_year${w.sql} ORDER BY year, event`).all(...w.args);
|
|
3985
4014
|
return {
|
|
3986
4015
|
tag: this.rel.tag,
|
|
3987
4016
|
asked: q,
|
|
3988
|
-
years: rows.map((r) => ({
|
|
4017
|
+
years: rows.map(({ published, listed, ...r }) => ({
|
|
3989
4018
|
...r,
|
|
3990
4019
|
date_printed: JSON.parse(r.date_printed),
|
|
3991
|
-
place_printed: JSON.parse(r.place_printed)
|
|
4020
|
+
place_printed: JSON.parse(r.place_printed),
|
|
4021
|
+
...published === "results" || published === "attended" ? { published } : {},
|
|
4022
|
+
...listed === null ? {} : { listed }
|
|
3992
4023
|
}))
|
|
3993
4024
|
};
|
|
3994
4025
|
}
|
|
@@ -4188,6 +4219,7 @@ var CALENDAR_STAGE_STATES2 = [
|
|
|
4188
4219
|
"not-captured"
|
|
4189
4220
|
];
|
|
4190
4221
|
var CALENDAR_TERMINALS2 = [
|
|
4222
|
+
"attended",
|
|
4191
4223
|
"results",
|
|
4192
4224
|
"withdrawn",
|
|
4193
4225
|
"passed-no-results"
|
package/dist/cli.js
CHANGED
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
staleWarning2,
|
|
24
24
|
progressMode2,
|
|
25
25
|
progressRenderer2
|
|
26
|
-
} from "./chunks/index-
|
|
26
|
+
} from "./chunks/index-6np7hsst.js";
|
|
27
27
|
import"./chunks/index-hghdy980.js";
|
|
28
28
|
|
|
29
29
|
var USAGE_HEADER = "usage: idq <verb> [--cache <dir>] [--repo <owner/name>] [--json] [--live] [--progress tty|plain|none]";
|
|
@@ -422,7 +422,7 @@ var VERBS = [
|
|
|
422
422
|
" the day first observed and the capture that observed it",
|
|
423
423
|
" calendar [--brand <series>] [--tier T1..T4] [--from <date>] [--to <date>]",
|
|
424
424
|
" [--stage announced|syllabus|entrants|run|results] [--state observed|pending|not-captured]",
|
|
425
|
-
" [--terminal results|withdrawn|passed-no-results|none]",
|
|
425
|
+
" [--terminal attended|results|withdrawn|passed-no-results|none]",
|
|
426
426
|
" the instances a query names, by first day; each stage's",
|
|
427
427
|
" expected day with its basis and n where the release has them",
|
|
428
428
|
" calendar --next [--brand <series>]",
|
package/dist/index.js
CHANGED
package/dist/types/calendar.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export type CalendarStage = "announced" | "syllabus" | "entrants" | "run" | "res
|
|
|
3
3
|
export declare const CALENDAR_STAGES: readonly CalendarStage[];
|
|
4
4
|
export type CalendarStageState = "observed" | "pending" | "not-captured";
|
|
5
5
|
export declare const CALENDAR_STAGE_STATES: readonly CalendarStageState[];
|
|
6
|
-
export type CalendarTerminal = "results" | "withdrawn" | "passed-no-results";
|
|
6
|
+
export type CalendarTerminal = "attended" | "results" | "withdrawn" | "passed-no-results";
|
|
7
7
|
export declare const CALENDAR_TERMINALS: readonly CalendarTerminal[];
|
|
8
8
|
export type CalendarExpectedBasis = "announced" | "brand" | "platform" | "pooled" | "roster-window" | "unmeasured";
|
|
9
9
|
export interface CalendarExpected {
|
package/dist/types/feises.d.ts
CHANGED
package/dist/types/stream.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export interface StreamRow extends Partial<StreamCompetition> {
|
|
|
66
66
|
points_printed: string | null;
|
|
67
67
|
round_points_printed?: (string | null)[] | null;
|
|
68
68
|
marks_printed?: string | null;
|
|
69
|
+
status_printed?: string[];
|
|
69
70
|
platform_dancer_id: string | null;
|
|
70
71
|
primary_source: string | null;
|
|
71
72
|
file: string;
|
|
@@ -83,6 +84,7 @@ export interface StreamShape {
|
|
|
83
84
|
relativePlaceErr?: boolean;
|
|
84
85
|
roundPoints?: boolean;
|
|
85
86
|
marks?: boolean;
|
|
87
|
+
status?: boolean;
|
|
86
88
|
}
|
|
87
89
|
export declare const scopeDb: (s: StreamScope) => "majors" | "results";
|
|
88
90
|
export declare function streamSql(q: StreamQuery, shape?: StreamShape): {
|
package/dist/types/teams.d.ts
CHANGED
|
@@ -79,6 +79,8 @@ export interface EventYear {
|
|
|
79
79
|
date_printed: string[];
|
|
80
80
|
place: string | null;
|
|
81
81
|
place_printed: string[];
|
|
82
|
+
published?: "results" | "attended";
|
|
83
|
+
listed?: number;
|
|
82
84
|
}
|
|
83
85
|
export declare const teamsIndex: IndexBuilder;
|
|
84
86
|
export declare const eventsIndex: IndexBuilder;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finbheara/archive-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.53.0",
|
|
4
4
|
"description": "Open a versioned release of an Irish dance results archive: download, verify, decompress and cache it by tag, keep the cache, and resolve feises and schools against it",
|
|
5
5
|
"keywords": ["irish-dance", "results", "release", "cache", "sqlite"],
|
|
6
6
|
"license": "MIT",
|