@finbheara/archive-client 0.11.0 → 0.13.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
@@ -87,7 +87,6 @@ c.features; // [{ feature: "dancers", state: "full" | "missing", missing: [...
87
87
  | `feises`, `comps` | `feises.find`, `feises.series`, `comps.*`, `registrations.resolve` | 265 |
88
88
  | `comps.dance` | the `dance` a comp of `comps.*` carries: null, never refused, without it | 270 |
89
89
  | `results.stream`, `majors.stream` | `results.stream`, `results.entries` | 255 |
90
- | `results.printed_age` | the `printed_age` a row of `results.stream` and `results.entries` carries: null, never refused, without it | 271 |
91
90
  | `feises.dates` | `feises.dates` | 245 |
92
91
  | `dancers.records` | `dancers.records` | 215 |
93
92
  | `dancers.years` | `dancers.years` | 245 |
@@ -195,14 +194,19 @@ A release holds a feis-year once its results are captured and carries no calenda
195
194
  ```ts
196
195
  const a = await rel.schools.resolve("Ardvarna Academy of Irish Dance (Calgary, AB)", { region: "WCRO" });
197
196
  a.arm; // "unique" | "ambiguous" | "none"
198
- a.candidates; // [{ school_id, display, rows, by, prints, regions, places }]
197
+ a.candidates; // [{ school_id, display, rows, by, prints, regions, places, years? }]
199
198
  ```
200
199
 
201
200
  The rungs, the first that answers wins: a school id, a retired id followed to the live one, the
202
201
  print exactly as the release published it, then the print read by `@finbheara/domain`'s school
203
202
  reader at its filing key (`sn3`) and at its real words. `ambiguous` and `none` are answers: a
204
203
  best guess is never promoted to `unique`. `region` drops only a candidate the registry places in
205
- other regions, and keeps one it places nowhere. A print the reader refuses (a placeholder)
204
+ other regions, and keeps one it places nowhere. `year` reads a print at that year, on a print
205
+ rung only: where the print reaches two or more ids, the ids whose rows printed it that year are
206
+ kept (a print one school took over from another names the one that held it then), else the ids
207
+ that printed it last before that year, and where the year is before every one of them, all stay
208
+ (`a.year`: `{ asked, narrowed }`, each candidate's `years: { lo, hi }`). A dancer question reads
209
+ its school print at its own year. A print the reader refuses (a placeholder)
206
210
  answers `none` with the reason. An id (or a retired id followed) answers with every print its
207
211
  rows were published under and their rows, so it agrees with each print lookup of that school.
208
212
 
@@ -263,8 +267,8 @@ year with the asked age, or a dancer the release publishes in the other populati
263
267
  majors solo competitions and in none of the asked one's (listed in `excluded`, `why: "age"` or
264
268
  `"population"`, and a candidate contradicting both says `age`). A dancer published in both, or in
265
269
  neither, stays. A population word that names no one population (`mixed`) narrows nothing, and the
266
- answer says so (`r.population.note`). The school is evidence and order, never a reason
267
- to drop anyone: candidates whose latest school is the asked one, or one the lineage joins to it,
270
+ answer says so (`r.population.note`). Outside the narrowing below, the school is evidence and
271
+ order, never a reason to drop anyone: candidates whose latest school is the asked one, or one the lineage joins to it,
268
272
  come first, then those that ever danced for it, then the rest. A school row meets the asked school by its id, else by its print
269
273
  (one `rel.schools` resolves to the asked ids), so a latest print the release
270
274
  filed under no id is still `same`. `unique` is one candidate left after the age, never a best
@@ -282,7 +286,13 @@ words):
282
286
  followed through the redirects, a print read by `rel.schools`), and none of them is the asked
283
287
  school or a school its line had joined by that year (lineage edges dated in or before the asked
284
288
  year). A dancer with no school row, or a print no school reads, is unknown and never refuted. A
285
- dancer that ever danced for the asked school's line is never refuted by the school.
289
+ dancer that ever danced for the asked school's line is never refuted by the school. For an
290
+ adult-category question (the asked band is the adult band, read by `@finbheara/domain`:
291
+ `Adult`, `Advanced Adult`, `Adult Beginner`, `Open Adult`, `Adult Masters`), a row the
292
+ candidate danced under 18 (at every birth year of its window, in the row's latest year)
293
+ refutes nothing where the candidate is 18 or over in the asked year, however long ago the row
294
+ is: many adult dancers danced as children at another school. An and-over band (`O18`,
295
+ `18 & Over`, `18+`), `Senior`, a year of birth and a youth question are unchanged.
286
296
  - `age`: the birth window misses the asked band even with one band's dance-up (`DANCE_UP_YEARS`
287
297
  of `@finbheara/domain/age`: a dancer may enter the band one year older than the dancer's own). A
288
298
  candidate the age set aside that the dance-up holds stays open (`r.initials.heldByDanceUp`).
@@ -292,8 +302,31 @@ words):
292
302
  one candidate is open and the age did not set it aside: the candidates the school refuted then
293
303
  move to `excluded` (`why: "school"`). Otherwise the arm stays `ambiguous` with every candidate,
294
304
  and where the school and the region single out no one, `preferred` names the only open candidate
295
- with a row in the asked year or the year before. A full given name is never narrowed this way: two
296
- full given names that differ are two names, and the school only orders them.
305
+ with a row in the asked year or the year before.
306
+
307
+ A FULL GIVEN NAME with a school the release resolves is narrowed the same way (`r.fullName`, the
308
+ same shape as `r.initials`), with one more hard fact:
309
+
310
+ - `given`: a candidate the name met only through an initial print (`Quellan, A.`) that also
311
+ printed a full given name the names package relates in no way to the asked one is another
312
+ dancer. An initial-only candidate, a variant or a diminutive (`nameKinship`) stays.
313
+
314
+ A candidate at another school is set aside only by the hard school fact, never for being
315
+ elsewhere: a dancer who ever danced for the asked school's line stays open.
316
+
317
+ THE WIDENED PASSES (`r.widened`), only where the name as asked is left with no one, so a widened
318
+ match never answers over an exact one:
319
+
320
+ - `birth-conflict`: a birth window the release flags (`birth.conflict`) is read one year wider on
321
+ each side, and the candidate says so (`candidate.widened`).
322
+ - `name-form`: the name read in its other forms by `@finbheara/names`: `composeNames` (a print
323
+ that left out a second surname, a middle name or a given name's letters, or a double-barrelled
324
+ surname read as its parts) or else `nameKinship` (a given name's variant or diminutive). Such a
325
+ candidate's `nameLevel` is `form` and `evidence.form` lists the tolerances. A form is set
326
+ aside only by the hard school fact (`why: "name-form"`, the fact in `r.fullName.refuted` or
327
+ `r.initials.refuted` where the answer was narrowed): every school row of the dancer, to the
328
+ asked year, reads outside the asked school's line. A dancer with no school row, or a print no
329
+ school reads, is unknown and stays.
297
330
 
298
331
  THE REGIONAL OIREACHTAS (`oireachtas: { region, year? }`). A dancer enters one
299
332
  residence-qualifying regional Oireachtas a year. Two regionals in one year are two dancers, the
@@ -389,15 +422,11 @@ competition beside its own fields: `competition`, `event`, `year`, `tier`, `comp
389
422
  `date_printed`, `source`, `round`, and at a feis its `feis_id`, `feis_date_lo` and
390
423
  `feis_date_hi`. Its own: `address`, `section`, `card`, `place`, `place_printed`, `tie`,
391
424
  `relative_place`, `atts`, `withdrawn`, `qualifier`, `name_printed`, `name`, `school_printed`,
392
- `school_loc`, `school_id`, `dancer_id`, `dancer_scope`, `yob`, `yob_printed`, `printed_age`,
393
- `points_printed`, `platform_dancer_id`, `primary_source`, and its key in the release, `file` and `line` (one
425
+ `school_loc`, `school_id`, `dancer_id`, `dancer_scope`, `yob`, `yob_printed`, `points_printed`,
426
+ `platform_dancer_id`, `primary_source`, and its key in the release, `file` and `line` (one
394
427
  `(file, line)` is one row, where an `address` may carry one row per section). Rows come in the
395
428
  release's own order, a competition's rows together.
396
429
 
397
- `printed_age` is the dancer's own age as the row printed it (`9`), verbatim, null where the row
398
- printed none. It is a print, never a reading of a birth year. A release older than the column
399
- answers null for every row, and `rel.capability("results.printed_age")` says which.
400
-
401
430
  The scopes: `majors` reads the majors (tiers T1 to T3), `transcribed` the transcribed rows of
402
431
  every tier, `platform` every row a results platform published, `all` every row.
403
432