@treeviz/gedcom-parser 2.1.11 → 2.1.12

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 (30) hide show
  1. package/dist/classes/index.js +704 -380
  2. package/dist/cli/index.js +704 -380
  3. package/dist/constants/index.js +703 -379
  4. package/dist/factories/index.js +703 -379
  5. package/dist/index.js +704 -380
  6. package/dist/kinship-translator/index.js +703 -379
  7. package/dist/kinship-translator/kinship-translator.de.d.ts +2 -3
  8. package/dist/kinship-translator/kinship-translator.de.d.ts.map +1 -1
  9. package/dist/kinship-translator/kinship-translator.en.d.ts.map +1 -1
  10. package/dist/kinship-translator/kinship-translator.es.d.ts +2 -3
  11. package/dist/kinship-translator/kinship-translator.es.d.ts.map +1 -1
  12. package/dist/kinship-translator/kinship-translator.fr.d.ts +2 -3
  13. package/dist/kinship-translator/kinship-translator.fr.d.ts.map +1 -1
  14. package/dist/kinship-translator/kinship-translator.hu.d.ts.map +1 -1
  15. package/dist/kinship-translator/kinship-translator.ja.d.ts.map +1 -1
  16. package/dist/kinship-translator/kinship-translator.ru.d.ts +1 -1
  17. package/dist/kinship-translator/kinship-translator.ru.d.ts.map +1 -1
  18. package/dist/kinship-translator/kinship-translator.zh.d.ts.map +1 -1
  19. package/dist/kinship-translator/patterns.de.d.ts +1 -0
  20. package/dist/kinship-translator/patterns.de.d.ts.map +1 -1
  21. package/dist/kinship-translator/patterns.es.d.ts +1 -0
  22. package/dist/kinship-translator/patterns.es.d.ts.map +1 -1
  23. package/dist/kinship-translator/patterns.fr.d.ts +1 -0
  24. package/dist/kinship-translator/patterns.fr.d.ts.map +1 -1
  25. package/dist/kinship-translator/patterns.hu.d.ts.map +1 -1
  26. package/dist/kinship-translator/patterns.ru.d.ts +1 -0
  27. package/dist/kinship-translator/patterns.ru.d.ts.map +1 -1
  28. package/dist/kinship-translator/patterns.zh.d.ts.map +1 -1
  29. package/dist/utils/index.js +704 -380
  30. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -5841,7 +5841,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
5841
5841
  }
5842
5842
  return `${hungarianOrdinalize(
5843
5843
  degree
5844
- )}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
5844
+ )}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
5845
5845
  }
5846
5846
  auncle() {
5847
5847
  const level = this.pathN?.level ?? 0;
@@ -5885,14 +5885,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
5885
5885
  return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
5886
5886
  }
5887
5887
  parent() {
5888
+ const level = Math.abs(this.pathN?.level ?? 0);
5889
+ if (level <= 1) {
5890
+ if (this.personN?.isMale()) {
5891
+ return "apa";
5892
+ }
5893
+ if (this.personN?.isFemale()) {
5894
+ return "anya";
5895
+ }
5896
+ return "sz\xFCl\u0151";
5897
+ }
5888
5898
  const prefix = this.directPrefix();
5899
+ const gen = prefix === "nagy" ? "" : prefix;
5889
5900
  if (this.personN?.isMale()) {
5890
- return `${prefix}apa`;
5901
+ return `${gen}nagyapa`;
5891
5902
  }
5892
5903
  if (this.personN?.isFemale()) {
5893
- return `${prefix}anya`;
5904
+ return `${gen}nagyanya`;
5894
5905
  }
5895
- return `${prefix}sz\xFCl\u0151`;
5906
+ return `${gen}nagysz\xFCl\u0151`;
5896
5907
  }
5897
5908
  child() {
5898
5909
  const level = Math.abs(this.pathN?.level ?? 0);
@@ -6086,27 +6097,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6086
6097
  if (!degree) {
6087
6098
  return level < 0 ? this.nibling() : this.auncle();
6088
6099
  }
6089
- return `${ordinalize(degree)} cousin ${level}x removed`;
6100
+ return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
6090
6101
  }
6091
6102
  auncle() {
6092
- const prefix = this.directPrefix();
6103
+ const level = Math.abs(this.pathN?.level ?? 0);
6104
+ const greats = level <= 1 ? "" : "great-".repeat(level - 1);
6093
6105
  if (this.personN?.isMale()) {
6094
- return `${prefix}uncle`;
6106
+ return `${greats}uncle`;
6095
6107
  }
6096
6108
  if (this.personN?.isFemale()) {
6097
- return `${prefix}aunt`;
6109
+ return `${greats}aunt`;
6098
6110
  }
6099
- return `${prefix}auncle`;
6111
+ return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
6100
6112
  }
6101
6113
  nibling() {
6102
- const prefix = this.directPrefix();
6114
+ const level = Math.abs(this.pathN?.level ?? 0);
6115
+ const greats = level <= 2 ? "" : "great-".repeat(level - 2);
6116
+ const grand = level <= 1 ? "" : "grand";
6103
6117
  if (this.personN?.isMale()) {
6104
- return `${prefix}nephew`;
6118
+ return `${greats}${grand}nephew`;
6105
6119
  }
6106
6120
  if (this.personN?.isFemale()) {
6107
- return `${prefix}niece`;
6121
+ return `${greats}${grand}niece`;
6108
6122
  }
6109
- return `${prefix}nibling`;
6123
+ return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
6110
6124
  }
6111
6125
  parent() {
6112
6126
  const prefix = this.directPrefix();
@@ -6234,45 +6248,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6234
6248
  };
6235
6249
 
6236
6250
  // src/kinship-translator/patterns.de.ts
6251
+ var parentRelationsDe = {
6252
+ step: "Stief",
6253
+ foster: "Pflege",
6254
+ adopted: "Adoptiv"
6255
+ };
6237
6256
  var InLawsDe = {
6238
- "Ehepartner von (kind|tochter|sohn)": "Schwiegerkind",
6239
- "Ehefrau von (kind|tochter|sohn)": "Schwiegertochter",
6240
- "Ehemann von (kind|tochter|sohn)": "Schwiegersohn",
6241
- "mutter des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegermutter",
6242
- "vater des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegervater",
6243
- "elternteil des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegerelternteil",
6244
- "Ehefrau von (Halb)?(geschwister|schwester|bruder)": "Schw\xE4gerin",
6245
- "Ehemann von (Halb)?(geschwister|schwester|bruder)": "Schwager",
6246
- "Ehepartner von (Halb)?(geschwister|schwester|bruder)": "Schwager/Schw\xE4gerin",
6247
- "(Halb)?schwester des (Ehepartner|Ehefrau|Ehemann)s": "Schw\xE4gerin",
6248
- "(Halb)?bruder des (Ehepartner|Ehefrau|Ehemann)s": "Schwager",
6249
- "(Halb)?geschwister des (Ehepartner|Ehefrau|Ehemann)s": "Schwager/Schw\xE4gerin"
6257
+ "Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
6258
+ "Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
6259
+ "Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
6260
+ "Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
6261
+ "Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
6262
+ "Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
6263
+ "Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
6264
+ "Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
6265
+ "Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
6266
+ "(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
6267
+ "(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
6268
+ "(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
6250
6269
  };
6251
6270
 
6252
6271
  // src/kinship-translator/kinship-translator.de.ts
6253
- var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6254
- directPrefix() {
6255
- const level = Math.abs(this.pathN?.level ?? 0);
6256
- if (level <= 1) {
6257
- return "";
6258
- }
6259
- if (level === 2) {
6260
- return "Gro\xDF";
6261
- }
6262
- if (level === 3) {
6263
- return "Urgro\xDF";
6264
- }
6265
- return `Ur${level - 2}-gro\xDF`;
6272
+ var sexOf = (person) => {
6273
+ if (person?.isMale?.()) {
6274
+ return "m";
6275
+ }
6276
+ if (person?.isFemale?.()) {
6277
+ return "f";
6266
6278
  }
6279
+ return "n";
6280
+ };
6281
+ var pick = (sex, male, female, neutral) => {
6282
+ if (sex === "m") {
6283
+ return male;
6284
+ }
6285
+ if (sex === "f") {
6286
+ return female;
6287
+ }
6288
+ return neutral;
6289
+ };
6290
+ var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
6291
+ var genitiveArticle = (spouseType) => {
6292
+ if (spouseType === "Ehefrau") {
6293
+ return `der ${spouseType}`;
6294
+ }
6295
+ return `des ${spouseType}s`;
6296
+ };
6297
+ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6267
6298
  indirect() {
6268
6299
  let degree = Math.abs(this.pathN?.degree ?? 0);
6269
6300
  if (degree > 0) {
6270
6301
  degree = degree - 1;
6271
6302
  }
6272
- if (degree === 1) {
6273
- return `Cousin`;
6303
+ const sex = sexOf(this.personN);
6304
+ const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
6305
+ if (degree <= 1) {
6306
+ return cousin;
6274
6307
  }
6275
- return `Cousin ${degree}. Grades`;
6308
+ return `${cousin} ${degree}. Grades`;
6276
6309
  }
6277
6310
  removal() {
6278
6311
  const level = this.pathN?.level ?? 0;
@@ -6283,101 +6316,101 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6283
6316
  if (!degree) {
6284
6317
  return level < 0 ? this.nibling() : this.auncle();
6285
6318
  }
6286
- return `Cousin ${degree}. Grades ${Math.abs(level)}\xD7 entfernt`;
6319
+ return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
6287
6320
  }
6288
6321
  auncle() {
6289
- const prefix = this.directPrefix();
6290
- if (this.personN?.isMale()) {
6291
- return `${prefix}onkel`;
6292
- }
6293
- if (this.personN?.isFemale()) {
6294
- return `${prefix}tante`;
6322
+ const level = Math.abs(this.pathN?.level ?? 0);
6323
+ const sex = sexOf(this.personN);
6324
+ if (level <= 1) {
6325
+ return pick(sex, "Onkel", "Tante", "Onkel/Tante");
6295
6326
  }
6296
- return `${prefix}onkel/tante`;
6327
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6328
+ return pick(
6329
+ sex,
6330
+ `${prefix}onkel`,
6331
+ `${prefix}tante`,
6332
+ `${prefix}onkel/tante`
6333
+ );
6297
6334
  }
6298
6335
  nibling() {
6299
- const prefix = this.directPrefix();
6300
- if (this.personN?.isMale()) {
6301
- return `${prefix}neffe`;
6302
- }
6303
- if (this.personN?.isFemale()) {
6304
- return `${prefix}nichte`;
6336
+ const level = Math.abs(this.pathN?.level ?? 0);
6337
+ const sex = sexOf(this.personN);
6338
+ if (level <= 1) {
6339
+ return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
6305
6340
  }
6306
- return `${prefix}neffe/nichte`;
6341
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6342
+ return pick(
6343
+ sex,
6344
+ `${prefix}neffe`,
6345
+ `${prefix}nichte`,
6346
+ `${prefix}neffe/nichte`
6347
+ );
6307
6348
  }
6308
6349
  parent() {
6309
- const prefix = this.directPrefix();
6310
- if (this.personN?.isMale()) {
6311
- return `${prefix}vater`;
6312
- }
6313
- if (this.personN?.isFemale()) {
6314
- return `${prefix}mutter`;
6350
+ const level = Math.abs(this.pathN?.level ?? 0);
6351
+ const sex = sexOf(this.personN);
6352
+ if (level <= 1) {
6353
+ return pick(sex, "Vater", "Mutter", "Elternteil");
6315
6354
  }
6316
- return `${prefix}elternteil`;
6355
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6356
+ return pick(
6357
+ sex,
6358
+ `${prefix}vater`,
6359
+ `${prefix}mutter`,
6360
+ `${prefix}elternteil`
6361
+ );
6317
6362
  }
6318
6363
  child() {
6319
- const prefix = this.directPrefix();
6320
- if (this.personN?.isMale()) {
6321
- return `${prefix}sohn`;
6322
- }
6323
- if (this.personN?.isFemale()) {
6324
- return `${prefix}tochter`;
6364
+ const level = Math.abs(this.pathN?.level ?? 0);
6365
+ const sex = sexOf(this.personN);
6366
+ if (level <= 1) {
6367
+ return pick(sex, "Sohn", "Tochter", "Kind");
6325
6368
  }
6326
- return `${prefix}kind`;
6369
+ const prefix = ur(level - 2);
6370
+ return pick(
6371
+ sex,
6372
+ `${prefix}Enkel`,
6373
+ `${prefix}Enkelin`,
6374
+ `${prefix}Enkelkind`
6375
+ );
6327
6376
  }
6328
6377
  sibling() {
6329
- if (this.personN?.isMale()) {
6330
- return "bruder";
6331
- }
6332
- if (this.personN?.isFemale()) {
6333
- return "schwester";
6334
- }
6335
- return "geschwister";
6378
+ return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
6336
6379
  }
6337
6380
  halfBlood(relation) {
6338
6381
  if (!relation || !this.isHalfBlood) {
6339
6382
  return relation ?? "";
6340
6383
  }
6341
- if (/^[A-ZÄÖÜ]/.test(relation) || /[-\s]/.test(relation)) {
6384
+ if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
6342
6385
  return `Halb-${relation}`;
6343
6386
  }
6344
- return `Halb${relation}`;
6387
+ return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6345
6388
  }
6346
6389
  spouse() {
6347
- if (this.personN?.isMale()) {
6348
- return "Ehemann";
6349
- }
6350
- if (this.personN?.isFemale()) {
6351
- return "Ehefrau";
6352
- }
6353
- return "Ehepartner";
6390
+ return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
6354
6391
  }
6355
6392
  ofSpouse(relation) {
6356
6393
  if (!relation) {
6357
6394
  return "";
6358
6395
  }
6359
- const spouse = this.path?.[1].indi;
6360
- let spouseType = "Ehepartner";
6361
- if (spouse?.isMale()) {
6362
- spouseType = "Ehemann";
6363
- }
6364
- if (spouse?.isFemale()) {
6365
- spouseType = "Ehefrau";
6366
- }
6367
- return `${relation} des ${spouseType}s`;
6396
+ const spouseType = pick(
6397
+ sexOf(this.path?.[1].indi),
6398
+ "Ehemann",
6399
+ "Ehefrau",
6400
+ "Ehepartner"
6401
+ );
6402
+ return `${relation} ${genitiveArticle(spouseType)}`;
6368
6403
  }
6369
6404
  spouseOf(relation) {
6370
6405
  if (!relation) {
6371
6406
  return "";
6372
6407
  }
6373
- const spouse = this.path?.[this.path.length - 1].indi;
6374
- let spouseType = "Ehepartner";
6375
- if (spouse?.isMale()) {
6376
- spouseType = "Ehemann";
6377
- }
6378
- if (spouse?.isFemale()) {
6379
- spouseType = "Ehefrau";
6380
- }
6408
+ const spouseType = pick(
6409
+ sexOf(this.path?.[this.path.length - 1].indi),
6410
+ "Ehemann",
6411
+ "Ehefrau",
6412
+ "Ehepartner"
6413
+ );
6381
6414
  return `${spouseType} von ${relation}`;
6382
6415
  }
6383
6416
  of(relation) {
@@ -6395,8 +6428,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6395
6428
  if (!name || !relation) {
6396
6429
  return relation ?? "";
6397
6430
  }
6398
- if (relation.includes(" des ") || relation.includes(" von ")) {
6399
- return relation.replace(/ (des|von) /, ` $1 ${name}s `);
6431
+ if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
6432
+ return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
6400
6433
  }
6401
6434
  return `${name}s ${relation}`;
6402
6435
  }
@@ -6426,50 +6459,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6426
6459
  if (!relation || !this.pathN?.relation) {
6427
6460
  return relation ?? "";
6428
6461
  }
6429
- return `${this.pathN.relation} ${relation}`;
6462
+ const prefix = parentRelationsDe[this.pathN.relation];
6463
+ if (!prefix) {
6464
+ return relation;
6465
+ }
6466
+ if (prefix.endsWith("-") || prefix.endsWith(" ")) {
6467
+ return `${prefix}${relation}`;
6468
+ }
6469
+ return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6430
6470
  }
6431
6471
  };
6432
6472
 
6433
6473
  // src/kinship-translator/patterns.fr.ts
6474
+ var parentRelationsFr = {
6475
+ step: "step",
6476
+ foster: "foster",
6477
+ adopted: "adopted"
6478
+ };
6434
6479
  var InLawsFr = {
6435
6480
  "conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
6436
6481
  "\xE9pouse de (enfant|fille|fils)": "belle-fille",
6437
6482
  "mari de (enfant|fille|fils)": "gendre",
6438
- "m\xE8re du (conjoint|\xE9pouse|mari)": "belle-m\xE8re",
6439
- "p\xE8re du (conjoint|\xE9pouse|mari)": "beau-p\xE8re",
6440
- "parent du (conjoint|\xE9pouse|mari)": "beau-parent",
6483
+ "m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
6484
+ "p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
6485
+ "parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
6441
6486
  "\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
6442
6487
  "mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
6443
6488
  "conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
6444
- "(demi-)?s\u0153ur du (conjoint|\xE9pouse|mari)": "belle-s\u0153ur",
6445
- "(demi-)?fr\xE8re du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re",
6446
- "(demi-)?fr\xE8re/s\u0153ur du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re/belle-s\u0153ur"
6489
+ "(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
6490
+ "(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
6491
+ "(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
6447
6492
  };
6448
6493
 
6449
6494
  // src/kinship-translator/kinship-translator.fr.ts
6450
- var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6451
- directPrefix() {
6452
- const level = Math.abs(this.pathN?.level ?? 0);
6453
- if (level <= 1) {
6454
- return "";
6455
- }
6456
- if (level === 2) {
6457
- return "grand-";
6458
- }
6459
- if (level === 3) {
6460
- return "arri\xE8re-grand-";
6461
- }
6462
- return `arri\xE8re${level - 2}-grand-`;
6495
+ var sexOf2 = (person) => {
6496
+ if (person?.isMale?.()) {
6497
+ return "m";
6498
+ }
6499
+ if (person?.isFemale?.()) {
6500
+ return "f";
6501
+ }
6502
+ return "n";
6503
+ };
6504
+ var pick2 = (sex, male, female, neutral) => {
6505
+ if (sex === "m") {
6506
+ return male;
6463
6507
  }
6508
+ if (sex === "f") {
6509
+ return female;
6510
+ }
6511
+ return neutral;
6512
+ };
6513
+ var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
6514
+ var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
6515
+ var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
6516
+ var ofSpousePrep = (spouseType) => {
6517
+ if (spouseType === "\xE9pouse") {
6518
+ return "de l'";
6519
+ }
6520
+ return "du ";
6521
+ };
6522
+ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6464
6523
  indirect() {
6465
6524
  let degree = Math.abs(this.pathN?.degree ?? 0);
6466
6525
  if (degree > 0) {
6467
6526
  degree = degree - 1;
6468
6527
  }
6469
- if (degree === 1) {
6470
- return `cousin`;
6528
+ const cousin = pick2(
6529
+ sexOf2(this.personN),
6530
+ "cousin",
6531
+ "cousine",
6532
+ "cousin/cousine"
6533
+ );
6534
+ if (degree <= 1) {
6535
+ return cousin;
6471
6536
  }
6472
- return `cousin au ${ordinalize(degree)} degr\xE9`;
6537
+ return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
6473
6538
  }
6474
6539
  removal() {
6475
6540
  const level = this.pathN?.level ?? 0;
@@ -6480,56 +6545,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6480
6545
  if (!degree) {
6481
6546
  return level < 0 ? this.nibling() : this.auncle();
6482
6547
  }
6483
- return `cousin au ${ordinalize(degree)} degr\xE9 ${Math.abs(level)}\xD7 \xE9loign\xE9`;
6548
+ return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
6484
6549
  }
6485
6550
  auncle() {
6486
- const prefix = this.directPrefix();
6487
- if (this.personN?.isMale()) {
6488
- return `${prefix}oncle`;
6489
- }
6490
- if (this.personN?.isFemale()) {
6491
- return `${prefix}tante`;
6551
+ const level = Math.abs(this.pathN?.level ?? 0);
6552
+ const sex = sexOf2(this.personN);
6553
+ const base = pick2(sex, "oncle", "tante", "oncle/tante");
6554
+ if (level <= 1) {
6555
+ return base;
6492
6556
  }
6493
- return `${prefix}oncle/tante`;
6557
+ const grands = pick2(
6558
+ sex,
6559
+ "grand-oncle",
6560
+ "grand-tante",
6561
+ "grand-oncle/tante"
6562
+ );
6563
+ return `${arriere(level - 2)}${grands}`;
6494
6564
  }
6495
6565
  nibling() {
6496
- const prefix = this.directPrefix();
6497
- if (this.personN?.isMale()) {
6498
- return `${prefix}neveu`;
6499
- }
6500
- if (this.personN?.isFemale()) {
6501
- return `${prefix}ni\xE8ce`;
6566
+ const level = Math.abs(this.pathN?.level ?? 0);
6567
+ const sex = sexOf2(this.personN);
6568
+ if (level <= 1) {
6569
+ return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
6502
6570
  }
6503
- return `${prefix}neveu/ni\xE8ce`;
6571
+ const grands = pick2(
6572
+ sex,
6573
+ "grand-neveu",
6574
+ "grande-ni\xE8ce",
6575
+ "grand-neveu/grande-ni\xE8ce"
6576
+ );
6577
+ return `${arriere(level - 2)}${grands}`;
6504
6578
  }
6505
6579
  parent() {
6506
- const prefix = this.directPrefix();
6507
- if (this.personN?.isMale()) {
6508
- return `${prefix}p\xE8re`;
6509
- }
6510
- if (this.personN?.isFemale()) {
6511
- return `${prefix}m\xE8re`;
6580
+ const level = Math.abs(this.pathN?.level ?? 0);
6581
+ const sex = sexOf2(this.personN);
6582
+ if (level <= 1) {
6583
+ return pick2(sex, "p\xE8re", "m\xE8re", "parent");
6512
6584
  }
6513
- return `${prefix}parent`;
6585
+ const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
6586
+ return `${arriere(level - 2)}${grands}`;
6514
6587
  }
6515
6588
  child() {
6516
- const prefix = this.directPrefix();
6517
- if (this.personN?.isMale()) {
6518
- return `${prefix}fils`;
6519
- }
6520
- if (this.personN?.isFemale()) {
6521
- return `${prefix}fille`;
6589
+ const level = Math.abs(this.pathN?.level ?? 0);
6590
+ const sex = sexOf2(this.personN);
6591
+ if (level <= 1) {
6592
+ return pick2(sex, "fils", "fille", "enfant");
6522
6593
  }
6523
- return `${prefix}enfant`;
6594
+ const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
6595
+ return `${arriere(level - 2)}${petits}`;
6524
6596
  }
6525
6597
  sibling() {
6526
- if (this.personN?.isMale()) {
6527
- return "fr\xE8re";
6528
- }
6529
- if (this.personN?.isFemale()) {
6530
- return "s\u0153ur";
6531
- }
6532
- return "fr\xE8re/s\u0153ur";
6598
+ return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
6533
6599
  }
6534
6600
  halfBlood(relation) {
6535
6601
  if (!relation || !this.isHalfBlood) {
@@ -6538,40 +6604,30 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6538
6604
  return `demi-${relation}`;
6539
6605
  }
6540
6606
  spouse() {
6541
- if (this.personN?.isMale()) {
6542
- return "mari";
6543
- }
6544
- if (this.personN?.isFemale()) {
6545
- return "\xE9pouse";
6546
- }
6547
- return "conjoint";
6607
+ return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
6548
6608
  }
6549
6609
  ofSpouse(relation) {
6550
6610
  if (!relation) {
6551
6611
  return "";
6552
6612
  }
6553
- const spouse = this.path?.[1].indi;
6554
- let spouseType = "conjoint";
6555
- if (spouse?.isMale()) {
6556
- spouseType = "mari";
6557
- }
6558
- if (spouse?.isFemale()) {
6559
- spouseType = "\xE9pouse";
6560
- }
6561
- return `${relation} du ${spouseType}`;
6613
+ const spouseType = pick2(
6614
+ sexOf2(this.path?.[1].indi),
6615
+ "mari",
6616
+ "\xE9pouse",
6617
+ "conjoint"
6618
+ );
6619
+ return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
6562
6620
  }
6563
6621
  spouseOf(relation) {
6564
6622
  if (!relation) {
6565
6623
  return "";
6566
6624
  }
6567
- const spouse = this.path?.[this.path.length - 1].indi;
6568
- let spouseType = "conjoint";
6569
- if (spouse?.isMale()) {
6570
- spouseType = "mari";
6571
- }
6572
- if (spouse?.isFemale()) {
6573
- spouseType = "\xE9pouse";
6574
- }
6625
+ const spouseType = pick2(
6626
+ sexOf2(this.path?.[this.path.length - 1].indi),
6627
+ "mari",
6628
+ "\xE9pouse",
6629
+ "conjoint"
6630
+ );
6575
6631
  return `${spouseType} de ${relation}`;
6576
6632
  }
6577
6633
  of(relation) {
@@ -6592,6 +6648,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6592
6648
  if (relation.includes(" du ") || relation.includes(" de ")) {
6593
6649
  return relation.replace(/ (du|de) /, ` $1 ${name} `);
6594
6650
  }
6651
+ if (relation.includes(" de l'")) {
6652
+ return relation.replace(" de l'", ` de ${name} l'`);
6653
+ }
6595
6654
  return `${relation} de ${name}`;
6596
6655
  }
6597
6656
  inLaw(relation) {
@@ -6620,50 +6679,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6620
6679
  if (!relation || !this.pathN?.relation) {
6621
6680
  return relation ?? "";
6622
6681
  }
6623
- return `${this.pathN.relation} ${relation}`;
6682
+ const kind = parentRelationsFr[this.pathN.relation];
6683
+ if (!kind) {
6684
+ return relation;
6685
+ }
6686
+ if (kind === "step") {
6687
+ return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
6688
+ }
6689
+ if (kind === "adopted") {
6690
+ return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
6691
+ }
6692
+ if (kind === "foster") {
6693
+ return `${relation} d'accueil`;
6694
+ }
6695
+ return relation;
6624
6696
  }
6625
6697
  };
6626
6698
 
6627
6699
  // src/kinship-translator/patterns.es.ts
6700
+ var parentRelationsEs = {
6701
+ step: {
6702
+ padre: "padrastro",
6703
+ madre: "madrastra",
6704
+ hijo: "hijastro",
6705
+ hija: "hijastra",
6706
+ hermano: "hermanastro",
6707
+ hermana: "hermanastra",
6708
+ abuelo: "abuelastro",
6709
+ abuela: "abuelastra"
6710
+ }
6711
+ };
6628
6712
  var InLawsEs = {
6629
6713
  "c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
6630
6714
  "esposa de (hijo/hija|hija|hijo)": "nuera",
6631
6715
  "esposo de (hijo/hija|hija|hijo)": "yerno",
6632
- "madre del (c\xF3nyuge|esposa|esposo)": "suegra",
6633
- "padre del (c\xF3nyuge|esposa|esposo)": "suegro",
6634
- "padre/madre del (c\xF3nyuge|esposa|esposo)": "suegro/suegra",
6716
+ "madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
6717
+ "padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
6718
+ "padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
6635
6719
  "esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
6636
6720
  "esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
6637
6721
  "c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
6638
- "(medio |media |medio/a )?hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ada",
6639
- "(medio |media |medio/a )?hermano del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado",
6640
- "(medio |media |medio/a )?hermano/hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado/cu\xF1ada"
6722
+ "(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
6723
+ "(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
6724
+ "(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
6641
6725
  };
6642
6726
 
6643
6727
  // src/kinship-translator/kinship-translator.es.ts
6644
- var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6645
- directPrefix() {
6646
- const level = Math.abs(this.pathN?.level ?? 0);
6647
- if (level <= 1) {
6648
- return "";
6649
- }
6650
- if (level === 2) {
6651
- return "bisabuel";
6652
- }
6653
- if (level === 3) {
6654
- return "tatarabuel";
6655
- }
6656
- return `t\xE1tara${level - 2}-abuel`;
6728
+ var sexOf3 = (person) => {
6729
+ if (person?.isMale?.()) {
6730
+ return "m";
6731
+ }
6732
+ if (person?.isFemale?.()) {
6733
+ return "f";
6734
+ }
6735
+ return "n";
6736
+ };
6737
+ var pick3 = (sex, male, female, neutral) => {
6738
+ if (sex === "m") {
6739
+ return male;
6657
6740
  }
6741
+ if (sex === "f") {
6742
+ return female;
6743
+ }
6744
+ return neutral;
6745
+ };
6746
+ var SPANISH_ORDINALS_M = [
6747
+ "",
6748
+ "",
6749
+ "segundo",
6750
+ "tercero",
6751
+ "cuarto",
6752
+ "quinto",
6753
+ "sexto",
6754
+ "s\xE9ptimo",
6755
+ "octavo",
6756
+ "noveno",
6757
+ "d\xE9cimo"
6758
+ ];
6759
+ var SPANISH_ORDINALS_F = [
6760
+ "",
6761
+ "",
6762
+ "segunda",
6763
+ "tercera",
6764
+ "cuarta",
6765
+ "quinta",
6766
+ "sexta",
6767
+ "s\xE9ptima",
6768
+ "octava",
6769
+ "novena",
6770
+ "d\xE9cima"
6771
+ ];
6772
+ var spanishOrdinal = (n, sex) => {
6773
+ const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
6774
+ return list[n] ?? `${n}.\xBA`;
6775
+ };
6776
+ var ofSpousePrep2 = (spouseType) => {
6777
+ if (spouseType === "esposa") {
6778
+ return "de la ";
6779
+ }
6780
+ return "del ";
6781
+ };
6782
+ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6658
6783
  indirect() {
6659
6784
  let degree = Math.abs(this.pathN?.degree ?? 0);
6660
6785
  if (degree > 0) {
6661
6786
  degree = degree - 1;
6662
6787
  }
6663
- if (degree === 1) {
6664
- return `primo`;
6788
+ const sex = sexOf3(this.personN);
6789
+ const cousin = pick3(sex, "primo", "prima", "primo/prima");
6790
+ if (degree <= 1) {
6791
+ return cousin;
6665
6792
  }
6666
- return `primo ${ordinalize(degree)}`;
6793
+ return `${cousin} ${spanishOrdinal(degree, sex)}`;
6667
6794
  }
6668
6795
  removal() {
6669
6796
  const level = this.pathN?.level ?? 0;
@@ -6674,56 +6801,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6674
6801
  if (!degree) {
6675
6802
  return level < 0 ? this.nibling() : this.auncle();
6676
6803
  }
6677
- return `primo ${ordinalize(degree)} ${Math.abs(level)}\xD7 separado`;
6804
+ return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
6678
6805
  }
6679
6806
  auncle() {
6680
- const prefix = this.directPrefix();
6681
- if (this.personN?.isMale()) {
6682
- return `${prefix}t\xEDo`;
6807
+ const level = Math.abs(this.pathN?.level ?? 0);
6808
+ const sex = sexOf3(this.personN);
6809
+ if (level <= 1) {
6810
+ return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
6683
6811
  }
6684
- if (this.personN?.isFemale()) {
6685
- return `${prefix}t\xEDa`;
6812
+ if (level === 2) {
6813
+ return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
6814
+ }
6815
+ if (level === 3) {
6816
+ return pick3(
6817
+ sex,
6818
+ "t\xEDo bisabuelo",
6819
+ "t\xEDa bisabuela",
6820
+ "t\xEDo/t\xEDa bisabuelo"
6821
+ );
6686
6822
  }
6687
- return `${prefix}t\xEDo/t\xEDa`;
6823
+ return pick3(
6824
+ sex,
6825
+ `t\xEDo abuelo (${level - 1}.\xBA)`,
6826
+ `t\xEDa abuela (${level - 1}.\xAA)`,
6827
+ `t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
6828
+ );
6688
6829
  }
6689
6830
  nibling() {
6690
- const prefix = this.directPrefix();
6691
- if (this.personN?.isMale()) {
6692
- return `${prefix}sobrino`;
6831
+ const level = Math.abs(this.pathN?.level ?? 0);
6832
+ const sex = sexOf3(this.personN);
6833
+ if (level <= 1) {
6834
+ return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
6693
6835
  }
6694
- if (this.personN?.isFemale()) {
6695
- return `${prefix}sobrina`;
6836
+ if (level === 2) {
6837
+ return pick3(
6838
+ sex,
6839
+ "sobrino nieto",
6840
+ "sobrina nieta",
6841
+ "sobrino/sobrina nieto"
6842
+ );
6696
6843
  }
6697
- return `${prefix}sobrino/sobrina`;
6844
+ if (level === 3) {
6845
+ return pick3(
6846
+ sex,
6847
+ "sobrino bisnieto",
6848
+ "sobrina bisnieta",
6849
+ "sobrino/sobrina bisnieto"
6850
+ );
6851
+ }
6852
+ return pick3(
6853
+ sex,
6854
+ `sobrino nieto (${level - 1}.\xBA)`,
6855
+ `sobrina nieta (${level - 1}.\xAA)`,
6856
+ `sobrino/sobrina nieto (${level - 1}.\xBA)`
6857
+ );
6698
6858
  }
6699
6859
  parent() {
6700
- const prefix = this.directPrefix();
6701
- if (this.personN?.isMale()) {
6702
- return `${prefix}padre`;
6860
+ const level = Math.abs(this.pathN?.level ?? 0);
6861
+ const sex = sexOf3(this.personN);
6862
+ if (level <= 1) {
6863
+ return pick3(sex, "padre", "madre", "padre/madre");
6703
6864
  }
6704
- if (this.personN?.isFemale()) {
6705
- return `${prefix}madre`;
6865
+ if (level === 2) {
6866
+ return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
6867
+ }
6868
+ if (level === 3) {
6869
+ return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
6706
6870
  }
6707
- return `${prefix}padre/madre`;
6871
+ if (level === 4) {
6872
+ return pick3(
6873
+ sex,
6874
+ "tatarabuelo",
6875
+ "tatarabuela",
6876
+ "tatarabuelo/tatarabuela"
6877
+ );
6878
+ }
6879
+ if (level === 5) {
6880
+ return pick3(
6881
+ sex,
6882
+ "trastatarabuelo",
6883
+ "trastatarabuela",
6884
+ "trastatarabuelo/trastatarabuela"
6885
+ );
6886
+ }
6887
+ return pick3(
6888
+ sex,
6889
+ `abuelo (${level}.\xBA)`,
6890
+ `abuela (${level}.\xAA)`,
6891
+ `abuelo/abuela (${level}.\xBA)`
6892
+ );
6708
6893
  }
6709
6894
  child() {
6710
- const prefix = this.directPrefix();
6711
- if (this.personN?.isMale()) {
6712
- return `${prefix}hijo`;
6895
+ const level = Math.abs(this.pathN?.level ?? 0);
6896
+ const sex = sexOf3(this.personN);
6897
+ if (level <= 1) {
6898
+ return pick3(sex, "hijo", "hija", "hijo/hija");
6713
6899
  }
6714
- if (this.personN?.isFemale()) {
6715
- return `${prefix}hija`;
6900
+ if (level === 2) {
6901
+ return pick3(sex, "nieto", "nieta", "nieto/nieta");
6716
6902
  }
6717
- return `${prefix}hijo/hija`;
6718
- }
6719
- sibling() {
6720
- if (this.personN?.isMale()) {
6721
- return "hermano";
6903
+ if (level === 3) {
6904
+ return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
6722
6905
  }
6723
- if (this.personN?.isFemale()) {
6724
- return "hermana";
6906
+ if (level === 4) {
6907
+ return pick3(
6908
+ sex,
6909
+ "tataranieto",
6910
+ "tataranieta",
6911
+ "tataranieto/tataranieta"
6912
+ );
6913
+ }
6914
+ if (level === 5) {
6915
+ return pick3(
6916
+ sex,
6917
+ "trastataranieto",
6918
+ "trastataranieta",
6919
+ "trastataranieto/trastataranieta"
6920
+ );
6725
6921
  }
6726
- return "hermano/hermana";
6922
+ return pick3(
6923
+ sex,
6924
+ `nieto (${level}.\xBA)`,
6925
+ `nieta (${level}.\xAA)`,
6926
+ `nieto/nieta (${level}.\xBA)`
6927
+ );
6928
+ }
6929
+ sibling() {
6930
+ return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
6727
6931
  }
6728
6932
  halfBlood(relation) {
6729
6933
  if (!relation || !this.isHalfBlood) {
@@ -6738,40 +6942,30 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6738
6942
  return `medio/a ${relation}`;
6739
6943
  }
6740
6944
  spouse() {
6741
- if (this.personN?.isMale()) {
6742
- return "esposo";
6743
- }
6744
- if (this.personN?.isFemale()) {
6745
- return "esposa";
6746
- }
6747
- return "c\xF3nyuge";
6945
+ return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
6748
6946
  }
6749
6947
  ofSpouse(relation) {
6750
6948
  if (!relation) {
6751
6949
  return "";
6752
6950
  }
6753
- const spouse = this.path?.[1].indi;
6754
- let spouseType = "c\xF3nyuge";
6755
- if (spouse?.isMale()) {
6756
- spouseType = "esposo";
6757
- }
6758
- if (spouse?.isFemale()) {
6759
- spouseType = "esposa";
6760
- }
6761
- return `${relation} del ${spouseType}`;
6951
+ const spouseType = pick3(
6952
+ sexOf3(this.path?.[1].indi),
6953
+ "esposo",
6954
+ "esposa",
6955
+ "c\xF3nyuge"
6956
+ );
6957
+ return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
6762
6958
  }
6763
6959
  spouseOf(relation) {
6764
6960
  if (!relation) {
6765
6961
  return "";
6766
6962
  }
6767
- const spouse = this.path?.[this.path.length - 1].indi;
6768
- let spouseType = "c\xF3nyuge";
6769
- if (spouse?.isMale()) {
6770
- spouseType = "esposo";
6771
- }
6772
- if (spouse?.isFemale()) {
6773
- spouseType = "esposa";
6774
- }
6963
+ const spouseType = pick3(
6964
+ sexOf3(this.path?.[this.path.length - 1].indi),
6965
+ "esposo",
6966
+ "esposa",
6967
+ "c\xF3nyuge"
6968
+ );
6775
6969
  return `${spouseType} de ${relation}`;
6776
6970
  }
6777
6971
  of(relation) {
@@ -6789,8 +6983,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6789
6983
  if (!name || !relation) {
6790
6984
  return relation ?? "";
6791
6985
  }
6792
- if (relation.includes(" del ") || relation.includes(" de ")) {
6793
- return relation.replace(/ (del|de) /, ` $1 ${name} `);
6986
+ if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
6987
+ return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
6794
6988
  }
6795
6989
  return `${relation} de ${name}`;
6796
6990
  }
@@ -6820,7 +7014,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
6820
7014
  if (!relation || !this.pathN?.relation) {
6821
7015
  return relation ?? "";
6822
7016
  }
6823
- return `${this.pathN.relation} ${relation}`;
7017
+ const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
7018
+ if (mapped) {
7019
+ return mapped;
7020
+ }
7021
+ if (this.pathN.relation === "step") {
7022
+ return `${relation} pol\xEDtico`;
7023
+ }
7024
+ if (this.pathN.relation === "adopted") {
7025
+ return `${relation} adoptivo`;
7026
+ }
7027
+ if (this.pathN.relation === "foster") {
7028
+ return `${relation} de acogida`;
7029
+ }
7030
+ return relation;
6824
7031
  }
6825
7032
  };
6826
7033
 
@@ -6829,15 +7036,35 @@ var InLawsRu = {
6829
7036
  "\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6830
7037
  "\u0436\u0435\u043D\u0430 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6831
7038
  "\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
6832
- "\u043C\u0430\u0442\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0451\u0449\u0430",
6833
- "\u043E\u0442\u0435\u0446 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C",
6834
- "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7039
+ "\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
7040
+ "\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7041
+ "\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7042
+ "\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
7043
+ "\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
7044
+ "\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
7045
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7046
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7047
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
6835
7048
  "\u0436\u0435\u043D\u0430 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6836
7049
  "\u043C\u0443\u0436 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C",
6837
7050
  "\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
6838
- "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
6839
- "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0448\u0443\u0440\u0438\u043D",
6840
- "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0448\u0443\u0440\u0438\u043D/\u0437\u043E\u043B\u043E\u0432\u043A\u0430"
7051
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0436\u0435\u043D\u044B": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
7052
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u043C\u0443\u0436\u0430": "\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7053
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7054
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
7055
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
7056
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0434\u0435\u0432\u0435\u0440\u044C",
7057
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D/\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
7058
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7059
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0437\u043E\u043B\u043E\u0432\u043A\u0430"
7060
+ };
7061
+ var parentRelationsRu = {
7062
+ step: {
7063
+ \u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
7064
+ \u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
7065
+ \u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
7066
+ \u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
7067
+ }
6841
7068
  };
6842
7069
 
6843
7070
  // src/kinship-translator/kinship-translator.ru.ts
@@ -6868,7 +7095,7 @@ var cousinWord = (degree, sex) => {
6868
7095
  return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
6869
7096
  };
6870
7097
  var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
6871
- var sexOf = (person) => {
7098
+ var sexOf4 = (person) => {
6872
7099
  if (person?.isMale?.()) {
6873
7100
  return "m";
6874
7101
  }
@@ -6883,7 +7110,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6883
7110
  if (degree > 0) {
6884
7111
  degree = degree - 1;
6885
7112
  }
6886
- return cousinWord(degree, sexOf(this.personN));
7113
+ return cousinWord(degree, sexOf4(this.personN));
6887
7114
  }
6888
7115
  removal() {
6889
7116
  const level = this.pathN?.level ?? 0;
@@ -6895,35 +7122,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6895
7122
  return level < 0 ? this.nibling() : this.auncle();
6896
7123
  }
6897
7124
  const removed = Math.abs(level);
6898
- return `${cousinWord(degree, sexOf(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
7125
+ return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
6899
7126
  }
6900
7127
  auncle() {
6901
7128
  const level = Math.abs(this.pathN?.level ?? 0);
6902
- const pra = praRepeat(Math.max(0, level - 2));
6903
- const sex = sexOf(this.personN);
7129
+ const sex = sexOf4(this.personN);
7130
+ if (level <= 1) {
7131
+ if (sex === "m") {
7132
+ return "\u0434\u044F\u0434\u044F";
7133
+ }
7134
+ if (sex === "f") {
7135
+ return "\u0442\u0451\u0442\u044F";
7136
+ }
7137
+ return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
7138
+ }
7139
+ const pra = praRepeat(level - 2);
6904
7140
  if (sex === "m") {
6905
- return `${pra}\u0434\u044F\u0434\u044F`;
7141
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
6906
7142
  }
6907
7143
  if (sex === "f") {
6908
- return `${pra}\u0442\u0451\u0442\u044F`;
7144
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
6909
7145
  }
6910
- return `${pra}\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F`;
7146
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
6911
7147
  }
6912
7148
  nibling() {
6913
7149
  const level = Math.abs(this.pathN?.level ?? 0);
6914
- const pra = praRepeat(Math.max(0, level - 2));
6915
- const sex = sexOf(this.personN);
7150
+ const sex = sexOf4(this.personN);
7151
+ if (level <= 1) {
7152
+ if (sex === "m") {
7153
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
7154
+ }
7155
+ if (sex === "f") {
7156
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7157
+ }
7158
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7159
+ }
7160
+ const pra = praRepeat(level - 2);
6916
7161
  if (sex === "m") {
6917
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
7162
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
6918
7163
  }
6919
7164
  if (sex === "f") {
6920
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7165
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
6921
7166
  }
6922
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7167
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
6923
7168
  }
6924
7169
  parent() {
6925
7170
  const level = Math.abs(this.pathN?.level ?? 0);
6926
- const sex = sexOf(this.personN);
7171
+ const sex = sexOf4(this.personN);
6927
7172
  if (level <= 1) {
6928
7173
  if (sex === "m") {
6929
7174
  return "\u043E\u0442\u0435\u0446";
@@ -6953,7 +7198,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6953
7198
  }
6954
7199
  child() {
6955
7200
  const level = Math.abs(this.pathN?.level ?? 0);
6956
- const sex = sexOf(this.personN);
7201
+ const sex = sexOf4(this.personN);
6957
7202
  if (level <= 1) {
6958
7203
  if (sex === "m") {
6959
7204
  return "\u0441\u044B\u043D";
@@ -6982,14 +7227,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
6982
7227
  return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
6983
7228
  }
6984
7229
  sibling() {
6985
- const sex = sexOf(this.personN);
7230
+ const sex = sexOf4(this.personN);
6986
7231
  if (sex === "m") {
6987
7232
  return "\u0431\u0440\u0430\u0442";
6988
7233
  }
6989
7234
  if (sex === "f") {
6990
7235
  return "\u0441\u0435\u0441\u0442\u0440\u0430";
6991
7236
  }
6992
- return "\u0441\u0438\u0431\u043B\u0438\u043D\u0433";
7237
+ return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
6993
7238
  }
6994
7239
  halfBlood(relation) {
6995
7240
  if (!relation || !this.isHalfBlood) {
@@ -7003,7 +7248,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7003
7248
  return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
7004
7249
  }
7005
7250
  spouse() {
7006
- const sex = sexOf(this.personN);
7251
+ const sex = sexOf4(this.personN);
7007
7252
  if (sex === "m") {
7008
7253
  return "\u043C\u0443\u0436";
7009
7254
  }
@@ -7017,7 +7262,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7017
7262
  return "";
7018
7263
  }
7019
7264
  const spouse = this.path?.[1].indi;
7020
- const sex = sexOf(spouse);
7265
+ const sex = sexOf4(spouse);
7021
7266
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7022
7267
  return `${relation} ${toGenitive(spouseType)}`;
7023
7268
  }
@@ -7026,7 +7271,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7026
7271
  return "";
7027
7272
  }
7028
7273
  const spouse = this.path?.[this.path.length - 1].indi;
7029
- const sex = sexOf(spouse);
7274
+ const sex = sexOf4(spouse);
7030
7275
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7031
7276
  return `${spouseType} ${toGenitive(relation)}`;
7032
7277
  }
@@ -7063,7 +7308,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7063
7308
  if (!relation || !this.pathN?.relation) {
7064
7309
  return relation ?? "";
7065
7310
  }
7066
- return `${this.pathN.relation} ${relation}`;
7311
+ const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
7312
+ if (mapped) {
7313
+ return mapped;
7314
+ }
7315
+ if (this.pathN.relation === "step") {
7316
+ return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
7317
+ }
7318
+ if (this.pathN.relation === "adopted") {
7319
+ return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
7320
+ relation
7321
+ ) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7322
+ }
7323
+ if (this.pathN.relation === "foster") {
7324
+ return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7325
+ }
7326
+ return relation;
7067
7327
  }
7068
7328
  };
7069
7329
 
@@ -7087,7 +7347,7 @@ var InLawsJa = {
7087
7347
  };
7088
7348
 
7089
7349
  // src/kinship-translator/kinship-translator.ja.ts
7090
- var sexOf2 = (person) => {
7350
+ var sexOf5 = (person) => {
7091
7351
  if (person?.isMale?.()) {
7092
7352
  return "m";
7093
7353
  }
@@ -7096,7 +7356,7 @@ var sexOf2 = (person) => {
7096
7356
  }
7097
7357
  return "n";
7098
7358
  };
7099
- var pick = (sex, male, female, neutral) => {
7359
+ var pick4 = (sex, male, female, neutral) => {
7100
7360
  if (sex === "m") {
7101
7361
  return male;
7102
7362
  }
@@ -7109,18 +7369,18 @@ var lineal = (level, sex, kind) => {
7109
7369
  const L = Math.max(1, level);
7110
7370
  if (kind === "asc") {
7111
7371
  if (L <= 1) {
7112
- return pick(sex, "\u7236", "\u6BCD", "\u89AA");
7372
+ return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
7113
7373
  }
7114
7374
  if (L === 2) {
7115
- return pick(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7375
+ return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7116
7376
  }
7117
7377
  if (L === 3) {
7118
- return pick(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7378
+ return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7119
7379
  }
7120
7380
  if (L === 4) {
7121
- return pick(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7381
+ return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7122
7382
  }
7123
- return pick(
7383
+ return pick4(
7124
7384
  sex,
7125
7385
  `${L - 1}\u4E16\u306E\u7956\u7236`,
7126
7386
  `${L - 1}\u4E16\u306E\u7956\u6BCD`,
@@ -7128,7 +7388,7 @@ var lineal = (level, sex, kind) => {
7128
7388
  );
7129
7389
  }
7130
7390
  if (L <= 1) {
7131
- return pick(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7391
+ return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7132
7392
  }
7133
7393
  if (L === 2) {
7134
7394
  return "\u5B6B";
@@ -7175,52 +7435,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7175
7435
  }
7176
7436
  auncle() {
7177
7437
  const level = Math.abs(this.pathN?.level ?? 0);
7178
- const sex = sexOf2(this.personN);
7179
- if (level <= 2) {
7180
- return pick(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7438
+ const sex = sexOf5(this.personN);
7439
+ if (level <= 1) {
7440
+ return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7181
7441
  }
7182
- if (level === 3) {
7183
- return pick(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7442
+ if (level === 2) {
7443
+ return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7184
7444
  }
7185
- return pick(
7445
+ return pick4(
7186
7446
  sex,
7187
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058`,
7188
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3070`,
7189
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7447
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
7448
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
7449
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7190
7450
  );
7191
7451
  }
7192
7452
  nibling() {
7193
7453
  const level = Math.abs(this.pathN?.level ?? 0);
7194
- const sex = sexOf2(this.personN);
7195
- if (level <= 2) {
7196
- return pick(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7454
+ const sex = sexOf5(this.personN);
7455
+ if (level <= 1) {
7456
+ return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7197
7457
  }
7198
- if (level === 3) {
7199
- return pick(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7458
+ if (level === 2) {
7459
+ return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7200
7460
  }
7201
- return pick(
7461
+ return pick4(
7202
7462
  sex,
7203
- `${level - 2}\u4EE3\u4E0B\u306E\u7525`,
7204
- `${level - 2}\u4EE3\u4E0B\u306E\u59EA`,
7205
- `${level - 2}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7463
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525`,
7464
+ `${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
7465
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7206
7466
  );
7207
7467
  }
7208
7468
  parent() {
7209
7469
  return lineal(
7210
7470
  Math.abs(this.pathN?.level ?? 0),
7211
- sexOf2(this.personN),
7471
+ sexOf5(this.personN),
7212
7472
  "asc"
7213
7473
  );
7214
7474
  }
7215
7475
  child() {
7216
7476
  return lineal(
7217
7477
  Math.abs(this.pathN?.level ?? 0),
7218
- sexOf2(this.personN),
7478
+ sexOf5(this.personN),
7219
7479
  "desc"
7220
7480
  );
7221
7481
  }
7222
7482
  sibling() {
7223
- return pick(sexOf2(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7483
+ return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7224
7484
  }
7225
7485
  halfBlood(relation) {
7226
7486
  if (!relation || !this.isHalfBlood) {
@@ -7229,14 +7489,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7229
7489
  return `\u7570\u7236\u6BCD\u306E${relation}`;
7230
7490
  }
7231
7491
  spouse() {
7232
- return pick(sexOf2(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7492
+ return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7233
7493
  }
7234
7494
  ofSpouse(relation) {
7235
7495
  if (!relation) {
7236
7496
  return "";
7237
7497
  }
7238
- const spouseType = pick(
7239
- sexOf2(this.path?.[1].indi),
7498
+ const spouseType = pick4(
7499
+ sexOf5(this.path?.[1].indi),
7240
7500
  "\u592B",
7241
7501
  "\u59BB",
7242
7502
  "\u914D\u5076\u8005"
@@ -7248,7 +7508,7 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7248
7508
  return "";
7249
7509
  }
7250
7510
  const spouse = this.path?.[this.path.length - 1].indi;
7251
- const spouseType = pick(sexOf2(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7511
+ const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7252
7512
  return `${relation}\u306E${spouseType}`;
7253
7513
  }
7254
7514
  of(relation) {
@@ -7284,7 +7544,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7284
7544
  if (!relation || !this.pathN?.relation) {
7285
7545
  return relation ?? "";
7286
7546
  }
7287
- return `${this.pathN.relation}\u306E${relation}`;
7547
+ if (this.pathN.relation === "step") {
7548
+ if (relation === "\u7236") {
7549
+ return "\u7EE7\u7236";
7550
+ }
7551
+ if (relation === "\u6BCD") {
7552
+ return "\u7D99\u6BCD";
7553
+ }
7554
+ if (relation === "\u606F\u5B50") {
7555
+ return "\u7D99\u5B50";
7556
+ }
7557
+ if (relation === "\u5A18") {
7558
+ return "\u7D99\u5A18";
7559
+ }
7560
+ return `\u7D99${relation}`;
7561
+ }
7562
+ if (this.pathN.relation === "adopted") {
7563
+ return `\u990A\u5B50\u306E${relation}`;
7564
+ }
7565
+ if (this.pathN.relation === "foster") {
7566
+ return `\u91CC\u89AA\u306E${relation}`;
7567
+ }
7568
+ return relation;
7288
7569
  }
7289
7570
  };
7290
7571
 
@@ -7293,22 +7574,32 @@ var InLawsZh = {
7293
7574
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
7294
7575
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
7295
7576
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
7296
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
7297
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
7298
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
7577
+ "\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
7578
+ "\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
7579
+ "(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
7580
+ "\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
7581
+ "\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
7582
+ "(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
7583
+ "\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
7584
+ "\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
7585
+ "(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
7299
7586
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
7300
7587
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
7301
7588
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7302
7589
  "(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
7303
7590
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
7304
7591
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7305
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
7306
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
7592
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
7593
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
7594
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
7595
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
7596
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
7597
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
7307
7598
  "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
7308
7599
  };
7309
7600
 
7310
7601
  // src/kinship-translator/kinship-translator.zh.ts
7311
- var sexOf3 = (person) => {
7602
+ var sexOf6 = (person) => {
7312
7603
  if (person?.isMale?.()) {
7313
7604
  return "m";
7314
7605
  }
@@ -7317,7 +7608,7 @@ var sexOf3 = (person) => {
7317
7608
  }
7318
7609
  return "n";
7319
7610
  };
7320
- var pick2 = (sex, male, female, neutral) => {
7611
+ var pick5 = (sex, male, female, neutral) => {
7321
7612
  if (sex === "m") {
7322
7613
  return male;
7323
7614
  }
@@ -7330,41 +7621,41 @@ var lineal2 = (level, sex, kind) => {
7330
7621
  const L = Math.max(1, level);
7331
7622
  if (kind === "asc") {
7332
7623
  if (L <= 1) {
7333
- return pick2(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
7624
+ return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
7334
7625
  }
7335
7626
  if (L === 2) {
7336
- return pick2(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7627
+ return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7337
7628
  }
7338
7629
  if (L === 3) {
7339
- return pick2(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7630
+ return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7340
7631
  }
7341
7632
  if (L === 4) {
7342
- return pick2(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7633
+ return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7343
7634
  }
7344
- return pick2(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
7635
+ return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
7345
7636
  }
7346
7637
  if (L <= 1) {
7347
- return pick2(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
7638
+ return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
7348
7639
  }
7349
7640
  if (L === 2) {
7350
- return pick2(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
7641
+ return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
7351
7642
  }
7352
7643
  if (L === 3) {
7353
- return pick2(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
7644
+ return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
7354
7645
  }
7355
7646
  if (L === 4) {
7356
- return pick2(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
7647
+ return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
7357
7648
  }
7358
- return pick2(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
7649
+ return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
7359
7650
  };
7360
7651
  var cousinPlain2 = (degree, sex) => {
7361
7652
  if (degree <= 1) {
7362
- return pick2(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
7653
+ return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
7363
7654
  }
7364
7655
  if (degree === 2) {
7365
- return pick2(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
7656
+ return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
7366
7657
  }
7367
- return pick2(
7658
+ return pick5(
7368
7659
  sex,
7369
7660
  `${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
7370
7661
  `${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
@@ -7377,7 +7668,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7377
7668
  if (degree > 0) {
7378
7669
  degree = degree - 1;
7379
7670
  }
7380
- return cousinPlain2(degree, sexOf3(this.personN));
7671
+ return cousinPlain2(degree, sexOf6(this.personN));
7381
7672
  }
7382
7673
  removal() {
7383
7674
  const level = this.pathN?.level ?? 0;
@@ -7389,56 +7680,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7389
7680
  return level < 0 ? this.nibling() : this.auncle();
7390
7681
  }
7391
7682
  const removed = Math.abs(level);
7392
- return `${cousinPlain2(degree, sexOf3(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
7683
+ return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
7393
7684
  }
7394
7685
  auncle() {
7395
7686
  const level = Math.abs(this.pathN?.level ?? 0);
7396
- const sex = sexOf3(this.personN);
7397
- if (level <= 2) {
7398
- return pick2(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
7687
+ const sex = sexOf6(this.personN);
7688
+ if (level <= 1) {
7689
+ return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
7399
7690
  }
7400
- if (level === 3) {
7401
- return pick2(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
7691
+ if (level === 2) {
7692
+ return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
7402
7693
  }
7403
- return pick2(
7694
+ return pick5(
7404
7695
  sex,
7405
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u53D4`,
7406
- `${level - 2}\u4EE3\u524D\u7684\u963F\u59E8`,
7407
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
7696
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
7697
+ `${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
7698
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
7408
7699
  );
7409
7700
  }
7410
7701
  nibling() {
7411
7702
  const level = Math.abs(this.pathN?.level ?? 0);
7412
- const sex = sexOf3(this.personN);
7413
- if (level <= 2) {
7414
- return pick2(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
7703
+ const sex = sexOf6(this.personN);
7704
+ if (level <= 1) {
7705
+ return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
7415
7706
  }
7416
- if (level === 3) {
7417
- return pick2(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
7707
+ if (level === 2) {
7708
+ return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
7418
7709
  }
7419
- return pick2(
7710
+ return pick5(
7420
7711
  sex,
7421
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
7422
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5973`,
7423
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
7712
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
7713
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
7714
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
7424
7715
  );
7425
7716
  }
7426
7717
  parent() {
7427
7718
  return lineal2(
7428
7719
  Math.abs(this.pathN?.level ?? 0),
7429
- sexOf3(this.personN),
7720
+ sexOf6(this.personN),
7430
7721
  "asc"
7431
7722
  );
7432
7723
  }
7433
7724
  child() {
7434
7725
  return lineal2(
7435
7726
  Math.abs(this.pathN?.level ?? 0),
7436
- sexOf3(this.personN),
7727
+ sexOf6(this.personN),
7437
7728
  "desc"
7438
7729
  );
7439
7730
  }
7440
7731
  sibling() {
7441
- return pick2(sexOf3(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
7732
+ return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
7442
7733
  }
7443
7734
  halfBlood(relation) {
7444
7735
  if (!relation || !this.isHalfBlood) {
@@ -7447,14 +7738,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7447
7738
  return `\u5F02\u7236\u6BCD\u7684${relation}`;
7448
7739
  }
7449
7740
  spouse() {
7450
- return pick2(sexOf3(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7741
+ return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7451
7742
  }
7452
7743
  ofSpouse(relation) {
7453
7744
  if (!relation) {
7454
7745
  return "";
7455
7746
  }
7456
- const spouseType = pick2(
7457
- sexOf3(this.path?.[1].indi),
7747
+ const spouseType = pick5(
7748
+ sexOf6(this.path?.[1].indi),
7458
7749
  "\u4E08\u592B",
7459
7750
  "\u59BB\u5B50",
7460
7751
  "\u914D\u5076"
@@ -7466,7 +7757,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7466
7757
  return "";
7467
7758
  }
7468
7759
  const spouse = this.path?.[this.path.length - 1].indi;
7469
- const spouseType = pick2(sexOf3(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7760
+ const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7470
7761
  return `${relation}\u7684${spouseType}`;
7471
7762
  }
7472
7763
  of(relation) {
@@ -7502,7 +7793,40 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7502
7793
  if (!relation || !this.pathN?.relation) {
7503
7794
  return relation ?? "";
7504
7795
  }
7505
- return `${this.pathN.relation}${relation}`;
7796
+ if (this.pathN.relation === "step") {
7797
+ if (relation === "\u7236\u4EB2") {
7798
+ return "\u7EE7\u7236";
7799
+ }
7800
+ if (relation === "\u6BCD\u4EB2") {
7801
+ return "\u7EE7\u6BCD";
7802
+ }
7803
+ if (relation === "\u513F\u5B50") {
7804
+ return "\u7EE7\u5B50";
7805
+ }
7806
+ if (relation === "\u5973\u513F") {
7807
+ return "\u7EE7\u5973";
7808
+ }
7809
+ return `\u7EE7${relation}`;
7810
+ }
7811
+ if (this.pathN.relation === "adopted") {
7812
+ if (relation === "\u7236\u4EB2") {
7813
+ return "\u517B\u7236";
7814
+ }
7815
+ if (relation === "\u6BCD\u4EB2") {
7816
+ return "\u517B\u6BCD";
7817
+ }
7818
+ if (relation === "\u513F\u5B50") {
7819
+ return "\u517B\u5B50";
7820
+ }
7821
+ if (relation === "\u5973\u513F") {
7822
+ return "\u517B\u5973";
7823
+ }
7824
+ return `\u517B${relation}`;
7825
+ }
7826
+ if (this.pathN.relation === "foster") {
7827
+ return `\u5BC4\u517B${relation}`;
7828
+ }
7829
+ return relation;
7506
7830
  }
7507
7831
  };
7508
7832
 
@@ -8657,7 +8981,7 @@ var ensureExtensionSchema = (gedcom, extraTags) => {
8657
8981
 
8658
8982
  // package.json
8659
8983
  var package_default = {
8660
- version: "2.1.11"};
8984
+ version: "2.1.12"};
8661
8985
 
8662
8986
  // src/utils/get-product-details.ts
8663
8987
  var isDevelopment = () => {