@finbheara/archive-client 0.50.0 → 0.52.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 CHANGED
@@ -97,7 +97,7 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
97
97
  | `results.attach_basis`, `majors.attach_basis` | the `attach_basis` a row of `results.query`, `majors.results`, `results.stream` and `results.entries` carries (how its `dancer_id` was answered, or why not); absent, never refused, without it | 345 |
98
98
  | `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
99
  | `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
- | `results.marks_printed`, `majors.marks_printed` | the `marks_printed` a row of `results.stream` and `results.entries` carries (the marks total a platform served, iFeis's, one string verbatim beside its `points`); absent, never refused, without it | 350 |
100
+ | `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 |
101
101
  | `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
102
  | `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
103
  | `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 |
@@ -105,7 +105,9 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
105
105
  | `majors.tabs` | `majors.tabulated` | 215 |
106
106
  | `teams` | `teams.results`, `teams.rosters`, `teams.resultRosters` | 260 |
107
107
  | `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
+ | `teams.recall` | the `competitors_printed` and `recalled_only` a row of `teams.results` carries; absent, never refused, without it | 350 |
108
109
  | `events` | `events.years` | 260 |
110
+ | `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 |
109
111
  | `upcoming.feises` | `upcoming.feises`, and the `next` of `feises.series` (null with the reason without it) | 285 |
110
112
  | `upcoming.fields`, `upcoming.entrants` | `upcoming.fields`, `upcoming.entrants` (285 and 290 carry the tables empty) | 291 |
111
113
  | `upcoming.fields.instance` | the `feis_instance_id` `upcoming.fields` carries; absent, never refused, without it | 320 |
@@ -647,8 +649,9 @@ all-round figure a page prints.
647
649
  THE MARKS TOTAL A PLATFORM SERVED, where the release carries it
648
650
  (`rel.capability("results.marks_printed")`): `marks_printed`, iFeis's served `marks` beside its
649
651
  `points`, one string verbatim (`"462.5"`). It names no round and no judge, so it is never split
650
- or summed, and the places follow the points, not the marks. Null where the row serves none and on
651
- every other source's row.
652
+ or summed, and the places follow the points, not the marks. A Bucharest transcript row (2016-2019)
653
+ carries its printed mark the same way, one adjudicator's mark and no `points` (`"80"`). Null where
654
+ the row carries none and on every other source's row.
652
655
 
653
656
  THE COMPETITION FIELDS, where the release carries them (`rel.capability("results.stream.competition")`,
654
657
  `"majors.stream.competition"` for scope `majors`), are on every row, null meaning no value:
@@ -744,14 +747,15 @@ reason it is linked to neither (`TabRow`, `PanelSeat` and `FeisPanelSeat` name t
744
747
  const r = await rel.teams.results({ event: "<event>", year: 2024 });
745
748
  r.results; // [{ address, competition, event, year, comp_no, title, category, hands, age, gender,
746
749
  // letter, label, school_printed, school_id, place, place_printed, printed_status, tie,
747
- // competitors, atts, ... }]
750
+ // competitors, competitors_printed, recalled_only, atts, ... }]
748
751
  const t = await rel.teams.rosters({ event: "<event>", year: 2024 });
749
752
  t.teams; // [{ team, kind, event, year, comp_no, title, team_index, seq, school_id, school_printed,
750
753
  // school_printed_as_of, dance, members: [{ seq, name_printed, name, yob, gender, dancer_id, dancer_scope }] }]
751
754
  const j = await rel.teams.resultRosters({ event: "<event>", year: 2024 });
752
755
  j.joins; // [{ team, result_address, join_kind, via_split, roster_index, result_letter, ... }]
753
756
  const e = await rel.events.years({ event: "<event>" });
754
- e.years; // [{ event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed }]
757
+ e.years; // [{ event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed,
758
+ // published, listed }]
755
759
  ```
756
760
 
757
761
  A query names an event (case-blind), a year, both, or neither (every row). Everything comes from
@@ -762,8 +766,14 @@ roster team met the results (`exact`, `card`, `branch`) or why it did not (`no-r
762
766
  `no-school`, `no-roster`, `multi-team-unjoined`), and `result_address` is null where none joined.
763
767
  An event-year's dates are a window (`date_lo`, `date_hi`) with how fine it is (`resolution`:
764
768
  `day`, `month`, `calendar`) and what it is read from (`source`), and `place` is a place-tree node
765
- where the release knows one. A team result's `age` and `gender` are the competition's band and sex
766
- as the release reads them, `printed_status` the row's printed status cell verbatim. A roster
769
+ where the release knows one. `published` is `results` where the event-year publishes result rows
770
+ and `attended` where it was held and only a listing page (a recall dump) names its dancers: no
771
+ competition or place is published, `listed` counts the event-year's lines of
772
+ `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
773
+ as the release reads them, `printed_status` the row's printed status cell verbatim. Its
774
+ `competitors` is the field: the printed count, except on a sheet that printed the recalled teams
775
+ only (`recalled_only`), where it is the entries the event-year's programme lists, never fewer than
776
+ the rows, and null with no list; `competitors_printed` is the printed count as printed. A roster
767
777
  team's `school_id` is its members' own school that year. Its `school_printed` is the school a
768
778
  registration system held for it on `school_printed_as_of`, often years later, so a rename or a move
769
779
  since shows there and it says nothing about the school that year. Its `dance` is the dance it was
@@ -776,7 +786,8 @@ THOSE NEWER FIELDS ARE ABSENT, NEVER NULL, ON A RELEASE THAT DOES NOT CARRY THEM
776
786
  `gender` (feature `teams.fields`, see the table above). Absent means "this release does not carry it", null
777
787
  means the release carries the field and has no value. `teams.results` and `teams.rosters` answer on
778
788
  every release the `teams` feature names, and `(await rel.capability("teams.fields")).state` says which shape
779
- a release has. The rows are read once per
789
+ a release has. A team result's `competitors_printed` and `recalled_only` are feature `teams.recall`,
790
+ absent the same way. The rows are read once per
780
791
  release into the `teams` and `events` indexes.
781
792
 
782
793
  ## Upcoming feiseanna and their competitor lists
@@ -872,7 +883,8 @@ release holds captures of that kind for the instance's platform, so a later one
872
883
  `not-captured` (it holds none). A day first observed never moves later from one release to the
873
884
  next: a stage an earlier release observed keeps its day, named in `carried` (`["row"]` for a row
874
885
  the cut no longer names, kept whole), and a retired id is listed in `formerly`. `terminal` is
875
- `results`, `withdrawn` (every field withdrawn), `passed-no-results` (its first day is before the
886
+ `attended` (a majors event-year held and published with no results, only a listing naming its
887
+ dancers: its `results` stage is `not-captured`), `results`, `withdrawn` (every field withdrawn), `passed-no-results` (its first day is before the
876
888
  cut's day), or null for a feis still ahead. Stage dates follow capture timing, not the feis's own
877
889
  order: only results after the run is a belief. `get` tries the instance id, then `formerly`, then
878
890
  a capture, then an occurrence id, and says which met (`via`). On a release without the table each
@@ -1086,7 +1098,7 @@ Every verb takes `--cache <dir>`, `--repo <owner/name>`, `--json`, `--live` and
1086
1098
  idq upcoming --feises [--state upcoming|no-results] [--brand <series>] [--from <date>] [--to <date>]
1087
1099
  idq calendar [--release <spec>] <instance|feis id|occurrence id>
1088
1100
  idq calendar [--brand <series>] [--tier <t>] [--from <date>] [--to <date>] [--stage <s>] [--state <s>]
1089
- [--terminal results|withdrawn|passed-no-results|none]
1101
+ [--terminal attended|results|withdrawn|passed-no-results|none]
1090
1102
  idq calendar --next [--brand <series>]
1091
1103
  idq calendar --missing [--stage results|entrants] [--platform <p>] [--tier <t>]
1092
1104
  [--kind platform-host|listing-only]
@@ -598,7 +598,7 @@ var FEATURES2 = [
598
598
  feature: "results.marks_printed",
599
599
  needs: ["results:results.marks_printed"],
600
600
  since: 350,
601
- calls: "the `marks_printed` a row of results.stream and results.entries carries (the marks total a platform served, iFeis's, one string verbatim): absent, never refused, on a release without it"
601
+ calls: "the `marks_printed` a row of results.stream and results.entries carries (the marks total a row served or printed, iFeis's and a Bucharest transcript row's, one string verbatim): absent, never refused, on a release without it"
602
602
  },
603
603
  {
604
604
  feature: "majors.marks_printed",
@@ -760,6 +760,12 @@ var FEATURES2 = [
760
760
  since: 266,
761
761
  calls: "the fields teams.results (age, gender, printed_status) and teams.rosters (dance, school_printed_as_of, a member's gender) carry where present: absent, never refused, on a release without them"
762
762
  },
763
+ {
764
+ feature: "teams.recall",
765
+ needs: ["table:team_results.competitors_printed", "table:team_results.recalled_only"],
766
+ since: 350,
767
+ calls: "the competitors_printed and recalled_only a row of teams.results carries (competitors is the field, on a recall-only sheet the entries its programme lists): absent, never refused, on a release without them"
768
+ },
763
769
  {
764
770
  feature: "events",
765
771
  needs: [
@@ -777,6 +783,12 @@ var FEATURES2 = [
777
783
  since: 260,
778
784
  calls: "events.years (the events index)"
779
785
  },
786
+ {
787
+ feature: "events.published",
788
+ needs: ["table:event_years.published", "table:event_years.listed"],
789
+ since: 350,
790
+ 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"
791
+ },
780
792
  {
781
793
  feature: "upcoming.feises",
782
794
  needs: [
@@ -3789,7 +3801,7 @@ CREATE TABLE result(address TEXT PRIMARY KEY, competition TEXT, event TEXT, year
3789
3801
  card TEXT, comp_no TEXT, title TEXT, category TEXT, hands INTEGER, letter TEXT, label TEXT,
3790
3802
  name_printed TEXT, school_printed TEXT, school_loc TEXT, school_id TEXT, place INTEGER,
3791
3803
  place_printed TEXT, tie INTEGER, competitors INTEGER, atts TEXT, age TEXT, gender TEXT,
3792
- printed_status TEXT, ord INTEGER);
3804
+ printed_status TEXT, competitors_printed INTEGER, recalled_only INTEGER, ord INTEGER);
3793
3805
  CREATE TABLE roster_team(team TEXT PRIMARY KEY, kind TEXT, event TEXT, year INTEGER,
3794
3806
  comp_no TEXT, title TEXT, team_index TEXT, seq INTEGER, school_id TEXT, school_printed TEXT,
3795
3807
  dance TEXT, school_printed_as_of TEXT, ord INTEGER);
@@ -3818,7 +3830,7 @@ async function readTables(rel, tables) {
3818
3830
  }
3819
3831
  var teamsIndex = {
3820
3832
  name: "teams",
3821
- version: "2",
3833
+ version: "3",
3822
3834
  inputs: TEAM_TABLES.map(tableAsset),
3823
3835
  says: "the team results, the roster teams with their members, and how they join, by event-year",
3824
3836
  load: (rel) => readTables(rel, TEAM_TABLES),
@@ -3836,10 +3848,10 @@ var teamsIndex = {
3836
3848
  ey.set(k, { event, year });
3837
3849
  putEy.run(k, event, year);
3838
3850
  }
3839
- const putR = out.prepare("INSERT OR IGNORE INTO result VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
3851
+ const putR = out.prepare("INSERT OR IGNORE INTO result VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
3840
3852
  let ord = 0;
3841
3853
  for (const r of t.team_results)
3842
- putR.run(str2(r.address), str2(r.slug), str2(r.event), num2(r.year), str2(r.card), str2(r.comp_no), str2(r.title), str2(r.category), num2(r.hands), str2(r.letter), str2(r.label), str2(r.name_printed), str2(r.school_printed), str2(r.school_loc), str2(r.school_id), num2(r.place), str2(r.place_printed), num2(r.tie), num2(r.competitors), JSON.stringify(strs(r.atts)), str2(r.age), str2(r.gender), JSON.stringify(strs(r.printed_status)), ord++);
3854
+ putR.run(str2(r.address), str2(r.slug), str2(r.event), num2(r.year), str2(r.card), str2(r.comp_no), str2(r.title), str2(r.category), num2(r.hands), str2(r.letter), str2(r.label), str2(r.name_printed), str2(r.school_printed), str2(r.school_loc), str2(r.school_id), num2(r.place), str2(r.place_printed), num2(r.tie), num2(r.competitors), JSON.stringify(strs(r.atts)), str2(r.age), str2(r.gender), JSON.stringify(strs(r.printed_status)), num2(r.competitors_printed), num2(r.recalled_only), ord++);
3843
3855
  const putT = out.prepare("INSERT OR IGNORE INTO roster_team VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
3844
3856
  for (const r of t.roster_teams) {
3845
3857
  const e = ey.get(str2(r.event_year) ?? "");
@@ -3859,23 +3871,23 @@ var teamsIndex = {
3859
3871
  };
3860
3872
  var EVENTS_SCHEMA = `CREATE TABLE event_year(event TEXT NOT NULL, year INTEGER NOT NULL,
3861
3873
  date_lo TEXT, date_hi TEXT, resolution TEXT, source TEXT, date_printed TEXT, place TEXT,
3862
- place_printed TEXT, PRIMARY KEY(event, year))`;
3874
+ place_printed TEXT, published TEXT, listed INTEGER, PRIMARY KEY(event, year))`;
3863
3875
  var eventsIndex = {
3864
3876
  name: "events",
3865
- version: "1",
3877
+ version: "2",
3866
3878
  inputs: [tableAsset("event_years")],
3867
3879
  says: "every event-year: its dates (and how fine they are) and its place",
3868
3880
  load: (rel) => readTables(rel, ["event_years"]),
3869
3881
  build(_rel, out, loaded) {
3870
3882
  const rows = loaded.event_years ?? [];
3871
3883
  out.run(EVENTS_SCHEMA);
3872
- const put = out.prepare("INSERT OR IGNORE INTO event_year VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
3884
+ const put = out.prepare("INSERT OR IGNORE INTO event_year VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
3873
3885
  for (const r of rows) {
3874
3886
  const event = str2(r.event);
3875
3887
  const year = num2(r.year);
3876
3888
  if (event === null || year === null)
3877
3889
  continue;
3878
- 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)));
3890
+ 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));
3879
3891
  }
3880
3892
  out.run("CREATE INDEX event_year_event ON event_year(event COLLATE NOCASE)");
3881
3893
  }
@@ -3902,24 +3914,29 @@ class TeamFinder2 {
3902
3914
  db() {
3903
3915
  return this.rel.indexDb("teams");
3904
3916
  }
3917
+ async hasRecall() {
3918
+ return (await this.rel.capability("teams.recall")).state === "full";
3919
+ }
3905
3920
  async hasFields() {
3906
3921
  return (await this.rel.capability("teams.fields")).state === "full";
3907
3922
  }
3908
3923
  async results(q = {}) {
3909
3924
  const db = await this.db();
3910
3925
  const fields = await this.hasFields();
3926
+ const recall = await this.hasRecall();
3911
3927
  const w = whereOf(q);
3912
3928
  const rows = db.query(`SELECT address, competition, event, year, card, comp_no, title, category, hands, letter,
3913
3929
  label, name_printed, school_printed, school_loc, school_id, place, place_printed, tie,
3914
- competitors, atts${fields ? ", age, gender, printed_status" : ""}
3930
+ competitors, atts${fields ? ", age, gender, printed_status" : ""}${recall ? ", competitors_printed, recalled_only" : ""}
3915
3931
  FROM result${w.sql} ORDER BY year, event, competition, place IS NULL, place, ord`).all(...w.args);
3916
3932
  return {
3917
3933
  tag: this.rel.tag,
3918
3934
  asked: q,
3919
- results: rows.map(({ printed_status, ...r }) => ({
3935
+ results: rows.map(({ printed_status, recalled_only, ...r }) => ({
3920
3936
  ...r,
3921
3937
  atts: JSON.parse(r.atts),
3922
- ...printed_status === undefined ? {} : { printed_status: JSON.parse(printed_status ?? "[]") }
3938
+ ...printed_status === undefined ? {} : { printed_status: JSON.parse(printed_status ?? "[]") },
3939
+ ...recalled_only === undefined ? {} : { recalled_only: recalled_only === 1 }
3923
3940
  }))
3924
3941
  };
3925
3942
  }
@@ -3969,15 +3986,18 @@ class EventFinder2 {
3969
3986
  async years(q = {}) {
3970
3987
  const db = await this.rel.indexDb("events");
3971
3988
  const w = whereOf(q);
3972
- const rows = db.query(`SELECT event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed
3989
+ const rows = db.query(`SELECT event, year, date_lo, date_hi, resolution, source, date_printed, place, place_printed,
3990
+ published, listed
3973
3991
  FROM event_year${w.sql} ORDER BY year, event`).all(...w.args);
3974
3992
  return {
3975
3993
  tag: this.rel.tag,
3976
3994
  asked: q,
3977
- years: rows.map((r) => ({
3995
+ years: rows.map(({ published, listed, ...r }) => ({
3978
3996
  ...r,
3979
3997
  date_printed: JSON.parse(r.date_printed),
3980
- place_printed: JSON.parse(r.place_printed)
3998
+ place_printed: JSON.parse(r.place_printed),
3999
+ ...published === "results" || published === "attended" ? { published } : {},
4000
+ ...listed === null ? {} : { listed }
3981
4001
  }))
3982
4002
  };
3983
4003
  }
@@ -4177,6 +4197,7 @@ var CALENDAR_STAGE_STATES2 = [
4177
4197
  "not-captured"
4178
4198
  ];
4179
4199
  var CALENDAR_TERMINALS2 = [
4200
+ "attended",
4180
4201
  "results",
4181
4202
  "withdrawn",
4182
4203
  "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-4f6jpd5e.js";
26
+ } from "./chunks/index-csh5d5m4.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
@@ -85,7 +85,7 @@ import {
85
85
  PROGRESS_MODES2,
86
86
  progressMode2,
87
87
  progressRenderer2
88
- } from "./chunks/index-4f6jpd5e.js";
88
+ } from "./chunks/index-csh5d5m4.js";
89
89
  import {
90
90
  cacheRoot2,
91
91
  repoOf2
@@ -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 {
@@ -28,6 +28,8 @@ export interface TeamResult {
28
28
  age?: string | null;
29
29
  gender?: string | null;
30
30
  printed_status?: string[];
31
+ competitors_printed?: number | null;
32
+ recalled_only?: boolean;
31
33
  }
32
34
  export interface RosterMember {
33
35
  seq: number;
@@ -77,6 +79,8 @@ export interface EventYear {
77
79
  date_printed: string[];
78
80
  place: string | null;
79
81
  place_printed: string[];
82
+ published?: "results" | "attended";
83
+ listed?: number;
80
84
  }
81
85
  export declare const teamsIndex: IndexBuilder;
82
86
  export declare const eventsIndex: IndexBuilder;
@@ -84,6 +88,7 @@ export declare class TeamFinder {
84
88
  private readonly rel;
85
89
  constructor(rel: Release);
86
90
  private db;
91
+ private hasRecall;
87
92
  private hasFields;
88
93
  results(q?: EventYearQuery): Promise<{
89
94
  tag: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finbheara/archive-client",
3
- "version": "0.50.0",
3
+ "version": "0.52.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",