@treeviz/gedcom-parser 2.0.9 → 2.0.10

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.
@@ -77,7 +77,8 @@ __export(translators_exports, {
77
77
  en: () => KinshipTranslatorEn,
78
78
  es: () => KinshipTranslatorEs,
79
79
  fr: () => KinshipTranslatorFr,
80
- hu: () => KinshipTranslatorHU
80
+ hu: () => KinshipTranslatorHU,
81
+ ru: () => KinshipTranslatorRu
81
82
  });
82
83
 
83
84
  // src/constants/constants.ts
@@ -2574,6 +2575,249 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
2574
2575
  }
2575
2576
  };
2576
2577
 
2578
+ // src/kinship-translator/patterns.ru.ts
2579
+ var InLawsRu = {
2580
+ "\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",
2581
+ "\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",
2582
+ "\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
2583
+ "\u043C\u0430\u0442\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0451\u0449\u0430",
2584
+ "\u043E\u0442\u0435\u0446 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C",
2585
+ "\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",
2586
+ "\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",
2587
+ "\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",
2588
+ "\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",
2589
+ "(\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",
2590
+ "(\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",
2591
+ "(\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"
2592
+ };
2593
+
2594
+ // src/kinship-translator/kinship-translator.ru.ts
2595
+ var GENITIVE = {
2596
+ \u0441\u044B\u043D: "\u0441\u044B\u043D\u0430",
2597
+ \u0434\u043E\u0447\u044C: "\u0434\u043E\u0447\u0435\u0440\u0438",
2598
+ \u0440\u0435\u0431\u0451\u043D\u043E\u043A: "\u0440\u0435\u0431\u0451\u043D\u043A\u0430",
2599
+ \u0431\u0440\u0430\u0442: "\u0431\u0440\u0430\u0442\u0430",
2600
+ \u0441\u0435\u0441\u0442\u0440\u0430: "\u0441\u0435\u0441\u0442\u0440\u044B",
2601
+ \u0441\u0438\u0431\u043B\u0438\u043D\u0433: "\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430",
2602
+ \u043E\u0442\u0435\u0446: "\u043E\u0442\u0446\u0430",
2603
+ \u043C\u0430\u0442\u044C: "\u043C\u0430\u0442\u0435\u0440\u0438",
2604
+ \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C: "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F",
2605
+ \u043C\u0443\u0436: "\u043C\u0443\u0436\u0430",
2606
+ \u0436\u0435\u043D\u0430: "\u0436\u0435\u043D\u044B",
2607
+ \u0441\u0443\u043F\u0440\u0443\u0433: "\u0441\u0443\u043F\u0440\u0443\u0433\u0430",
2608
+ \u0441\u0443\u043F\u0440\u0443\u0433\u0430: "\u0441\u0443\u043F\u0440\u0443\u0433\u0438"
2609
+ };
2610
+ var toGenitive = (word) => GENITIVE[word] ?? word;
2611
+ var cousinWord = (degree, sex) => {
2612
+ const stem = degree <= 1 ? "\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D" : degree === 2 ? "\u0442\u0440\u043E\u044E\u0440\u043E\u0434\u043D" : degree === 3 ? "\u0447\u0435\u0442\u0432\u0435\u0440\u043E\u044E\u0440\u043E\u0434\u043D" : `${degree + 1}-\u044E\u0440\u043E\u0434\u043D`;
2613
+ if (sex === "m") {
2614
+ return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442`;
2615
+ }
2616
+ if (sex === "f") {
2617
+ return `${stem}\u0430\u044F \u0441\u0435\u0441\u0442\u0440\u0430`;
2618
+ }
2619
+ return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
2620
+ };
2621
+ var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
2622
+ var sexOf = (person) => {
2623
+ if (person?.isMale?.()) {
2624
+ return "m";
2625
+ }
2626
+ if (person?.isFemale?.()) {
2627
+ return "f";
2628
+ }
2629
+ return "n";
2630
+ };
2631
+ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
2632
+ indirect() {
2633
+ let degree = Math.abs(this.pathN?.degree ?? 0);
2634
+ if (degree > 0) {
2635
+ degree = degree - 1;
2636
+ }
2637
+ return cousinWord(degree, sexOf(this.personN));
2638
+ }
2639
+ removal() {
2640
+ const level = this.pathN?.level ?? 0;
2641
+ let degree = Math.abs(this.pathN?.degree ?? 0);
2642
+ if (degree > 0) {
2643
+ degree = degree - 1;
2644
+ }
2645
+ if (!degree) {
2646
+ return level < 0 ? this.nibling() : this.auncle();
2647
+ }
2648
+ const removed = Math.abs(level);
2649
+ return `${cousinWord(degree, sexOf(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
2650
+ }
2651
+ auncle() {
2652
+ const level = Math.abs(this.pathN?.level ?? 0);
2653
+ const pra = praRepeat(Math.max(0, level - 2));
2654
+ const sex = sexOf(this.personN);
2655
+ if (sex === "m") {
2656
+ return `${pra}\u0434\u044F\u0434\u044F`;
2657
+ }
2658
+ if (sex === "f") {
2659
+ return `${pra}\u0442\u0451\u0442\u044F`;
2660
+ }
2661
+ return `${pra}\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F`;
2662
+ }
2663
+ nibling() {
2664
+ const level = Math.abs(this.pathN?.level ?? 0);
2665
+ const pra = praRepeat(Math.max(0, level - 2));
2666
+ const sex = sexOf(this.personN);
2667
+ if (sex === "m") {
2668
+ return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
2669
+ }
2670
+ if (sex === "f") {
2671
+ return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
2672
+ }
2673
+ return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
2674
+ }
2675
+ parent() {
2676
+ const level = Math.abs(this.pathN?.level ?? 0);
2677
+ const sex = sexOf(this.personN);
2678
+ if (level <= 1) {
2679
+ if (sex === "m") {
2680
+ return "\u043E\u0442\u0435\u0446";
2681
+ }
2682
+ if (sex === "f") {
2683
+ return "\u043C\u0430\u0442\u044C";
2684
+ }
2685
+ return "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C";
2686
+ }
2687
+ if (level === 2) {
2688
+ if (sex === "m") {
2689
+ return "\u0434\u0435\u0434";
2690
+ }
2691
+ if (sex === "f") {
2692
+ return "\u0431\u0430\u0431\u0443\u0448\u043A\u0430";
2693
+ }
2694
+ return "\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430";
2695
+ }
2696
+ const pra = praRepeat(level - 2);
2697
+ if (sex === "m") {
2698
+ return `${pra}\u0434\u0435\u0434`;
2699
+ }
2700
+ if (sex === "f") {
2701
+ return `${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
2702
+ }
2703
+ return `${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
2704
+ }
2705
+ child() {
2706
+ const level = Math.abs(this.pathN?.level ?? 0);
2707
+ const sex = sexOf(this.personN);
2708
+ if (level <= 1) {
2709
+ if (sex === "m") {
2710
+ return "\u0441\u044B\u043D";
2711
+ }
2712
+ if (sex === "f") {
2713
+ return "\u0434\u043E\u0447\u044C";
2714
+ }
2715
+ return "\u0440\u0435\u0431\u0451\u043D\u043E\u043A";
2716
+ }
2717
+ if (level === 2) {
2718
+ if (sex === "m") {
2719
+ return "\u0432\u043D\u0443\u043A";
2720
+ }
2721
+ if (sex === "f") {
2722
+ return "\u0432\u043D\u0443\u0447\u043A\u0430";
2723
+ }
2724
+ return "\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430";
2725
+ }
2726
+ const pra = praRepeat(level - 2);
2727
+ if (sex === "m") {
2728
+ return `${pra}\u0432\u043D\u0443\u043A`;
2729
+ }
2730
+ if (sex === "f") {
2731
+ return `${pra}\u0432\u043D\u0443\u0447\u043A\u0430`;
2732
+ }
2733
+ return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
2734
+ }
2735
+ sibling() {
2736
+ const sex = sexOf(this.personN);
2737
+ if (sex === "m") {
2738
+ return "\u0431\u0440\u0430\u0442";
2739
+ }
2740
+ if (sex === "f") {
2741
+ return "\u0441\u0435\u0441\u0442\u0440\u0430";
2742
+ }
2743
+ return "\u0441\u0438\u0431\u043B\u0438\u043D\u0433";
2744
+ }
2745
+ halfBlood(relation) {
2746
+ if (!relation || !this.isHalfBlood) {
2747
+ return relation ?? "";
2748
+ }
2749
+ if (/сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
2750
+ relation
2751
+ )) {
2752
+ return `\u0441\u0432\u043E\u0434\u043D\u0430\u044F ${relation}`;
2753
+ }
2754
+ return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
2755
+ }
2756
+ spouse() {
2757
+ const sex = sexOf(this.personN);
2758
+ if (sex === "m") {
2759
+ return "\u043C\u0443\u0436";
2760
+ }
2761
+ if (sex === "f") {
2762
+ return "\u0436\u0435\u043D\u0430";
2763
+ }
2764
+ return "\u0441\u0443\u043F\u0440\u0443\u0433";
2765
+ }
2766
+ ofSpouse(relation) {
2767
+ if (!relation) {
2768
+ return "";
2769
+ }
2770
+ const spouse = this.path?.[1].indi;
2771
+ const sex = sexOf(spouse);
2772
+ const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
2773
+ return `${relation} ${toGenitive(spouseType)}`;
2774
+ }
2775
+ spouseOf(relation) {
2776
+ if (!relation) {
2777
+ return "";
2778
+ }
2779
+ const spouse = this.path?.[this.path.length - 1].indi;
2780
+ const sex = sexOf(spouse);
2781
+ const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
2782
+ return `${spouseType} ${toGenitive(relation)}`;
2783
+ }
2784
+ of(relation) {
2785
+ const formattedName = nameFormatter(this.path?.[0]?.indi, {
2786
+ nameOrder: "first-last"
2787
+ });
2788
+ let name = formattedName.inOrder.filter(Boolean).join(" ");
2789
+ if (this.displayName === "none") {
2790
+ name = "";
2791
+ } else if (this.displayName === "givenname") {
2792
+ name = formattedName.givenname;
2793
+ } else if (this.displayName === "surname") {
2794
+ name = `${formattedName.surname}`;
2795
+ }
2796
+ if (!name || !relation) {
2797
+ return relation ?? "";
2798
+ }
2799
+ return `${name}: ${relation}`;
2800
+ }
2801
+ inLaw(relation) {
2802
+ let inLawRelation = relation;
2803
+ Object.keys(InLawsRu).find((pattern) => {
2804
+ const regex = new RegExp(`^${pattern}$`);
2805
+ if (relation?.match(regex)) {
2806
+ inLawRelation = InLawsRu[pattern];
2807
+ return true;
2808
+ }
2809
+ return false;
2810
+ });
2811
+ return inLawRelation ?? "";
2812
+ }
2813
+ relationType(relation) {
2814
+ if (!relation || !this.pathN?.relation) {
2815
+ return relation ?? "";
2816
+ }
2817
+ return `${this.pathN.relation} ${relation}`;
2818
+ }
2819
+ };
2820
+
2577
2821
  // src/kinship-translator/kinship-translator.ts
2578
2822
  var KinshipTranslator = class {
2579
2823
  constructor(person1, person2, lang = "en", entirePath, displayName = "givenname") {
@@ -6518,7 +6762,7 @@ var createIndi = (gedcom, id, main, parent) => {
6518
6762
 
6519
6763
  // package.json
6520
6764
  var package_default = {
6521
- version: "2.0.9"};
6765
+ version: "2.0.10"};
6522
6766
 
6523
6767
  // src/utils/get-product-details.ts
6524
6768
  var getVersion = () => package_default.version;
package/dist/cli/index.js CHANGED
@@ -1101,7 +1101,8 @@ __export(translators_exports, {
1101
1101
  en: () => KinshipTranslatorEn,
1102
1102
  es: () => KinshipTranslatorEs,
1103
1103
  fr: () => KinshipTranslatorFr,
1104
- hu: () => KinshipTranslatorHU
1104
+ hu: () => KinshipTranslatorHU,
1105
+ ru: () => KinshipTranslatorRu
1105
1106
  });
1106
1107
 
1107
1108
  // src/constants/filters.ts
@@ -5368,6 +5369,249 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
5368
5369
  }
5369
5370
  };
5370
5371
 
5372
+ // src/kinship-translator/patterns.ru.ts
5373
+ var InLawsRu = {
5374
+ "\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",
5375
+ "\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",
5376
+ "\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
5377
+ "\u043C\u0430\u0442\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0451\u0449\u0430",
5378
+ "\u043E\u0442\u0435\u0446 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C",
5379
+ "\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",
5380
+ "\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",
5381
+ "\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",
5382
+ "\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",
5383
+ "(\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",
5384
+ "(\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",
5385
+ "(\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"
5386
+ };
5387
+
5388
+ // src/kinship-translator/kinship-translator.ru.ts
5389
+ var GENITIVE = {
5390
+ \u0441\u044B\u043D: "\u0441\u044B\u043D\u0430",
5391
+ \u0434\u043E\u0447\u044C: "\u0434\u043E\u0447\u0435\u0440\u0438",
5392
+ \u0440\u0435\u0431\u0451\u043D\u043E\u043A: "\u0440\u0435\u0431\u0451\u043D\u043A\u0430",
5393
+ \u0431\u0440\u0430\u0442: "\u0431\u0440\u0430\u0442\u0430",
5394
+ \u0441\u0435\u0441\u0442\u0440\u0430: "\u0441\u0435\u0441\u0442\u0440\u044B",
5395
+ \u0441\u0438\u0431\u043B\u0438\u043D\u0433: "\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430",
5396
+ \u043E\u0442\u0435\u0446: "\u043E\u0442\u0446\u0430",
5397
+ \u043C\u0430\u0442\u044C: "\u043C\u0430\u0442\u0435\u0440\u0438",
5398
+ \u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C: "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044F",
5399
+ \u043C\u0443\u0436: "\u043C\u0443\u0436\u0430",
5400
+ \u0436\u0435\u043D\u0430: "\u0436\u0435\u043D\u044B",
5401
+ \u0441\u0443\u043F\u0440\u0443\u0433: "\u0441\u0443\u043F\u0440\u0443\u0433\u0430",
5402
+ \u0441\u0443\u043F\u0440\u0443\u0433\u0430: "\u0441\u0443\u043F\u0440\u0443\u0433\u0438"
5403
+ };
5404
+ var toGenitive = (word) => GENITIVE[word] ?? word;
5405
+ var cousinWord = (degree, sex) => {
5406
+ const stem = degree <= 1 ? "\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D" : degree === 2 ? "\u0442\u0440\u043E\u044E\u0440\u043E\u0434\u043D" : degree === 3 ? "\u0447\u0435\u0442\u0432\u0435\u0440\u043E\u044E\u0440\u043E\u0434\u043D" : `${degree + 1}-\u044E\u0440\u043E\u0434\u043D`;
5407
+ if (sex === "m") {
5408
+ return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442`;
5409
+ }
5410
+ if (sex === "f") {
5411
+ return `${stem}\u0430\u044F \u0441\u0435\u0441\u0442\u0440\u0430`;
5412
+ }
5413
+ return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
5414
+ };
5415
+ var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
5416
+ var sexOf = (person) => {
5417
+ if (person?.isMale?.()) {
5418
+ return "m";
5419
+ }
5420
+ if (person?.isFemale?.()) {
5421
+ return "f";
5422
+ }
5423
+ return "n";
5424
+ };
5425
+ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
5426
+ indirect() {
5427
+ let degree = Math.abs(this.pathN?.degree ?? 0);
5428
+ if (degree > 0) {
5429
+ degree = degree - 1;
5430
+ }
5431
+ return cousinWord(degree, sexOf(this.personN));
5432
+ }
5433
+ removal() {
5434
+ const level = this.pathN?.level ?? 0;
5435
+ let degree = Math.abs(this.pathN?.degree ?? 0);
5436
+ if (degree > 0) {
5437
+ degree = degree - 1;
5438
+ }
5439
+ if (!degree) {
5440
+ return level < 0 ? this.nibling() : this.auncle();
5441
+ }
5442
+ const removed = Math.abs(level);
5443
+ return `${cousinWord(degree, sexOf(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
5444
+ }
5445
+ auncle() {
5446
+ const level = Math.abs(this.pathN?.level ?? 0);
5447
+ const pra = praRepeat(Math.max(0, level - 2));
5448
+ const sex = sexOf(this.personN);
5449
+ if (sex === "m") {
5450
+ return `${pra}\u0434\u044F\u0434\u044F`;
5451
+ }
5452
+ if (sex === "f") {
5453
+ return `${pra}\u0442\u0451\u0442\u044F`;
5454
+ }
5455
+ return `${pra}\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F`;
5456
+ }
5457
+ nibling() {
5458
+ const level = Math.abs(this.pathN?.level ?? 0);
5459
+ const pra = praRepeat(Math.max(0, level - 2));
5460
+ const sex = sexOf(this.personN);
5461
+ if (sex === "m") {
5462
+ return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
5463
+ }
5464
+ if (sex === "f") {
5465
+ return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
5466
+ }
5467
+ return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
5468
+ }
5469
+ parent() {
5470
+ const level = Math.abs(this.pathN?.level ?? 0);
5471
+ const sex = sexOf(this.personN);
5472
+ if (level <= 1) {
5473
+ if (sex === "m") {
5474
+ return "\u043E\u0442\u0435\u0446";
5475
+ }
5476
+ if (sex === "f") {
5477
+ return "\u043C\u0430\u0442\u044C";
5478
+ }
5479
+ return "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C";
5480
+ }
5481
+ if (level === 2) {
5482
+ if (sex === "m") {
5483
+ return "\u0434\u0435\u0434";
5484
+ }
5485
+ if (sex === "f") {
5486
+ return "\u0431\u0430\u0431\u0443\u0448\u043A\u0430";
5487
+ }
5488
+ return "\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430";
5489
+ }
5490
+ const pra = praRepeat(level - 2);
5491
+ if (sex === "m") {
5492
+ return `${pra}\u0434\u0435\u0434`;
5493
+ }
5494
+ if (sex === "f") {
5495
+ return `${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
5496
+ }
5497
+ return `${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
5498
+ }
5499
+ child() {
5500
+ const level = Math.abs(this.pathN?.level ?? 0);
5501
+ const sex = sexOf(this.personN);
5502
+ if (level <= 1) {
5503
+ if (sex === "m") {
5504
+ return "\u0441\u044B\u043D";
5505
+ }
5506
+ if (sex === "f") {
5507
+ return "\u0434\u043E\u0447\u044C";
5508
+ }
5509
+ return "\u0440\u0435\u0431\u0451\u043D\u043E\u043A";
5510
+ }
5511
+ if (level === 2) {
5512
+ if (sex === "m") {
5513
+ return "\u0432\u043D\u0443\u043A";
5514
+ }
5515
+ if (sex === "f") {
5516
+ return "\u0432\u043D\u0443\u0447\u043A\u0430";
5517
+ }
5518
+ return "\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430";
5519
+ }
5520
+ const pra = praRepeat(level - 2);
5521
+ if (sex === "m") {
5522
+ return `${pra}\u0432\u043D\u0443\u043A`;
5523
+ }
5524
+ if (sex === "f") {
5525
+ return `${pra}\u0432\u043D\u0443\u0447\u043A\u0430`;
5526
+ }
5527
+ return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
5528
+ }
5529
+ sibling() {
5530
+ const sex = sexOf(this.personN);
5531
+ if (sex === "m") {
5532
+ return "\u0431\u0440\u0430\u0442";
5533
+ }
5534
+ if (sex === "f") {
5535
+ return "\u0441\u0435\u0441\u0442\u0440\u0430";
5536
+ }
5537
+ return "\u0441\u0438\u0431\u043B\u0438\u043D\u0433";
5538
+ }
5539
+ halfBlood(relation) {
5540
+ if (!relation || !this.isHalfBlood) {
5541
+ return relation ?? "";
5542
+ }
5543
+ if (/сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
5544
+ relation
5545
+ )) {
5546
+ return `\u0441\u0432\u043E\u0434\u043D\u0430\u044F ${relation}`;
5547
+ }
5548
+ return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
5549
+ }
5550
+ spouse() {
5551
+ const sex = sexOf(this.personN);
5552
+ if (sex === "m") {
5553
+ return "\u043C\u0443\u0436";
5554
+ }
5555
+ if (sex === "f") {
5556
+ return "\u0436\u0435\u043D\u0430";
5557
+ }
5558
+ return "\u0441\u0443\u043F\u0440\u0443\u0433";
5559
+ }
5560
+ ofSpouse(relation) {
5561
+ if (!relation) {
5562
+ return "";
5563
+ }
5564
+ const spouse = this.path?.[1].indi;
5565
+ const sex = sexOf(spouse);
5566
+ const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
5567
+ return `${relation} ${toGenitive(spouseType)}`;
5568
+ }
5569
+ spouseOf(relation) {
5570
+ if (!relation) {
5571
+ return "";
5572
+ }
5573
+ const spouse = this.path?.[this.path.length - 1].indi;
5574
+ const sex = sexOf(spouse);
5575
+ const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
5576
+ return `${spouseType} ${toGenitive(relation)}`;
5577
+ }
5578
+ of(relation) {
5579
+ const formattedName = nameFormatter(this.path?.[0]?.indi, {
5580
+ nameOrder: "first-last"
5581
+ });
5582
+ let name = formattedName.inOrder.filter(Boolean).join(" ");
5583
+ if (this.displayName === "none") {
5584
+ name = "";
5585
+ } else if (this.displayName === "givenname") {
5586
+ name = formattedName.givenname;
5587
+ } else if (this.displayName === "surname") {
5588
+ name = `${formattedName.surname}`;
5589
+ }
5590
+ if (!name || !relation) {
5591
+ return relation ?? "";
5592
+ }
5593
+ return `${name}: ${relation}`;
5594
+ }
5595
+ inLaw(relation) {
5596
+ let inLawRelation = relation;
5597
+ Object.keys(InLawsRu).find((pattern) => {
5598
+ const regex = new RegExp(`^${pattern}$`);
5599
+ if (relation?.match(regex)) {
5600
+ inLawRelation = InLawsRu[pattern];
5601
+ return true;
5602
+ }
5603
+ return false;
5604
+ });
5605
+ return inLawRelation ?? "";
5606
+ }
5607
+ relationType(relation) {
5608
+ if (!relation || !this.pathN?.relation) {
5609
+ return relation ?? "";
5610
+ }
5611
+ return `${this.pathN.relation} ${relation}`;
5612
+ }
5613
+ };
5614
+
5371
5615
  // src/kinship-translator/kinship-translator.ts
5372
5616
  var KinshipTranslator = class {
5373
5617
  constructor(person1, person2, lang = "en", entirePath, displayName = "givenname") {
@@ -6512,7 +6756,7 @@ var Families = class _Families extends List {
6512
6756
 
6513
6757
  // package.json
6514
6758
  var package_default = {
6515
- version: "2.0.9"};
6759
+ version: "2.0.10"};
6516
6760
 
6517
6761
  // src/utils/get-product-details.ts
6518
6762
  var isDevelopment = () => {