@finbheara/names 0.16.0 → 0.18.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.
Files changed (33) hide show
  1. package/README.md +33 -0
  2. package/dist/chunks/{index-ye6j60jn.js → index-17zzg7f3.js} +5 -5
  3. package/dist/chunks/{index-ye6j60jn.js.map → index-17zzg7f3.js.map} +2 -2
  4. package/dist/chunks/index-18z8akw8.js +42 -0
  5. package/dist/chunks/{index-tqdbxd92.js.map → index-18z8akw8.js.map} +3 -3
  6. package/dist/chunks/{index-ky754nsf.js → index-7j32khen.js} +9 -7
  7. package/dist/chunks/{index-ky754nsf.js.map → index-7j32khen.js.map} +4 -4
  8. package/dist/chunks/{index-tk01chxw.js → index-gxw36cg3.js} +27 -16
  9. package/dist/chunks/{index-tk01chxw.js.map → index-gxw36cg3.js.map} +2 -2
  10. package/dist/chunks/{index-74fyytnh.js → index-qmn87bdh.js} +21 -1411
  11. package/dist/chunks/index-qmn87bdh.js.map +11 -0
  12. package/dist/chunks/index-xtwbdzy1.js +1418 -0
  13. package/dist/chunks/{index-74fyytnh.js.map → index-xtwbdzy1.js.map} +3 -5
  14. package/dist/chunks/{phrase-2hj26asc.js → phrase-hze7av6y.js} +3 -3
  15. package/dist/classifier/index.js +2 -2
  16. package/dist/cli/bin.js +109 -0
  17. package/dist/cli/bin.js.map +11 -0
  18. package/dist/cli/census.js +3 -3
  19. package/dist/index.js +24 -10
  20. package/dist/index.js.map +1 -1
  21. package/dist/measure/index.js +2 -2
  22. package/dist/normalize/index.js +22 -8
  23. package/dist/normalize/index.js.map +1 -1
  24. package/dist/types/classifier/features.d.ts +2 -2
  25. package/dist/types/cli/bin.d.ts +10 -0
  26. package/dist/types/cli/tables.d.ts +13 -0
  27. package/dist/types/lexicon/place.d.ts +16 -0
  28. package/dist/types/normalize/given-diminutives.d.ts +15 -6
  29. package/dist/types/normalize/given-families.d.ts +5 -0
  30. package/dist/types/normalize/index.d.ts +2 -2
  31. package/package.json +2 -1
  32. package/dist/chunks/index-tqdbxd92.js +0 -27
  33. /package/dist/chunks/{phrase-2hj26asc.js.map → phrase-hze7av6y.js.map} +0 -0
@@ -329,7 +329,7 @@ function isCompoundSurname2(tokens) {
329
329
  function spaceAfterComma2(printed) {
330
330
  return printed.replace(/,(?=\S)/gu, ", ");
331
331
  }
332
- var NAME_SUFFIXES = new Set([
332
+ var NAME_SUFFIXES2 = new Set([
333
333
  "tcrg",
334
334
  "adcrg",
335
335
  "bg",
@@ -341,8 +341,8 @@ var NAME_SUFFIXES = new Set([
341
341
  "iv",
342
342
  "v"
343
343
  ]);
344
- function isNameSuffix(token) {
345
- return NAME_SUFFIXES.has(token.replace(/\./gu, "").toLocaleLowerCase());
344
+ function isNameSuffix2(token) {
345
+ return NAME_SUFFIXES2.has(token.replace(/\./gu, "").toLocaleLowerCase());
346
346
  }
347
347
  function tokenize(s, leadIsGiven = false) {
348
348
  const raw = s.split(/\s+/u).filter((t) => t !== "");
@@ -366,7 +366,7 @@ function tokenize(s, leadIsGiven = false) {
366
366
  function inferNameOrder2(printed, roles) {
367
367
  const comma = commaReading2(printed);
368
368
  if (comma === "none")
369
- return (roles === undefined ? undefined : lexiconNameOrder(printed, roles)) ?? "given-first";
369
+ return (roles === undefined ? undefined : lexiconNameOrder2(printed, roles)) ?? "given-first";
370
370
  return comma === "separator" ? "surname-first" : "given-first";
371
371
  }
372
372
  function commaReading2(printed) {
@@ -378,7 +378,7 @@ function commaReading2(printed) {
378
378
  const after = tokenize(printed.slice(at + 1));
379
379
  if (after.length === 0)
380
380
  return "trailing";
381
- if (after.every(isNameSuffix))
381
+ if (after.every(isNameSuffix2))
382
382
  return "suffix";
383
383
  const before = tokenize(printed.slice(0, at));
384
384
  const tail = before[before.length - 1];
@@ -386,11 +386,11 @@ function commaReading2(printed) {
386
386
  return "particle";
387
387
  return "separator";
388
388
  }
389
- function lexiconNameOrder(printed, roles) {
389
+ function lexiconNameOrder2(printed, roles) {
390
390
  const s = cleanPrint(printed);
391
391
  if (s.includes(",") || s.includes(":"))
392
392
  return;
393
- const tokens = tokenize(s).filter((t) => !isNameSuffix(t));
393
+ const tokens = tokenize(s).filter((t) => !isNameSuffix2(t));
394
394
  if (tokens.length < 2)
395
395
  return;
396
396
  const one = (t) => {
@@ -409,6 +409,17 @@ function lexiconNameOrder(printed, roles) {
409
409
  return;
410
410
  return last ? "surname-first" : "given-first";
411
411
  }
412
+ function tippedNameOrder2(printed, roles, pinned) {
413
+ const s = cleanPrint(printed);
414
+ if (s === "" || s.includes(",") || s.includes(":"))
415
+ return;
416
+ const lex = roles === undefined ? undefined : lexiconNameOrder2(s, roles);
417
+ if (lex !== undefined)
418
+ return { order: lex, via: "lexicon" };
419
+ if (pinned !== undefined)
420
+ return { order: pinned, via: "override" };
421
+ return;
422
+ }
412
423
  function cleanPrint(printed) {
413
424
  return printed.replace(/\s+/gu, " ").trim().replace(/,+$/u, "").trim();
414
425
  }
@@ -418,7 +429,7 @@ function resolveNameOrder2(printed, order = "unknown") {
418
429
  function peelSuffixes(half, tokens) {
419
430
  const rest = [...half];
420
431
  const suffixes = [];
421
- while (rest.length > 0 && isNameSuffix(tokens[rest[rest.length - 1]])) {
432
+ while (rest.length > 0 && isNameSuffix2(tokens[rest[rest.length - 1]])) {
422
433
  suffixes.unshift(rest.pop());
423
434
  }
424
435
  return { rest, suffixes };
@@ -432,7 +443,7 @@ function splitPersonName2(printed, order = "unknown") {
432
443
  const at = s.indexOf(",");
433
444
  const headText = at > 0 ? s.slice(0, at) : s;
434
445
  const tailText = at > 0 ? s.slice(at + 1) : "";
435
- const nameTokens = s.split(/\s+/u).filter((t) => t !== "" && !isNameSuffix(t));
446
+ const nameTokens = s.split(/\s+/u).filter((t) => t !== "" && !isNameSuffix2(t));
436
447
  const leadIsGiven = at < 0 && effective === "given-first" && nameTokens.length >= 3;
437
448
  const headTokens = tokenize(headText.replace(/,/gu, " "), leadIsGiven);
438
449
  const tokens = [...headTokens, ...tokenize(tailText.replace(/,/gu, " "))];
@@ -479,7 +490,7 @@ function splitPersonName2(printed, order = "unknown") {
479
490
  return null;
480
491
  return { tokens, surname, given, suffixes, order: effective, declared };
481
492
  }
482
- function givenNameGroups(split) {
493
+ function givenNameGroups2(split) {
483
494
  const groups = [];
484
495
  let run = [];
485
496
  for (let k = 0;k < split.given.length; k++) {
@@ -726,7 +737,7 @@ function parsePersonName2(printed, order = "unknown", lexicon) {
726
737
  if (split === null)
727
738
  return null;
728
739
  const spell = spellingLookup2(lexicon);
729
- const given = givenNameGroups(split).map((g) => renderRun(split, g, lexicon, spell));
740
+ const given = givenNameGroups2(split).map((g) => renderRun(split, g, lexicon, spell));
730
741
  return {
731
742
  last: renderRun(split, split.surname, lexicon, spell),
732
743
  first: given[0] ?? "",
@@ -930,7 +941,7 @@ function buildFromIcao(ctx, icao, print) {
930
941
  const surnameText = s.slice(0, at);
931
942
  const fields = s.slice(at + SURNAME_SEPARATOR2.length).split(GIVEN_SEPARATOR2).filter((f) => f !== "");
932
943
  const suffixes = [];
933
- while (fields.length > 0 && isNameSuffix(fields[fields.length - 1])) {
944
+ while (fields.length > 0 && isNameSuffix2(fields[fields.length - 1])) {
934
945
  suffixes.unshift(fields.pop());
935
946
  }
936
947
  const nn2 = toAscii2(s);
@@ -990,7 +1001,7 @@ function buildPersonName(ctx, print, order) {
990
1001
  nn1,
991
1002
  nn2: formatPersonDisplay2(parts),
992
1003
  surname: partFromRun(split, split.surname, ctx),
993
- given: givenNameGroups(split).map((g) => partFromRun(split, g, ctx)),
1004
+ given: givenNameGroups2(split).map((g) => partFromRun(split, g, ctx)),
994
1005
  suffixes: split.suffixes.map((i) => split.tokens[i]),
995
1006
  refusal: null,
996
1007
  verdict
@@ -1127,7 +1138,7 @@ function personNameFromIcao2(icao, print) {
1127
1138
  return defaultPersonNameFactory2().fromIcao(icao, print);
1128
1139
  }
1129
1140
 
1130
- export { NAME_REFUSED2, stripEveryAside2, stripTrailingCredentials2, scrubNameDetail2, scrubName2, foldNameKey2, nameFold2, PLATFORM_PLACEHOLDERS2, NAME_PLACEHOLDERS2, placeholderOf2, isPlaceholderPrint2, isNoNamePrint2, COMPOUND_SURNAMES2, isCompoundSurname2, spaceAfterComma2, isNameSuffix, tokenize, inferNameOrder2, commaReading2, lexiconNameOrder, resolveNameOrder2, splitPersonName2, classifyCell2, capitalise2, nameCase2, SURNAME_SEPARATOR2, GIVEN_SEPARATOR2, titleCaseNamePart2, spellingLookup2, parsePersonName2, formatPersonDisplay2, personDisplayName2, NAME_TRADITIONS2, traditionFromIndex2, isIcaoName2, levelOf2, givenKeyAbbreviates2, givenAbbreviates2, PersonName2, DEFAULT_PERSON_NAME_CAPACITY2, traditionLookupOf2, createPersonNameFactory2, createCachingPersonNameFactory2, defaultPersonNameFactory2, personName2, personNameFromIcao2 };
1141
+ export { NAME_REFUSED2, stripEveryAside2, stripTrailingCredentials2, scrubNameDetail2, scrubName2, foldNameKey2, nameFold2, PLATFORM_PLACEHOLDERS2, NAME_PLACEHOLDERS2, placeholderOf2, isPlaceholderPrint2, isNoNamePrint2, COMPOUND_SURNAMES2, isCompoundSurname2, spaceAfterComma2, NAME_SUFFIXES2, isNameSuffix2, tokenize, inferNameOrder2, commaReading2, lexiconNameOrder2, tippedNameOrder2, resolveNameOrder2, splitPersonName2, givenNameGroups2, classifyCell2, capitalise2, nameCase2, SURNAME_SEPARATOR2, GIVEN_SEPARATOR2, titleCaseNamePart2, spellingLookup2, parsePersonName2, formatPersonDisplay2, personDisplayName2, NAME_TRADITIONS2, traditionFromIndex2, isIcaoName2, levelOf2, givenKeyAbbreviates2, givenAbbreviates2, PersonName2, DEFAULT_PERSON_NAME_CAPACITY2, traditionLookupOf2, createPersonNameFactory2, createCachingPersonNameFactory2, defaultPersonNameFactory2, personName2, personNameFromIcao2 };
1131
1142
 
1132
- //# debugId=2B32B66D0F08008A64756E2164756E21
1133
- //# sourceMappingURL=index-tk01chxw.js.map
1143
+ //# debugId=CB2BA3550014BCAF64756E2164756E21
1144
+ //# sourceMappingURL=index-gxw36cg3.js.map
@@ -13,7 +13,7 @@
13
13
  "/**\n * person-name.ts — the parsed personal name, and its five level projections.\n *\n * `docs/NAME-NORMALIZATION.md` § *The shape of the normalizer* (440-560) is the\n * specification. Read it; this file implements it and does not restate it.\n *\n * ## One parse, five projections — not five normalizers\n *\n * The ask is a canonical NAME normalizer, not a canonical STRING normalizer. A\n * string normalizer must pick one lossy answer, and every caller that wanted a\n * different one writes its own — which is how six particle vocabularies and\n * three splitters happened. This parses once, keeps the structure, and lets each\n * caller name the loss it can afford with a `dop` argument.\n *\n * NN0 is the print. NN1 repairs only never-information. NN2 is the canonical\n * display string. NN3 drops punctuation and case off NN2. NN4 drops field order\n * off NN3. The level table in § *The levels, by use case* is authority for which of those each level\n * keeps.\n *\n * ## NN2 IS NOT RE-IMPLEMENTED HERE\n *\n * It is `./person-display.ts`, called. That module is the display convention's renderer\n * and it already reads the one splitter, the one particle vocabulary and the\n * lexicon; a second renderer built off `NamePart` would be the third\n * implementation of \"which token is the surname\" that this whole initiative\n * exists to delete. NN3 and NN4 are then pure string transforms of NN2, which is\n * exactly what that table says they are.\n *\n * ## What `NamePart` is for, since NN2 does not read it\n *\n * The per-PART lexicon lookup. `lexiconKey(\"Torvell-MacDonald\")` is\n * `torvellmacdonald`, which no entry answers; `macdonald` is one. A compound's\n * `parts` make that lookup per-part by construction, so no fused-prefix stem list is\n * needed to find the lexicon entry inside a compound.\n *\n * ## Recursion, not inheritance\n *\n * `McRalue-Quorvez`, `de la Varno-O'Thyltith` and `McFoskemow-Varnowski` are measured\n * corpus names that a class hierarchy cannot express — no object is both\n * `IrishName` and `HispanicName`. A part that may contain parts holds them\n * without strain and each child keeps its own `tradition`.\n *\n * ## The parts carry the PRINT\n *\n * `particles`, `base` and `suffixes` hold the print's own tokens — accent, case\n * and apostrophe intact. `{ particles: [\"Ní\"], base: \"Mhaolvarna\" }` is what\n * makes `NíMhaolvarna`, `Ní Mhaolvarna` and `nimhaolvarna` three renderings of one\n * parse instead of a smush committed at parse time.\n *\n * ## A FUSED prefix is not a particle run\n *\n * `particles` holds what the PRINT separated. The `Mc` of `McRalue` is inside\n * the token, so it is part of `base` and `./name-case.ts`'s D3 rules answer for\n * it; the `Mc` of `Mc Virkby` is a run. That is the vocabulary's own test read at\n * the other boundary — a particle is confirmed from the tokens that follow it,\n * never from resemblance.\n */\n\nimport { normalizeApostrophes } from \"../lexicon/apostrophes.ts\";\nimport { toAscii } from \"../lexicon/ascii-approx.ts\";\nimport { isStandaloneNameParticle, nameParticle } from \"../particles/particle-vocabulary.ts\";\nimport { type CellVerdict, type Refusal, classifyCell } from \"./cell-verdict.ts\";\nimport { isNoNamePrint } from \"./name-placeholder.ts\";\nimport { NAME_REFUSED, type ParentheticalHandler } from \"./name-scrub.ts\";\nimport {\n\ttype NameOrder,\n\ttype NameSplit,\n\tgivenNameGroups,\n\tisNameSuffix,\n\tsplitPersonName,\n} from \"./name-split.ts\";\nimport {\n\ttype DisplayLexicon,\n\tGIVEN_SEPARATOR,\n\tSURNAME_SEPARATOR,\n\tformatPersonDisplay,\n\tlexiconKey,\n\tparsePersonName,\n} from \"./person-display.ts\";\nimport { isTeamPrint } from \"./team-name.ts\";\n\n// ─── traditions ───────────────────────────────────────────────────────────────\n\n/**\n * What tradition a name part belongs to. One letter, per `docs/NAME-NORMALIZATION.md:449`.\n *\n * IT IS CARRIED AND NEVER BRANCHED ON, which is the same discipline\n * `../particles/particle-vocabulary.ts` states for `ParticleTradition`: the flag is\n * evidence for a consumer, and the only behaviour the document reserves for it is\n * denial at NN5 — *\"two parts with different non-null traditions never match\"* —\n * which is the experimental band and not implemented here.\n */\nexport type NameTradition = \"a\" | \"b\" | \"g\" | \"i\" | \"n\" | \"s\";\n\n/**\n * The six traditions, each under BOTH of its codes.\n *\n * TWO ALPHABETS FOR ONE CONCEPT, AND THAT IS WHY THIS TABLE EXISTS. `names.txt`\n * issues a tradition as a DIGIT (`Kowalski:L6`) and its header rules those\n * indices permanent, running `1-9` then `a-z`; `docs/NAME-NORMALIZATION.md`\n * spells the same six as LETTERS. Deriving either from the other by position is\n * how they silently diverge the first time a seventh tradition is issued, so\n * both codes sit on one row and a spec pins that each column is injective.\n *\n * WELSH AND ROMANCE ARE DELIBERATELY UNISSUED — `names.txt` says so in its own\n * header — so no particle of the `romance` group reaches a tradition here.\n */\nexport const NAME_TRADITIONS: readonly {\n\treadonly letter: NameTradition;\n\treadonly index: string;\n\treadonly label: string;\n}[] = [\n\t{ letter: \"a\", index: \"1\", label: \"Armenian\" },\n\t{ letter: \"g\", index: \"2\", label: \"Germanic\" },\n\t{ letter: \"b\", index: \"3\", label: \"Iberian\" },\n\t{ letter: \"i\", index: \"4\", label: \"Irish/Gaelic\" },\n\t{ letter: \"n\", index: \"5\", label: \"Nordic\" },\n\t{ letter: \"s\", index: \"6\", label: \"Slavic\" },\n];\n\n/** `names.txt`'s tradition index → this module's letter. `undefined` if unissued. */\nexport function traditionFromIndex(index: string): NameTradition | undefined {\n\treturn NAME_TRADITIONS.find((t) => t.index === index)?.letter;\n}\n\n/**\n * A tradition lookup over `names.txt`, as this module consults it: one O(1)\n * question keyed by `lexiconKey()`, answered with a letter or `undefined`.\n *\n * IT IS INJECTED FOR THE SAME REASON `DisplayLexicon` IS. This package is a\n * zero-dependency leaf that reads no file, and a consumer may cache folds that run\n * through it under a key that covers the code and no data file — so a table compiled\n * in here is one such a cache key cannot see moving. The caller that already holds\n * `names.txt` hands its lookup in.\n */\nexport type NameTraditionLookup = (key: string) => NameTradition | undefined;\n\n// ─── the type ─────────────────────────────────────────────────────────────────\n\n/**\n * One name part: a root, the particle run that governs it, and — for a\n * compound joined by a hyphen or a space — the decomposition of that root.\n */\nexport interface NamePart {\n\t/**\n\t * The particle run as the PRINT gave it, in reading order, never smushed.\n\t * Empty where the print separated none.\n\t */\n\treadonly particles: readonly string[];\n\t/**\n\t * The root the particles govern, as printed. May carry a space (`Stoskmore Trirock`)\n\t * or a hyphen (`Walter-Oreskarard`), and either makes it a compound — see `parts`.\n\t */\n\treadonly base: string;\n\t/**\n\t * `base` decomposed. NON-EMPTY ONLY FOR A COMPOUND, and a compound here is a root\n\t * of two or more pieces joined by a HYPHEN OR A SPACE: `O'Mearorro-Failtonton` and\n\t * `Comerton Rennuvham` both decompose, one leaf per piece. The rule\n\t * for names is that a hyphen and a space between two surname parts are the same\n\t * thing (`name-compose.ts`, `surnameParts`), and a directory that prints\n\t * `Comerton Rennuvham, Ciara` names the same `Rennuvham` a register printing `Ciara\n\t * Rennuvham` does. The JOINER IS NOT RECORDED HERE because nothing renders from the\n\t * parts: `base` keeps the print's own space or hyphen, and `person-display.ts`\n\t * renders `base` (`Stoskmore Trirock`, never `StoskmoreTrirock`).\n\t */\n\treadonly parts: readonly NamePart[];\n\t/** what tradition the part asserts, or `null` where nothing settles it */\n\treadonly tradition: NameTradition | null;\n}\n\n/** The levels over which equality is an equivalence relation. */\nexport type TransitiveLevel = \"nn0\" | \"nn1\" | \"nn2\" | \"nn3\" | \"nn4\";\n\n/**\n * Every level, including the experimental similarity band.\n *\n * THE BOUNDARY BETWEEN NN4 AND NN5 IS TRANSITIVITY, and it is in the types\n * rather than in a docblock. NN0-NN4 are total functions, so equal\n * keys form an equivalence relation and a hash-backed set or map is well\n * defined. NN5 is a DISTANCE, so `probablySame(a,b) ∧ probablySame(b,c) ⇏\n * probablySame(a,c)` and any structure over it is a clustering whose contents\n * depend on insertion order and on a declared linkage.\n */\nexport type Level = TransitiveLevel | \"nn5\";\n\n/**\n * A printed personal name, parsed.\n *\n * `toString()` RETURNS NN2 DELIBERATELY, and the reason is asymmetric cost: NN2\n * is the strictest view, so an accidental `${a} === ${b}` UNDER-merges. A false\n * reject is recoverable. A false accept silently merges two dancers.\n *\n * NEVER COMPARE TWO LEVEL STRINGS WITH `===`. This is the floating-point\n * discipline and it is what stops a caller writing a second normalizer: a caller\n * that cannot compare declares its precision instead, and the `dop` argument at\n * the call site *is* the justification, inline and readable.\n */\nexport interface PersonName {\n\treadonly [Symbol.toStringTag]: \"PersonName\";\n\t/** NN2. See the note above before comparing it with anything. */\n\ttoString(): string;\n\n\t/** NN0 — exactly what the page said. */\n\treadonly nn0: string;\n\t/** NN1 — the print with only never-information repaired. */\n\treadonly nn1: string;\n\t/** NN2 — the canonical display string, `Last<<First<Middle`, ASCII. */\n\treadonly nn2: string;\n\t/**\n\t * NN3 — the fold two prints are COMPARED at. NOT a drawer a row goes in: no row is\n\t * ever filed under a key, and a key is never used for matching by `===`. A row is filed for the\n\t * address of the result that printed it. Two names are compared with\n\t * `probablySame(a, b, dop)`; a caller needing a hash structure takes\n\t * `createNameSet(dop)` / `createNameMap(dop)`, which hold the precision themselves.\n\t */\n\treadonly nn3: string;\n\t/** NN4 — NN3 with field order dropped. A matching view, never a key. */\n\treadonly nn4: string;\n\n\t/**\n\t * How long the DISPLAY name is — `toString()`, which is NN2.\n\t *\n\t * IT IS A GETTER FOR THE DISPLAY NAME LENGTH: `p.nn3.length` asks for the exact\n\t * level's length, and `p.length` is the display name's. A caller wanting the\n\t * length of some OTHER level still asks that level for it, which is the point\n\t * of the split — this one is the length of the name as the project renders it,\n\t * and nothing has to know which level that is.\n\t *\n\t * IT IS NOT A COMPARISON. Two names of equal display length are not thereby\n\t * the same name; `nameCompare`/`probablySame` are the only things that answer\n\t * that, at a declared level.\n\t */\n\treadonly length: number;\n\n\t/**\n\t * The SURNAME field of NN3 — upper case, punctuation and accents gone.\n\t *\n\t * THE KEY-GRADE SURNAME, and it exists so that a caller asking *\"do these two\n\t * prints share a surname\"* never re-derives one. It is the half of `nn3`\n\t * before the field separator, so it folds exactly as `nn3` folds and two\n\t * callers cannot disagree about it: `O'Rervton`, `ORervton` and `Ó Rervton` reach\n\t * `ORERVTON`, and the spaced compound `Graro - Brarkia` reaches `GRAROBRARKIA`\n\t * because a compound surname is ONE field (C4).\n\t *\n\t * `surname` above is the PARSE — particles, base, sub-parts, tradition, with\n\t * the print's own case and accents intact. This is its projection at NN3. Ask\n\t * `surname` what the name IS; ask this whether two prints AGREE on it. It is not\n\t * a filing key and a row is never filed under it (see `nn3`).\n\t *\n\t * `\"\"` for a refusal, which is the same answer as \"no surname was captured\"\n\t * on purpose: neither holds a surname, and a refusal must not fold to a\n\t * name-shaped token (see `nn3`).\n\t */\n\tsurnameKey(): string;\n\n\t/**\n\t * The GIVEN-NAME fields of NN3, in print order, AS A LIST.\n\t *\n\t * `givenName()` below is this joined, and it is DEFINED as this joined, so the\n\t * two cannot disagree about where a field boundary is. A caller that wants the\n\t * fields asks for the fields; splitting the joined string on the separator is\n\t * a hand split, and a hand split is a second answer to where a field boundary is.\n\t *\n\t * THE FIELD ORDER IS THE PRINT'S. Element `0` is the first given name and the\n\t * rest are what NN5 calls the MIDDLE fields; `./name-middle.ts` is the one\n\t * consumer that reads it that way, and it is a RELATION over two of these\n\t * lists rather than a sixth level.\n\t *\n\t * A TOKEN-VALUED PARTITIONER IS COMPARED AS TOKENS. The same rule holds for school\n\t * names, and the reason is the same here, except that C4 makes it stronger — no\n\t * NN3 field contains a space, so the join back is injective and the rule is\n\t * about which question is being asked, not about ambiguity.\n\t *\n\t * `[]` where the parse holds no given name at all, and for a refusal.\n\t */\n\tgivenFields(): readonly string[];\n\n\t/**\n\t * The GIVEN-NAME fields of NN3, in print order, `<`-joined.\n\t *\n\t * IT EXISTS so that no caller slices a stored key at `<<` and splits the remainder\n\t * on `<` itself. `surnameKey()` and this one partition\n\t * `nn3`, so a caller needs neither separator.\n\t *\n\t * IT IS NN3'S FIELD STRUCTURE AND NOT THE PARSE'S. A suffix NN2 wrote into the\n\t * trailing given slot is here too — `Jyskock<<John<II` gives `JOHN<II` —\n\t * because that is where the KEY carries it, and a caller comparing given-name\n\t * fields is comparing what the key holds. `suffixes` is where the parse's own\n\t * list of them is, and it is the thing to read when the question is about\n\t * generation rather than about the key.\n\t *\n\t * `\"\"` where the parse holds no given name at all, and for a refusal.\n\t */\n\tgivenName(): string;\n\n\treadonly surname: NamePart;\n\treadonly given: readonly NamePart[];\n\t/**\n\t * Generational and qualification suffixes, AS PRINTED and in print order.\n\t * The canonical spelling is a rendering decision and lives at NN2.\n\t */\n\treadonly suffixes: readonly string[];\n\n\t/**\n\t * Non-null exactly when the cell holds something that is not a person's name.\n\t * An EMPTY cell holds nothing and carries no refusal (`isEmpty()`), so\n\t * `refusal === null` is not \"a person\": ask `isPerson()`.\n\t */\n\treadonly refusal: Refusal | null;\n\t/** What `classifyCell` made of the cell. */\n\treadonly verdict: CellVerdict;\n\n\t/**\n\t * Does this cell name a TEAM rather than a person?\n\t *\n\t * THE PREDICATE, and the reason it exists is the shape it replaces:\n\t * `PersonName.toString().contains('Team')` or anything like it.\n\t * A substring test says yes to `Teamwork Murphy`; this reads the team\n\t * format — the word, and at most one letter after one space.\n\t *\n\t * IT IS ASKED OF NN1, NOT OF `toString()`. NN2 of a team is `!!!INVALID`,\n\t * because a team fills neither the surname nor the given slot and the parse\n\t * refuses it; NN1 is the print with only never-information repaired, which is\n\t * where the designation still is. A `true` here therefore EXPLAINS a refusal\n\t * rather than contradicting one — the cell was rejected as a person's name\n\t * because it is a team, which is a different fact from a defective cell.\n\t */\n\tisTeam(): boolean;\n\n\t/**\n\t * Does this cell name a person?\n\t *\n\t * THE THREE KINDS ARE NOT TWO, and this predicate is where a caller stops\n\t * having to know that. `./cell-verdict.ts` keeps *\"no name was captured\"*\n\t * and *\"this is not a name\"* apart because a consumer reports each\n\t * separately; a caller asking whether it holds a person wants `false` for\n\t * both, and would otherwise re-derive the disjunction — a second answer to\n\t * the question `classifyCell` already settled.\n\t *\n\t * IT REPLACES `icao === null`. A key string that is absent is the OUTPUT of\n\t * a refusal, so testing it makes every consumer depend on the spelling of a\n\t * fold rather than on the verdict behind it: `icao === null` becomes\n\t * `!nameA?.isPerson()`.\n\t *\n\t * It says nothing about WHICH person, and nothing about teams — which\n\t * prints name no person is `isTeam()`'s question and is not answered here.\n\t */\n\tisPerson(): boolean;\n\n\t/**\n\t * Was NO name captured: the cell is empty, or whitespace only?\n\t *\n\t * The third kind, asked directly. An empty cell is neither a person nor a\n\t * refusal, so a caller that means \"the sheet printed nothing here\" asks this\n\t * and never `refusal === null && !isPerson()`.\n\t */\n\tisEmpty(): boolean;\n\n\t/**\n\t * Did the page print NO NAME here: an empty cell, a cell with no letter in\n\t * it (`???`, `0`), or a placeholder (`Unknown`, `TBA`, `Not known`)?\n\t *\n\t * `isEmpty()` is the first kind alone; this is the whole of \"no name was\n\t * printed\", and it does not depend on which refusal rule fired (`TBA` is the\n\t * scrub's `refuse-single-token`, `Not known` the guard's `placeholder`).\n\t * `./name-placeholder.ts` is the one place the answer is decided, and\n\t * `isNoNamePrint` there is the same answer for a caller that holds only the\n\t * print.\n\t */\n\tprintsNoName(): boolean;\n}\n\n// ─── build context ────────────────────────────────────────────────────────────\n\n/**\n * What one factory builds names under. Nothing in this module is state: every\n * function that consults the lexicon, the tradition lookup or the parenthetical\n * handler takes the context it was handed, so two factories never see each\n * other's options. `./factory.ts` makes the public factories over it.\n */\nexport interface BuildContext {\n\t/** consulted by NN2 before its rules (doc D5); `undefined` means rules only */\n\treadonly lexicon: DisplayLexicon | undefined;\n\t/** a root's tradition where its particles do not settle it */\n\treadonly traditions: NameTraditionLookup | undefined;\n\t/** what an aside in `( … )` or `\" … \"` means; `undefined` strips every aside */\n\treadonly parenthetical: ParentheticalHandler | undefined;\n}\n\n// ─── the levels ───────────────────────────────────────────────────────────────\n\n/**\n * NN1 — the print with only NEVER-INFORMATION repaired.\n *\n * Compatibility composition folds a ligature (`Delfina` → `Delfina`), the apostrophe\n * vocabulary folds a curly quote, format characters go and control characters\n * become the whitespace they were standing in for. CASE AND ACCENTS SURVIVE:\n * the level table keeps both at this level, and input case is a signal that NN0 and NN1\n * may read.\n */\nfunction renderNn1(print: string): string {\n\treturn normalizeApostrophes(print.normalize(\"NFKC\"))\n\t\t.replace(/\\p{Cf}+/gu, \"\")\n\t\t.replace(/\\p{Cc}+/gu, \" \")\n\t\t.replace(/\\s+/gu, \" \")\n\t\t.trim();\n}\n\n/**\n * NN3 — NN2 with punctuation and case dropped (the level table, D2, C4).\n *\n * A PURE TRANSFORM OF NN2, which is what makes NN3 \"ignores strictly more than\n * NN2 does\" a property rather than a hope. The separators survive because they\n * are the field structure, not punctuation: `O'Rervton<<Moira` reaches\n * `ORERVTON<<MOIRA`, and the space of `Stoskmore Trirock<<Steathainnell` goes with\n * everything else, which is C4 — no field contains a space.\n */\nfunction renderNn3(nn2: string): string {\n\treturn nn2.replace(/[^\\p{L}\\p{N}<]+/gu, \"\").toLocaleUpperCase();\n}\n\n/**\n * NN2 cut into its fields — the surname, then each given name, in print order.\n *\n * ONE CUT, READ BY BOTH HALVES. `surnameKey()` takes `[0]` and `givenName()`\n * takes the rest, so the two cannot disagree about where the boundary is, and\n * neither re-implements `renderNn3` — each folds the slice it took with the same\n * function `nn3` itself uses. The suffixes are already outside the given-name\n * fields, because NN2 wrote them there.\n */\nfunction fieldsOfNn2(nn2: string): string[] {\n\tconst at = nn2.indexOf(SURNAME_SEPARATOR);\n\tif (at < 0) return [nn2];\n\treturn [\n\t\tnn2.slice(0, at),\n\t\t...nn2\n\t\t\t.slice(at + SURNAME_SEPARATOR.length)\n\t\t\t.split(GIVEN_SEPARATOR)\n\t\t\t.filter((f) => f !== \"\"),\n\t];\n}\n\n/**\n * NN4 — NN3 with field order dropped (the level table).\n *\n * THE ORDER IT TOLERATES IS THE NAME ORDER. A sheet that printed `Mailtina John`\n * where another printed `John Mailtina` produces two different NN3 keys and one\n * NN4, which is what the level is for: asking whether two prints are the same\n * name when the split may have read them opposite ways.\n */\nfunction renderNn4(nn3: string): string {\n\treturn nn3\n\t\t.split(GIVEN_SEPARATOR)\n\t\t.filter((f) => f !== \"\")\n\t\t.sort()\n\t\t.join(GIVEN_SEPARATOR);\n}\n\n// ─── the parse ────────────────────────────────────────────────────────────────\n\n/** The tradition a particle run asserts, where the vocabulary settles one. */\nfunction traditionOfParticles(particles: readonly string[]): NameTradition | null {\n\tfor (const p of particles) {\n\t\tconst entry = nameParticle(p);\n\t\tif (entry === undefined) continue;\n\t\t// THREE OF THE SIX VOCABULARY GROUPS MAP, AND THE PROJECT ALREADY SAID SO.\n\t\t// `src/cli/propose-traditions.ts` is the proposer\n\t\t// that issues these indices from a print's morphology: its Irish/Gaelic\n\t\t// marker is `^(Mc|Fitz)` — *\"covers the Norman `Fitz`\"* — and its Germanic\n\t\t// marker is the `Van|Von|Der|Den|Ter|Ten|Zu` particle. `romance` reaches\n\t\t// nothing, because `names.txt` rules Romance deliberately unissued and the\n\t\t// proposer types only the MULTI-TOKEN `de la`/`de los`/`del` as Iberian,\n\t\t// which is a fact about the whole print and not about a bare `de`.\n\t\t// `elided` and `ocr` describe how a print spells a join, not what it\n\t\t// asserts. A token carrying several traditions is answered by the first\n\t\t// that maps, so `o` (gaelic AND elided) is Irish and `d` is nothing.\n\t\tif (entry.traditions.includes(\"gaelic\") || entry.traditions.includes(\"norman\")) return \"i\";\n\t\tif (entry.traditions.includes(\"germanic\")) return \"g\";\n\t}\n\treturn null;\n}\n\n/** The tradition of one root, from the particles first and the lexicon second. */\nfunction traditionOf(\n\tparticles: readonly string[],\n\tbase: string,\n\tctx: BuildContext,\n): NameTradition | null {\n\tconst fromParticles = traditionOfParticles(particles);\n\tif (fromParticles !== null) return fromParticles;\n\tif (ctx.traditions === undefined) return null;\n\tconst key = lexiconKey(base);\n\treturn key === \"\" ? null : (ctx.traditions(key) ?? null);\n}\n\n/** A leaf part: no particles of its own, no decomposition. Used for a compound's children. */\nfunction leafPart(base: string, ctx: BuildContext): NamePart {\n\treturn { particles: [], base, parts: [], tradition: traditionOf([], base, ctx) };\n}\n\n/**\n * A ROOT'S COMPOUND PIECES, or one piece where it is not a compound.\n *\n * A HYPHEN AND A SPACE ARE ONE JOINER between two surname parts: `Walter-Oreskarard`\n * and `Comerton Rennuvham` both cut.\n *\n * A HYPHEN ALWAYS CUTS (`docs/NAME-NORMALIZATION.md` § *Consumer contract*). The print\n * hyphenated the piece off, so a hyphenated particle is a piece of its own: `El-Varoun` reads\n * `El` and `Varoun`, `De-Ste-Varne` reads `De`, `Ste` and `Varne`, `Goskick-La-Vorne` reads\n * `Goskick`, `La` and `Vorne`.\n *\n * A SPACE AFTER A PARTICLE DOES NOT CUT: a space is how a particle is printed as well as how\n * two surnames are joined, so the particle stays on the piece after it with the space the\n * print gave, and `Ní Jirkirkane Uí Sevith`'s root reads `Jirkirkane` and `Uí Sevith` and never a\n * part `Uí`. A particle with nothing after it in its hyphen piece is a piece of its own, the\n * same test `partFromTokens` applies to the leading run.\n *\n * Either way the particle still GOVERNS the piece after it, and what compares parts glues it\n * on (`./name-compose.ts`, `surnameParts`), as NN3 does.\n */\nfunction compoundSegments(base: string): string[] {\n\tconst out: string[] = [];\n\tfor (const piece of base.split(/-+/u)) {\n\t\tconst raw = piece.split(/\\s+/u).filter((s) => s !== \"\");\n\t\tlet held: string[] = [];\n\t\tfor (let i = 0; i < raw.length; i++) {\n\t\t\tconst t = raw[i] as string;\n\t\t\tif (i + 1 < raw.length && isStandaloneNameParticle(t)) {\n\t\t\t\theld.push(t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tout.push([...held, t].join(\" \"));\n\t\t\theld = [];\n\t\t}\n\t}\n\treturn out;\n}\n\n/**\n * One part from a run of printed tokens.\n *\n * The particle run is the LEADING tokens that are standalone particles and\n * govern something after them; the rest, joined by the space the print gave, is\n * the root. A trailing token governs nothing and is therefore never a particle,\n * whatever it resembles — the same test `./person-display.ts` applies when it\n * renders the run.\n */\nfunction partFromTokens(tokens: readonly string[], ctx: BuildContext): NamePart {\n\tlet i = 0;\n\twhile (i + 1 < tokens.length && isStandaloneNameParticle(tokens[i] as string)) i++;\n\tconst particles = tokens.slice(0, i);\n\tconst base = tokens.slice(i).join(\" \");\n\tconst segments = compoundSegments(base);\n\treturn {\n\t\tparticles,\n\t\tbase,\n\t\tparts: segments.length > 1 ? segments.map((seg) => leafPart(seg, ctx)) : [],\n\t\ttradition: traditionOf(particles, base, ctx),\n\t};\n}\n\n/** One part from a run of token indices into a split. */\nfunction partFromRun(split: NameSplit, run: readonly number[], ctx: BuildContext): NamePart {\n\treturn partFromTokens(\n\t\trun.map((i) => split.tokens[i] as string),\n\t\tctx,\n\t);\n}\n\n// ─── construction ─────────────────────────────────────────────────────────────\n\ninterface Built {\n\tnn0: string;\n\tnn1: string;\n\tnn2: string;\n\tsurname: NamePart;\n\tgiven: readonly NamePart[];\n\tsuffixes: readonly string[];\n\trefusal: Refusal | null;\n\tverdict: CellVerdict;\n}\n\n/**\n * A `PersonName` over a built parse, with NN3 and NN4 computed on first read.\n *\n * A CLASS, SO THE METHODS LIVE ON THE PROTOTYPE. This was an object literal, and an\n * object literal's methods and getters are function objects made anew per instance:\n * nine of them, each with a closure over the builder, on every one of the ~166k names\n * the memo holds over a corpus pass. Measured on those names, the\n * literal cost 3.9 KB an instance and 612 MB of RSS for the memo; the class holds the\n * strings, the parts and two lazy slots and nothing else per instance.\n */\nclass MaterializedName implements PersonName {\n\treadonly nn0: string;\n\treadonly nn1: string;\n\treadonly nn2: string;\n\treadonly surname: NamePart;\n\treadonly given: readonly NamePart[];\n\treadonly suffixes: readonly string[];\n\treadonly refusal: Refusal | null;\n\treadonly verdict: CellVerdict;\n\t#nn3: string | undefined;\n\t#nn4: string | undefined;\n\n\tconstructor(b: Built) {\n\t\tthis.nn0 = b.nn0;\n\t\tthis.nn1 = b.nn1;\n\t\tthis.nn2 = b.nn2;\n\t\tthis.surname = b.surname;\n\t\tthis.given = b.given;\n\t\tthis.suffixes = b.suffixes;\n\t\tthis.refusal = b.refusal;\n\t\tthis.verdict = b.verdict;\n\t}\n\n\tget [Symbol.toStringTag](): \"PersonName\" {\n\t\treturn \"PersonName\";\n\t}\n\ttoString(): string {\n\t\treturn this.nn2;\n\t}\n\tget nn3(): string {\n\t\t// REFUSAL IS NOT A NAME AND IS NOT FOLDED LIKE ONE. `!!!INVALID` through\n\t\t// `renderNn3` would lose its punctuation and read as a name-shaped token,\n\t\t// which is the one thing the `!!!` spelling of it exists to prevent.\n\t\tthis.#nn3 ??= this.refusal !== null ? NAME_REFUSED : renderNn3(this.nn2);\n\t\treturn this.#nn3;\n\t}\n\tget nn4(): string {\n\t\tthis.#nn4 ??= this.refusal !== null ? NAME_REFUSED : renderNn4(renderNn3(this.nn2));\n\t\treturn this.#nn4;\n\t}\n\tget length(): number {\n\t\treturn this.nn2.length;\n\t}\n\tsurnameKey(): string {\n\t\treturn this.refusal !== null ? \"\" : renderNn3(fieldsOfNn2(this.nn2)[0] ?? \"\");\n\t}\n\tgivenFields(): readonly string[] {\n\t\treturn this.refusal !== null ? [] : fieldsOfNn2(this.nn2).slice(1).map(renderNn3);\n\t}\n\tgivenName(): string {\n\t\t// DEFINED AS THE FIELDS JOINED, not rendered a second way. `renderNn3`\n\t\t// keeps the separator, so folding each field and joining is the same string\n\t\t// as joining and folding — and writing it this way makes that an identity\n\t\t// rather than a coincidence two bodies have to keep agreeing on.\n\t\treturn this.givenFields().join(GIVEN_SEPARATOR);\n\t}\n\tisTeam(): boolean {\n\t\treturn isTeamPrint(this.nn1);\n\t}\n\tisPerson(): boolean {\n\t\treturn this.refusal === null && this.verdict.kind !== \"empty\";\n\t}\n\tisEmpty(): boolean {\n\t\treturn this.verdict.kind === \"empty\";\n\t}\n\tprintsNoName(): boolean {\n\t\treturn this.isEmpty() || isNoNamePrint(this.nn0);\n\t}\n}\n\nfunction materialize(b: Built): PersonName {\n\treturn new MaterializedName(b);\n}\n\nconst EMPTY_PART: NamePart = { particles: [], base: \"\", parts: [], tradition: null };\n\nfunction refusedName(\n\tprint: string,\n\tnn1: string,\n\tverdict: CellVerdict,\n\trefusal: Refusal,\n): PersonName {\n\treturn materialize({\n\t\tnn0: print,\n\t\tnn1,\n\t\t// NN0 AND NN1 STILL CARRY THE PRINT. A refusal says the cell is not a name;\n\t\t// it does not say the page printed nothing, and the level table gives NN0 as\n\t\t// \"exactly what the page said\" with no carve-out.\n\t\tnn2: NAME_REFUSED,\n\t\tsurname: EMPTY_PART,\n\t\tgiven: [],\n\t\tsuffixes: [],\n\t\trefusal,\n\t\tverdict,\n\t});\n}\n\n/**\n * The ICAO shape, as a fast path for a string already believed well-formed.\n *\n * `Surname<<Given<Middle`, which is the shape of the key a row is filed under\n * and what a human-facing surface renders. THROWS on anything else: the point of\n * the fast path is to skip the guard, so a caller that is wrong about its input\n * must find out rather than receive a plausible parse.\n *\n * A SUFFIX IN THE TRAILING GIVEN SLOT IS READ BACK AS A SUFFIX, because that is\n * where NN2 put it (`Jyskock<<John<II`), so `factory.fromIcao(pn.nn2)`\n * reproduces `pn`'s own partition rather than inventing a given name `II`.\n *\n * `print` IS THE VERBATIM STRING THE KEY WAS MADE FROM, where the caller holds\n * it — a stored row holds both. Without it the key stands in for its own input\n * and NN0 reports a fold as though it were the page, which is the one thing NN0\n * may never do: the level table gives NN0 as *\"exactly what the page said\"*.\n * Pass it wherever a row carries it. It changes NOTHING else: the partition, and\n * every level from NN2 down, come off the key, because the key is what the row\n * was filed under and a second opinion at read time is a silent split between\n * the query side and the stored side.\n */\n/**\n * Will `fromIcao` read this string, or throw on it?\n *\n * IT ASKS THE SAME QUESTION THE THROW ASKS, off the same normalized form, so a\n * caller that tests before calling cannot be told yes and then thrown at. That is\n * the whole reason it is here rather than spelled as an `indexOf` at each caller:\n * a stored key with a leading space is ICAO-shaped to a raw `indexOf` and is not\n * to `renderNn1`, and the corpus holds such keys.\n */\nexport function isIcaoName(icao: string): boolean {\n\treturn renderNn1(icao).indexOf(SURNAME_SEPARATOR) > 0;\n}\n\n/** An ICAO key read back into a name. The factories' `fromIcao`. */\nexport function buildFromIcao(ctx: BuildContext, icao: string, print?: string): PersonName {\n\tconst s = renderNn1(icao);\n\tconst at = s.indexOf(SURNAME_SEPARATOR);\n\tif (at <= 0) {\n\t\tthrow new TypeError(\n\t\t\t`fromIcao: not an ICAO name, expected Surname${SURNAME_SEPARATOR}Given: ${JSON.stringify(icao)}`,\n\t\t);\n\t}\n\tconst surnameText = s.slice(0, at);\n\tconst fields = s\n\t\t.slice(at + SURNAME_SEPARATOR.length)\n\t\t.split(GIVEN_SEPARATOR)\n\t\t.filter((f) => f !== \"\");\n\tconst suffixes: string[] = [];\n\twhile (fields.length > 0 && isNameSuffix(fields[fields.length - 1] as string)) {\n\t\tsuffixes.unshift(fields.pop() as string);\n\t}\n\tconst nn2 = toAscii(s);\n\treturn materialize({\n\t\tnn0: print ?? icao,\n\t\tnn1: print === undefined ? s : renderNn1(print),\n\t\tnn2,\n\t\tsurname: partFromTokens(\n\t\t\tsurnameText.split(\" \").filter((t) => t !== \"\"),\n\t\t\tctx,\n\t\t),\n\t\tgiven: fields.map((f) =>\n\t\t\tpartFromTokens(\n\t\t\t\tf.split(\" \").filter((t) => t !== \"\"),\n\t\t\t\tctx,\n\t\t\t),\n\t\t),\n\t\tsuffixes,\n\t\trefusal: null,\n\t\tverdict: { kind: \"name\", scrubbed: s, rules: [] },\n\t});\n}\n\n/**\n * An NN4 string read back: fields whose ORDER carries nothing, because NN4 is\n * the level that dropped it.\n *\n * IT EXISTS FOR C2 AND FOR NOTHING ELSE. Idempotence is scoped to a level\n * re-applied to its OWN output, so `personName(x.nn4).nn4 === x.nn4` has to\n * hold; reading NN2 or NN3 off such a parse is defined but meaningless, since\n * the surname slot holds whichever field sorted first.\n */\nfunction parseUnordered(s: string, ctx: BuildContext): PersonName {\n\tconst fields = s.split(GIVEN_SEPARATOR).filter((f) => f !== \"\");\n\treturn materialize({\n\t\tnn0: s,\n\t\tnn1: s,\n\t\tnn2: (fields[0] as string) + SURNAME_SEPARATOR + fields.slice(1).join(GIVEN_SEPARATOR),\n\t\tsurname: partFromTokens([fields[0] as string], ctx),\n\t\tgiven: fields.slice(1).map((f) => partFromTokens([f], ctx)),\n\t\tsuffixes: [],\n\t\trefusal: null,\n\t\tverdict: { kind: \"name\", scrubbed: s, rules: [] },\n\t});\n}\n\n/** The parse of one printed cell. Total. The factories' `parse`. */\nexport function buildPersonName(ctx: BuildContext, print: string, order: NameOrder): PersonName {\n\tconst nn1 = renderNn1(print);\n\t// THE FAST PATH IS TAKEN ONLY WHERE IT CANNOT THROW, which is what makes this\n\t// function total. `buildFromIcao` rejects a separator at index 0 — the\n\t// point of a fast path is to skip the guard — so `<<Sean`, a key whose\n\t// surname half is empty, would reach a caller as an exception rather than as\n\t// a refusal. It is handed to the guard below instead, which is total.\n\tif (nn1.indexOf(SURNAME_SEPARATOR) > 0) return buildFromIcao(ctx, print);\n\t// An NN4 string: separators but no surname separator. See `parseUnordered`.\n\t//\n\t// A STRING OF BARE SEPARATORS IS NOT ONE. `parseUnordered` reads field 0 as\n\t// the surname slot, so a print whose separators fence off no field at all\n\t// would put `undefined` there and render a name-shaped NN2 out of nothing.\n\t// It is handed to the guard below, which refuses it.\n\tif (\n\t\tnn1.includes(GIVEN_SEPARATOR) &&\n\t\t!/[^\\p{L}\\p{N}<]/u.test(nn1) &&\n\t\tnn1.split(GIVEN_SEPARATOR).some((f) => f !== \"\")\n\t)\n\t\treturn parseUnordered(nn1, ctx);\n\n\tconst verdict = classifyCell(print, { parenthetical: ctx.parenthetical });\n\tif (verdict.kind === \"refused\") return refusedName(print, nn1, verdict, verdict.refusal);\n\tif (verdict.kind === \"empty\") {\n\t\treturn materialize({\n\t\t\tnn0: print,\n\t\t\tnn1,\n\t\t\tnn2: \"\",\n\t\t\tsurname: EMPTY_PART,\n\t\t\tgiven: [],\n\t\t\tsuffixes: [],\n\t\t\t// \"NO NAME WAS CAPTURED\" IS NOT \"THIS IS NOT A NAME\". A consumer reports\n\t\t\t// each separately and `classifyCell` keeps them apart, so an empty\n\t\t\t// cell carries no refusal.\n\t\t\trefusal: null,\n\t\t\tverdict,\n\t\t});\n\t}\n\n\tconst split = splitPersonName(verdict.scrubbed, order);\n\tconst parts = parsePersonName(verdict.scrubbed, order, ctx.lexicon);\n\tif (split === null || parts === null) {\n\t\t// A TEAM PRINT LANDS HERE, via `parsePersonName`'s own null, and it is the\n\t\t// one refusal that is not a defect. `isTeam()` above is what tells the two\n\t\t// apart; there is still no second answer to \"which prints name no person\"\n\t\t// written here, because `parsePersonName` asks the same predicate.\n\t\tconst refusal: Refusal = { rule: \"unsplittable\", printed: print, value: NAME_REFUSED };\n\t\treturn refusedName(print, nn1, verdict, refusal);\n\t}\n\n\treturn materialize({\n\t\tnn0: print,\n\t\tnn1,\n\t\tnn2: formatPersonDisplay(parts),\n\t\tsurname: partFromRun(split, split.surname, ctx),\n\t\tgiven: givenNameGroups(split).map((g) => partFromRun(split, g, ctx)),\n\t\tsuffixes: split.suffixes.map((i) => split.tokens[i] as string),\n\t\trefusal: null,\n\t\tverdict,\n\t});\n}\n\n/**\n * One level off a parsed name, by name.\n *\n * TRANSITIVE LEVELS ONLY, and the type is where that is said: NN5 is a distance\n * and has no string to read.\n */\nexport function levelOf(name: PersonName, dop: TransitiveLevel): string {\n\treturn name[dop];\n}\n\n/**\n * IS ONE GIVEN KEY THE OTHER MADE POORER? Both are `givenName()` keys, and `poorer` abbreviates\n * `fuller` in two shapes. Equal keys abbreviate each other.\n *\n * - THE WHOLE GIVEN NAME AS ONE INITIAL: a platform's public pages print `M Mailtina` where\n * its signed-in pages print `Mary Vellane Mailtina`, so the key `M` abbreviates `MARY<VELLANE`\n * - FIELD BY FIELD, the same number of fields and each field of `poorer` the matching field of\n * `fuller` or its one-letter INITIAL. The parse puts the first part of a compound surname it\n * does not know into the given fields: `N Kaiskystham Vearvo` and `Natalia Kaiskystham Vearvo` are\n * the keys `N<KAISKYSTHAM` and `NATALIA<KAISKYSTHAM` over one surname key `VEARVO`\n *\n * Nothing else is: `C Mailtina Beannell` (`C<MAILTINA`) is not `Cian Beannell` (`CIAN`), and crossed initials\n * (`NATALIA<M` against `N<KAISKYSTHAM`) are neither reading made poorer. The fields are cut here,\n * where the separator is defined, so no caller slices a key by hand.\n */\nexport function givenKeyAbbreviates(poorer: string, fuller: string): boolean {\n\treturn givenFieldsAbbreviate(poorer.split(GIVEN_SEPARATOR), fuller.split(GIVEN_SEPARATOR));\n}\n\n/** `givenKeyAbbreviates` over fields already cut: the one rule, read by both entry points. */\nfunction givenFieldsAbbreviate(p: readonly string[], f: readonly string[]): boolean {\n\tif (p.length === f.length && p.every((x, i) => x === f[i])) return true;\n\tconst whole = p.length === 1 ? (p[0] as string) : \"\";\n\tif (whole.length === 1 && (f[0] ?? \"\").startsWith(whole)) return true;\n\tif (p.length !== f.length) return false;\n\treturn p.every((x, i) => {\n\t\tconst y = f[i] as string;\n\t\treturn x === y || (x.length === 1 && y.startsWith(x));\n\t});\n}\n\n/**\n * Where a name's NN3 given fields stop being given names and start being suffixes. NN2 writes\n * a suffix into the trailing given slot (`Smithson<<W<IV`), and `suffixes` says how many of the\n * trailing fields it is. The same cut as `./name-middle.ts`'s, read off the parse's own decision\n * and never off the vocabulary (`Victoria V Mailtina` prints a middle INITIAL `V`).\n */\nfunction givenSuffixCut(p: PersonName): number {\n\treturn Math.max(1, p.givenFields().length - p.suffixes.length);\n}\n\n/**\n * IS ONE NAME'S GIVEN NAME THE OTHER'S MADE POORER, WITH THE SUFFIXES SET ASIDE? The rule is\n * `givenKeyAbbreviates`'s, applied to the given fields before the suffix cut, and the suffix\n * fields must then be equal at NN3. `givenName()` keeps the suffix in the trailing given slot,\n * because that is where the key carries it, so `W Smithson IV` (`W<IV`) against `William J.\n * Smithson IV` (`WILLIAM<J<IV`) had two fields against three and neither shape fired; set aside,\n * `W` is the whole given name as one initial of `WILLIAM<J`. A suffix one name prints and the\n * other does not is not set aside: `John Mailtina` is not `John Mailtina Jr` made poorer, he may be\n * the father.\n */\nexport function givenAbbreviates(poorer: PersonName, fuller: PersonName): boolean {\n\tconst p = poorer.givenFields();\n\tconst f = fuller.givenFields();\n\tconst pc = givenSuffixCut(poorer);\n\tconst fc = givenSuffixCut(fuller);\n\tconst ps = p.slice(pc);\n\tconst fs = f.slice(fc);\n\tif (ps.length !== fs.length || !ps.every((x, i) => x === fs[i])) return false;\n\treturn givenFieldsAbbreviate(p.slice(0, pc), f.slice(0, fc));\n}\n",
14
14
  "/**\n * The PersonName factories. A `PersonName` is only ever made by one of these.\n *\n * - `createPersonNameFactory(options)`: parses every call.\n * - `createCachingPersonNameFactory(options)`: memoizes `parse` on `(print, order)`.\n * - `defaultPersonNameFactory()`: one caching factory over the committed `names.txt`,\n * made on first use; `personName` and `personNameFromIcao` are its shorthands.\n *\n * A factory's options are fixed when it is made. Nothing here is mutable module\n * state, so a factory built for a test, a fixture lexicon or a different aside\n * policy can never change what another factory answers or poison its memo.\n */\n\nimport type { DisplayLexicon } from \"../lexicon/display.ts\";\nimport { Lexicon } from \"../lexicon/index.ts\";\nimport { lexiconKey } from \"../lexicon/keys.ts\";\nimport { NAME_REFUSED, type ParentheticalHandler } from \"./name-scrub.ts\";\nimport type { NameOrder } from \"./name-split.ts\";\nimport {\n\ttype BuildContext,\n\tNAME_TRADITIONS,\n\ttype NameTradition,\n\ttype NameTraditionLookup,\n\ttype PersonName as PersonNameShape,\n\tbuildFromIcao,\n\tbuildPersonName,\n\tgivenAbbreviates,\n\tgivenKeyAbbreviates,\n\tisIcaoName,\n\tlevelOf,\n\ttraditionFromIndex,\n} from \"./person-name.ts\";\n\n/**\n * One printed person's name, parsed. Made only by a `PersonNameFactory`.\n *\n * Read the levels (`nn0`–`nn4`, see `docs/NAME-NORMALIZATION.md`), the parts\n * (`surname`, `given`, `suffixes`), and ask it what it is (`isPerson()`,\n * `isTeam()`). Persist a level string (`nn2`, or `nn3` as a key), never the\n * object; read `nn2` back with `factory.fromIcao`.\n */\nexport type PersonName = PersonNameShape;\n\n/** The functions that go with a `PersonName` but are not asked of one. */\nexport const PersonName = {\n\t/** Will `fromIcao` read this string, or throw on it? */\n\tisIcao: isIcaoName,\n\t/** One transitive level off a parsed name, by name. */\n\tlevelOf,\n\t/** Is the given key `poorer` an abbreviation of `fuller`? */\n\tgivenKeyAbbreviates,\n\t/** Is `poorer`'s given name `fuller`'s made poorer, the suffixes set aside? */\n\tgivenAbbreviates,\n\t/** The value every level from NN2 down holds for a refused cell. */\n\tREFUSED: NAME_REFUSED,\n\t/** The six traditions, each under its letter and its names.txt index. */\n\tTRADITIONS: NAME_TRADITIONS,\n\t/** A names.txt tradition index → its letter. */\n\ttraditionFromIndex,\n} as const;\n\nexport interface PersonNameFactoryOptions {\n\t/**\n\t * The spellings NN2 consults before its rules. Default: the committed\n\t * `names.txt`. A `Lexicon` also supplies the default `traditions`. `null`:\n\t * rules only.\n\t */\n\treadonly lexicon?: Lexicon | DisplayLexicon | null;\n\t/**\n\t * A root's tradition where its particles do not settle it. Default: read from\n\t * the lexicon's digit flags when `lexicon` is a `Lexicon` (or defaulted),\n\t * otherwise none. `null`: none.\n\t */\n\treadonly traditions?: NameTraditionLookup | null;\n\t/** What an aside in `( … )` or `\" … \"` means. Default: strip every aside. */\n\treadonly parenthetical?: ParentheticalHandler;\n}\n\nexport interface CachingPersonNameFactoryOptions extends PersonNameFactoryOptions {\n\t/**\n\t * How many `(print, order)` parses to hold. Default\n\t * `DEFAULT_PERSON_NAME_CAPACITY`. `0` holds none, which is how a test shows\n\t * the memo changes no answer. Past capacity the oldest entry is evicted.\n\t */\n\treadonly capacity?: number;\n}\n\nexport interface PersonNameFactory {\n\t/** The parse of one printed cell. Total: a cell that is no name is refused, not thrown. */\n\tparse(print: string, order?: NameOrder): PersonName;\n\t/**\n\t * A stored ICAO key (`Surname<<Given<Middle`, an `nn2`) read back. Throws\n\t * where `PersonName.isIcao` says no. `print`, where known, becomes `nn0`.\n\t */\n\tfromIcao(icao: string, print?: string): PersonName;\n\t/** The options it was made with, as given. */\n\treadonly options: Readonly<PersonNameFactoryOptions>;\n}\n\nexport interface PersonNameCacheStats {\n\treadonly hits: number;\n\treadonly misses: number;\n\treadonly evictions: number;\n\treadonly size: number;\n\treadonly capacity: number;\n}\n\nexport interface CachingPersonNameFactory extends PersonNameFactory {\n\tstats(): PersonNameCacheStats;\n\t/** Empty the memo and zero the counters. */\n\tclear(): void;\n}\n\n/**\n * The default capacity. Above the distinct `(print, order)` pairs of a large\n * results corpus (~194k over 5.2M rows), so a full pass evicts nothing. A power\n * of two only because `Map` growth is happier that way.\n *\n * Memory, measured on 166,210 real names: ~1 KB retained per entry.\n */\nexport const DEFAULT_PERSON_NAME_CAPACITY = 262_144;\n\n/** Joins the order to the print with a character no print carries. */\nconst MEMO_SEPARATOR = \"\\u0000\";\n\n/**\n * The tradition lookup a lexicon's digit flags spell, keyed by `lexiconKey`.\n * A key whose entries carry two different traditions answers nothing.\n */\nexport function traditionLookupOf(lexicon: Lexicon): NameTraditionLookup {\n\tconst table = new Map<string, NameTradition | null>();\n\tfor (const { name, flags } of lexicon.entries) {\n\t\tlet t: NameTradition | undefined;\n\t\tfor (const ch of flags) {\n\t\t\tt = traditionFromIndex(ch);\n\t\t\tif (t !== undefined) break;\n\t\t}\n\t\tif (t === undefined) continue;\n\t\tconst key = lexiconKey(name);\n\t\tif (key === \"\") continue;\n\t\tconst was = table.get(key);\n\t\ttable.set(key, was === undefined || was === t ? t : null);\n\t}\n\treturn (key) => table.get(key) ?? undefined;\n}\n\nfunction contextOf(options: PersonNameFactoryOptions): BuildContext {\n\tconst lex = options.lexicon === undefined ? Lexicon.default() : (options.lexicon ?? undefined);\n\tconst lexicon = lex instanceof Lexicon ? lex.displayLexicon() : lex;\n\tconst traditions =\n\t\toptions.traditions === undefined\n\t\t\t? lex instanceof Lexicon\n\t\t\t\t? traditionLookupOf(lex)\n\t\t\t\t: undefined\n\t\t\t: (options.traditions ?? undefined);\n\treturn { lexicon, traditions, parenthetical: options.parenthetical };\n}\n\n/** A factory that parses every call. */\nexport function createPersonNameFactory(options: PersonNameFactoryOptions = {}): PersonNameFactory {\n\tconst ctx = contextOf(options);\n\treturn {\n\t\tparse: (print, order = \"unknown\") => buildPersonName(ctx, print, order),\n\t\tfromIcao: (icao, print) => buildFromIcao(ctx, icao, print),\n\t\toptions,\n\t};\n}\n\n/**\n * A factory that memoizes `parse` on `(print, order)`, which with its fixed\n * options is everything a parse reads. The same pair answers the same object.\n */\nexport function createCachingPersonNameFactory(\n\toptions: CachingPersonNameFactoryOptions = {},\n): CachingPersonNameFactory {\n\tconst ctx = contextOf(options);\n\tconst capacity = options.capacity ?? DEFAULT_PERSON_NAME_CAPACITY;\n\tconst cache = new Map<string, PersonName>();\n\tlet hits = 0;\n\tlet misses = 0;\n\tlet evictions = 0;\n\treturn {\n\t\tparse(print, order = \"unknown\") {\n\t\t\tconst key = `${order}${MEMO_SEPARATOR}${print}`;\n\t\t\tconst hit = cache.get(key);\n\t\t\tif (hit !== undefined) {\n\t\t\t\thits++;\n\t\t\t\treturn hit;\n\t\t\t}\n\t\t\tmisses++;\n\t\t\tconst built = buildPersonName(ctx, print, order);\n\t\t\tif (capacity > 0) {\n\t\t\t\t// INSERTION ORDER IS THE EVICTION ORDER: `Map`'s own iteration order,\n\t\t\t\t// so the policy needs no second structure.\n\t\t\t\tif (cache.size >= capacity) {\n\t\t\t\t\tconst oldest = cache.keys().next();\n\t\t\t\t\tif (!oldest.done) {\n\t\t\t\t\t\tcache.delete(oldest.value);\n\t\t\t\t\t\tevictions++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcache.set(key, built);\n\t\t\t}\n\t\t\treturn built;\n\t\t},\n\t\tfromIcao: (icao, print) => buildFromIcao(ctx, icao, print),\n\t\toptions,\n\t\tstats: () => ({ hits, misses, evictions, size: cache.size, capacity }),\n\t\tclear() {\n\t\t\tcache.clear();\n\t\t\thits = 0;\n\t\t\tmisses = 0;\n\t\t\tevictions = 0;\n\t\t},\n\t};\n}\n\nlet theDefault: CachingPersonNameFactory | undefined;\n\n/**\n * The shared caching factory over the committed `names.txt`, with default\n * options. Made on first call; the lexicon is parsed then, not at import.\n */\nexport function defaultPersonNameFactory(): CachingPersonNameFactory {\n\ttheDefault ??= createCachingPersonNameFactory();\n\treturn theDefault;\n}\n\n/** `defaultPersonNameFactory().parse(print, order)`. */\nexport function personName(print: string, order: NameOrder = \"unknown\"): PersonName {\n\treturn defaultPersonNameFactory().parse(print, order);\n}\n\n/** `defaultPersonNameFactory().fromIcao(icao, print)`. */\nexport function personNameFromIcao(icao: string, print?: string): PersonName {\n\treturn defaultPersonNameFactory().fromIcao(icao, print);\n}\n"
15
15
  ],
16
- "mappings": "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",
17
- "debugId": "2B32B66D0F08008A64756E2164756E21",
16
+ "mappings": "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",
17
+ "debugId": "CB2BA3550014BCAF64756E2164756E21",
18
18
  "names": []
19
19
  }