@molgenis/vip-report-template 2.6.4 → 2.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.scannerwork/css-bundle/stylelintconfig.json +1 -1
- package/.scannerwork/report-task.txt +5 -5
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_AnnotationsNav_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_Gene_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordCommonDetails_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoDetailsItemValue_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoDetailsItem_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoDetails_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordInfoUnnestedDetails_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_RecordTable_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_SampleNavigation_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_SamplePedigree_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_TreeVisualisation_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_components_annotation_AnnotationControl_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_globals_utils_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_store_actions_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_store_getters_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_store_mutations_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_types_Consequence_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_types_Gene_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_utils_treeBuilder_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_utils_treeDrawer_ts_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_views_DecisionTreeViewer_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_views_Samples_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/_home_travis_build_molgenis_vip_report_template_src_views_VcfViewer_vue_1_1_P1_ENTRY.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_AnnotationsNav_vue_32_20_FE_91_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_AnnotationsNav_vue_36_24_A_63_0.ucfg → src_components_AnnotationsNav_vue_36_24_A_65_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_AnnotationsNav_vue_44_25_A_64_eve.ucfg → src_components_AnnotationsNav_vue_44_25_A_66_eve.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_AnnotationsNav_vue_55_20_FE_92_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_GenomeBrowser_vue_52_30_FE_27_rec.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_GenomeBrowser_vue_73_26_A_24_sam.ucfg → src_components_GenomeBrowser_vue_73_26_A_26_sam.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_Genotype_vue_46_21_FE_87_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_Genotype_vue_49_48_A_31_a_b.ucfg → src_components_Genotype_vue_49_48_A_33_a_b.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordCommonDetails_vue_80_11_FE_119_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordCommonDetails_vue_86_10_FE_120_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_110_23_FE_34_0.ucfg → src_components_RecordInfoDetailsItemValue_vue_114_23_FE_34_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_119_13_FE_35_val.ucfg → src_components_RecordInfoDetailsItemValue_vue_123_13_FE_35_val.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_147_16_FE_36_val.ucfg → src_components_RecordInfoDetailsItemValue_vue_151_16_FE_36_val.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_90_19_FE_32_0.ucfg → src_components_RecordInfoDetailsItemValue_vue_94_19_FE_32_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetailsItemValue_vue_95_22_FE_33_0.ucfg → src_components_RecordInfoDetailsItemValue_vue_99_22_FE_33_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordInfoDetails_vue_32_23_FE_99_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetails_vue_33_68_A_66_inf.ucfg → src_components_RecordInfoDetails_vue_33_68_A_68_inf.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordInfoDetails_vue_37_21_FE_100_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordInfoDetails_vue_38_66_A_67_inf.ucfg → src_components_RecordInfoDetails_vue_38_66_A_69_inf.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordInfoDetails_vue_44_17_FE_101_thi_tha.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordInfoDetails_vue_47_18_FE_102_met.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordInfoUnnestedDetails_vue_39_11_FE_46_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordInfoUnnestedDetails_vue_46_10_FE_47_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_297_19_FE_2_0.ucfg → src_components_RecordTable_vue_298_19_FE_2_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_300_11_FE_3_0.ucfg → src_components_RecordTable_vue_301_11_FE_3_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_345_13_FE_4_ctx.ucfg → src_components_RecordTable_vue_346_13_FE_4_ctx.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_353_44_A_9_0.ucfg → src_components_RecordTable_vue_354_44_A_11_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_360_9_FE_5_rec_ind_but.ucfg → src_components_RecordTable_vue_361_9_FE_5_rec_ind_but.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_365_19_FE_6_0.ucfg → src_components_RecordTable_vue_366_19_FE_6_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_369_16_FE_7_0.ucfg → src_components_RecordTable_vue_370_16_FE_7_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_402_22_FE_8_0.ucfg → src_components_RecordTable_vue_403_22_FE_8_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_409_33_FE_9_0.ucfg → src_components_RecordTable_vue_410_33_FE_9_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_436_28_FE_10_0.ucfg → src_components_RecordTable_vue_437_28_FE_10_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_443_31_FE_11_0.ucfg → src_components_RecordTable_vue_444_31_FE_11_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_450_24_FE_12_0.ucfg → src_components_RecordTable_vue_451_24_FE_12_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_453_32_FE_13_0.ucfg → src_components_RecordTable_vue_454_32_FE_13_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_455_18_A_10_phe.ucfg → src_components_RecordTable_vue_456_18_A_12_phe.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_456_14_A_11_phe.ucfg → src_components_RecordTable_vue_457_14_A_13_phe.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_463_15_FE_14_ctx.ucfg → src_components_RecordTable_vue_464_15_FE_14_ctx.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_471_19_A_12_a_b.ucfg → src_components_RecordTable_vue_472_19_A_14_a_b.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_480_19_A_13_a_b.ucfg → src_components_RecordTable_vue_481_19_A_15_a_b.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_504_19_FE_15_rec.ucfg → src_components_RecordTable_vue_505_19_FE_15_rec.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_510_41_A_14_con.ucfg → src_components_RecordTable_vue_511_41_A_16_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_RecordTable_vue_520_41_A_17_con.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_519_43_A_16_con.ucfg → src_components_RecordTable_vue_532_43_A_18_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_524_41_A_17_con.ucfg → src_components_RecordTable_vue_537_41_A_19_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_528_41_A_18_con.ucfg → src_components_RecordTable_vue_541_41_A_20_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_532_41_A_19_con.ucfg → src_components_RecordTable_vue_545_41_A_21_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_543_41_A_20_con.ucfg → src_components_RecordTable_vue_556_41_A_22_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_547_41_A_21_con.ucfg → src_components_RecordTable_vue_560_41_A_23_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_551_41_A_22_con.ucfg → src_components_RecordTable_vue_564_41_A_24_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_555_41_A_23_con.ucfg → src_components_RecordTable_vue_568_41_A_25_con.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_567_11_FE_16_0.ucfg → src_components_RecordTable_vue_580_11_FE_16_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_571_33_FE_17_0.ucfg → src_components_RecordTable_vue_584_33_FE_17_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_574_44_FE_18_0.ucfg → src_components_RecordTable_vue_587_44_FE_18_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_578_46_FE_19_0.ucfg → src_components_RecordTable_vue_591_46_FE_19_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_582_41_FE_20_0.ucfg → src_components_RecordTable_vue_595_41_FE_20_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_components_RecordTable_vue_586_40_FE_21_0.ucfg → src_components_RecordTable_vue_599_40_FE_21_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_23_19_FE_49_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_SampleNavigation_vue_24_34_A_26_sam.ucfg → src_components_SampleNavigation_vue_24_34_A_28_sam.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_31_10_FE_50_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_34_13_FE_51_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_37_13_FE_52_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_SampleNavigation_vue_40_15_FE_53_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_SamplePedigree_vue_30_19_FE_103_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_SamplePedigree_vue_34_19_FE_104_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_124_14_FE_64_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_127_13_FE_65_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_130_10_FE_66_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_133_10_FE_67_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_153_14_FE_72_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_162_14_FE_73_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_167_11_FE_74_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_170_11_FE_75_pro.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_176_16_FE_76_nod_g.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_TreeVisualisation_vue_177_21_A_27_nod.ucfg → src_components_TreeVisualisation_vue_177_21_A_29_nod.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_181_16_FE_77_edg_g.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_TreeVisualisation_vue_182_21_A_28_edg.ucfg → src_components_TreeVisualisation_vue_182_21_A_30_edg.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_186_18_FE_78_nod_edg.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_199_14_FE_79_g.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_209_15_FE_80_svg_min_max.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_components_TreeVisualisation_vue_216_21_A_29_eve.ucfg → src_components_TreeVisualisation_vue_216_21_A_31_eve.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_225_11_FE_81_nod_edg.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_TreeVisualisation_vue_78_7_FE_57_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_components_annotation_AnnotationControl_vue_27_13_FE_89_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_122_1_FD_2_getInfoConsequences.ucfg → src_globals_utils_ts_133_1_FD_2_getInfoConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_216_1_FD_3_hasVepConsequences.ucfg → src_globals_utils_ts_233_1_FD_3_hasVepConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_221_1_FD_4_getVepConsequences.ucfg → src_globals_utils_ts_238_1_FD_4_getVepConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_249_1_FD_5_hasSnpEffConsequences.ucfg → src_globals_utils_ts_267_1_FD_5_hasSnpEffConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_254_1_FD_6_getSnpEffConsequences.ucfg → src_globals_utils_ts_272_1_FD_6_getSnpEffConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_345_1_FD_7_sortConsequences.ucfg → src_globals_utils_ts_364_1_FD_7_sortConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_375_8_FD_8_getConsequences.ucfg → src_globals_utils_ts_394_8_FD_8_getConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_387_1_FD_9_getVepPhenotypesIndex.ucfg → src_globals_utils_ts_406_1_FD_9_getVepPhenotypesIndex.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_403_8_FD_10_getPhenotypesSelector.ucfg → src_globals_utils_ts_422_8_FD_10_getPhenotypesSelector.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_411_1_FD_11_getVepInheritanceModesGeneIndex.ucfg → src_globals_utils_ts_430_1_FD_11_getVepInheritanceModesGeneIndex.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_427_8_FD_12_getInheritanceModesGeneSelector.ucfg → src_globals_utils_ts_446_8_FD_12_getInheritanceModesGeneSelector.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_435_8_FD_13_getVariant.ucfg → src_globals_utils_ts_454_8_FD_13_getVariant.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_53_1_FD_0_createConsequence.ucfg → src_globals_utils_ts_59_1_FD_0_createConsequence.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_globals_utils_ts_84_1_FD_1_createConsequences.ucfg → src_globals_utils_ts_93_1_FD_1_createConsequences.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_100_27_FE_135_Ptr_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_103_26_FE_136_Ptr_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_106_11_FE_137_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_110_13_FE_138_Ptr_loc.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_113_13_FE_139_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_117_9_FE_140_Ptr_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_120_24_FE_141_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_129_8_FD_14_setTestApi.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_25_21_FE_121_Ptr.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_29_24_FE_122_Ptr.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_40_20_FE_123_Ptr.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_45_21_FE_124_Ptr_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_57_24_FE_125_Ptr.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_67_20_FE_126_Ptr_par.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_71_15_FE_127_Ptr_rec.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_74_14_FE_128_Ptr_ale.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_77_20_FE_129_Ptr.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_80_21_FE_130_Ptr.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_83_20_FE_131_Ptr_ann.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_86_19_FE_132_Ptr_ann.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_94_30_FE_133_Ptr_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_actions_ts_97_32_FE_134_Ptr_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_97_18_A_81_sta.ucfg → src_store_getters_ts_100_5_A_83_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_97_36_A_82_rec.ucfg → src_store_getters_ts_101_5_A_84_rec.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_125_24_A_83_sta.ucfg → src_store_getters_ts_129_24_A_85_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_137_46_A_84_ite.ucfg → src_store_getters_ts_141_46_A_86_ite.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_146_31_A_85_sta.ucfg → src_store_getters_ts_150_31_A_87_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_158_64_A_86_ite.ucfg → src_store_getters_ts_162_64_A_88_ite.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_167_32_A_87_sta.ucfg → src_store_getters_ts_171_32_A_89_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_180_27_A_88_sta.ucfg → src_store_getters_ts_184_27_A_90_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_193_26_A_89_sta.ucfg → src_store_getters_ts_197_26_A_91_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_23_18_A_70_sta.ucfg → src_store_getters_ts_24_5_A_72_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_23_36_A_71_id.ucfg → src_store_getters_ts_25_5_A_73_id.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_27_37_A_72_sam.ucfg → src_store_getters_ts_29_39_A_74_sam.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_29_19_A_73_sta.ucfg → src_store_getters_ts_31_19_A_75_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_53_37_A_76_sam.ucfg → src_store_getters_ts_42_37_A_76_sam.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_42_19_A_75_sta.ucfg → src_store_getters_ts_44_19_A_77_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_40_37_A_74_sam.ucfg → src_store_getters_ts_55_37_A_78_sam.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_55_20_A_77_sta.ucfg → src_store_getters_ts_57_20_A_79_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_7_12_A_69_sta.ucfg → src_store_getters_ts_7_12_A_71_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_85_14_A_78_sta.ucfg → src_store_getters_ts_87_14_A_80_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_88_20_A_79_sta.ucfg → src_store_getters_ts_90_20_A_81_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_store_getters_ts_94_24_A_80_sta.ucfg → src_store_getters_ts_96_24_A_82_sta.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_10_13_FE_106_sta_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_13_20_FE_107_sta_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_17_30_FE_108_sta_phe.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_20_13_FE_109_sta_rec.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_24_20_FE_110_sta_rec.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_27_11_FE_111_sta_ale.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_32_14_FE_112_sta_ale.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_store_mutations_ts_33_40_A_68_anA.ucfg → src_store_mutations_ts_33_40_A_70_anA.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_35_17_FE_113_sta_ann.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_38_30_FE_114_sta_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_41_32_FE_115_sta_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_44_27_FE_116_sta_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_47_26_FE_117_sta_val.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_store_mutations_ts_7_14_FE_105_sta_met.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeBuilder_ts_81_33_A_8_k.ucfg → src_utils_treeBuilder_ts_111_33_A_10_k.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_utils_treeBuilder_ts_62_30_A_5_inp.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_utils_treeBuilder_ts_64_40_A_6_key.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_utils_treeBuilder_ts_75_31_A_7_out.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_utils_treeBuilder_ts_78_18_A_8_que.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeBuilder_ts_73_44_A_7_cat.ucfg → src_utils_treeBuilder_ts_90_46_A_9_cat.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_103_29_A_47_lab.ucfg → src_utils_treeDrawer_ts_103_29_A_49_lab.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_104_35_A_48_a_b.ucfg → src_utils_treeDrawer_ts_104_35_A_50_a_b.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_109_32_A_49_svg_pro.ucfg → src_utils_treeDrawer_ts_109_32_A_51_svg_pro.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_113_24_A_50_thi_nex_thi_nex_xOf_yOf_bar.ucfg → src_utils_treeDrawer_ts_113_24_A_52_thi_nex_thi_nex_xOf_yOf_bar.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_12_26_A_32_fon.ucfg → src_utils_treeDrawer_ts_12_26_A_34_fon.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_133_24_A_51_lab_fon_typ_fon.ucfg → src_utils_treeDrawer_ts_133_24_A_53_lab_fon_typ_fon.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_153_18_A_52_svg_x1_y1_x2_y2_str.ucfg → src_utils_treeDrawer_ts_153_18_A_54_svg_x1_y1_x2_y2_str.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_16_41_A_33_fon.ucfg → src_utils_treeDrawer_ts_16_41_A_35_fon.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_171_18_A_53_gEl_x_y_wid_hei_isE.ucfg → src_utils_treeDrawer_ts_171_18_A_55_gEl_x_y_wid_hei_isE.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_192_18_A_54_gEl_x_y_lab_fon_nod.ucfg → src_utils_treeDrawer_ts_192_18_A_56_gEl_x_y_lab_fon_nod.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_20_34_A_34_bar.ucfg → src_utils_treeDrawer_ts_20_34_A_36_bar.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_210_25_A_55_svg.ucfg → src_utils_treeDrawer_ts_210_25_A_57_svg.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_226_29_A_56_ele_can_can.ucfg → src_utils_treeDrawer_ts_226_29_A_58_ele_can_can.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_234_23_A_57_bar_g_e_fon_val_off_svg.ucfg → src_utils_treeDrawer_ts_234_23_A_59_bar_g_e_fon_val_off_svg.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_24_28_A_35_edg.ucfg → src_utils_treeDrawer_ts_24_28_A_37_edg.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_254_18_A_58_coo_bar_svg_nex_ind.ucfg → src_utils_treeDrawer_ts_254_18_A_60_coo_bar_svg_nex_ind.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_273_26_A_59_svg_g_fon_gra_gra_hor.ucfg → src_utils_treeDrawer_ts_273_26_A_61_svg_g_fon_gra_gra_hor.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_282_21_A_60_v.ucfg → src_utils_treeDrawer_ts_282_21_A_62_v.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_28_30_A_36_svg_gra.ucfg → src_utils_treeDrawer_ts_28_30_A_38_svg_gra.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_301_26_A_61_svg_g_bar_fon_gra_gra_hor.ucfg → src_utils_treeDrawer_ts_301_26_A_63_svg_g_bar_fon_gra_gra_hor.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_312_21_A_62_e.ucfg → src_utils_treeDrawer_ts_312_21_A_64_e.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_32_36_A_37_wid_hei.ucfg → src_utils_treeDrawer_ts_32_36_A_39_wid_hei.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_39_26_A_38_y_ind_fon_yOf.ucfg → src_utils_treeDrawer_ts_39_26_A_40_y_ind_fon_yOf.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_43_26_A_39_y_ind_fon_lab.ucfg → src_utils_treeDrawer_ts_43_26_A_41_y_ind_fon_lab.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_48_17_A_40_y_bar_off.ucfg → src_utils_treeDrawer_ts_48_17_A_42_y_bar_off.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_55_17_A_41_x_xOf.ucfg → src_utils_treeDrawer_ts_55_17_A_43_x_xOf.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_59_26_A_42_xPo_tex.ucfg → src_utils_treeDrawer_ts_59_26_A_44_xPo_tex.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_63_21_A_43_xPo_wid.ucfg → src_utils_treeDrawer_ts_63_21_A_45_xPo_wid.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_71_20_A_44_svg_gra_hor.ucfg → src_utils_treeDrawer_ts_71_20_A_46_svg_gra_hor.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_80_20_A_45_svg_gra.ucfg → src_utils_treeDrawer_ts_80_20_A_47_svg_gra.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_utils_treeDrawer_ts_85_22_A_46_inn_fon_fon.ucfg → src_utils_treeDrawer_ts_85_22_A_48_inn_fon_fon.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_views_DecisionTreeViewer_vue_21_9_A_25_0.ucfg → src_views_DecisionTreeViewer_vue_21_9_A_27_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_views_Samples_vue_29_10_FE_83_sam.ucfg +0 -0
- package/.scannerwork/ucfg2/js/src_views_Samples_vue_33_16_FE_84_0.ucfg +0 -0
- package/.scannerwork/ucfg2/js/{src_views_Samples_vue_40_40_A_30_sam.ucfg → src_views_Samples_vue_40_40_A_32_sam.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/{src_views_VcfViewer_vue_16_9_A_65_0.ucfg → src_views_VcfViewer_vue_16_9_A_67_0.ucfg} +0 -0
- package/.scannerwork/ucfg2/js/src_views_VcfViewer_vue_22_16_FE_98_0.ucfg +0 -0
- package/.travis.yml +5 -1
- package/README.md +1 -1
- package/package.json +2 -2
- package/src/components/Gene.vue +32 -0
- package/src/components/RecordInfoDetailsItem.vue +8 -1
- package/src/components/RecordInfoDetailsItemValue.vue +6 -2
- package/src/components/RecordTable.vue +27 -14
- package/src/globals/utils.ts +19 -0
- package/src/locales/en.json +2 -1
- package/src/mocks/apiDataMock.ts +3 -3
- package/src/store/getters.ts +35 -31
- package/src/types/Consequence.ts +2 -0
- package/src/types/DecisionTree.d.ts +21 -4
- package/src/types/Gene.ts +4 -0
- package/src/utils/treeBuilder.ts +43 -13
- package/tests/unit/globals/utils.spec.ts +15 -0
- package/tests/unit/store/getters.spec.ts +1 -1
- package/tests/unit/utils/treeBuilder.spec.ts +118 -0
- package/tests/unit/utils/treeDrawer.spec.ts +1 -1
- package/.scannerwork/css-bundle/bin/server +0 -15
- package/.scannerwork/css-bundle/lib/src/server.d.ts +0 -14
- package/.scannerwork/css-bundle/lib/src/server.js +0 -83
- package/.scannerwork/css-bundle/lib/src/server.js.map +0 -1
- package/.scannerwork/css-bundle/lib/tsconfig.tsbuildinfo +0 -1369
- package/.scannerwork/css-bundle/package/package.json +0 -11
- package/.scannerwork/ucfg2/js/src_components_RecordTable_vue_514_41_A_15_con.ucfg +0 -0
package/src/types/Consequence.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Vcf } from '@molgenis/vip-report-api';
|
|
|
3
3
|
export interface ConsequenceMetadata {
|
|
4
4
|
effect: Vcf.InfoMetadata;
|
|
5
5
|
symbol: Vcf.InfoMetadata;
|
|
6
|
+
incompletePenetrance: Vcf.InfoMetadata;
|
|
6
7
|
inheritance: Vcf.InfoMetadata;
|
|
7
8
|
hgvsC: Vcf.InfoMetadata;
|
|
8
9
|
hgvsP: Vcf.InfoMetadata;
|
|
@@ -17,6 +18,7 @@ export interface Consequence {
|
|
|
17
18
|
alleleIndex: number | null;
|
|
18
19
|
effect: string[];
|
|
19
20
|
symbol: string | null;
|
|
21
|
+
incompletePenetrance: boolean | false;
|
|
20
22
|
inheritance: string[];
|
|
21
23
|
hgvsC: string | null;
|
|
22
24
|
hgvsP: string | null;
|
|
@@ -12,7 +12,7 @@ type BoolOutcome = {
|
|
|
12
12
|
type Query = {
|
|
13
13
|
field: string;
|
|
14
14
|
operator: string;
|
|
15
|
-
value: string;
|
|
15
|
+
value: string | string[] | number | number[];
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
type BoolNode = {
|
|
@@ -21,6 +21,22 @@ type BoolNode = {
|
|
|
21
21
|
outcomeMissing?: Outcome;
|
|
22
22
|
} & BoolOutcome;
|
|
23
23
|
|
|
24
|
+
type MultiOperator = 'AND' | 'OR';
|
|
25
|
+
|
|
26
|
+
type BoolMultiQuery = {
|
|
27
|
+
operator?: MultiOperator;
|
|
28
|
+
queries: Query[];
|
|
29
|
+
outcomeTrue: Outcome;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type BoolMultiNode = {
|
|
33
|
+
type: 'BOOL_MULTI';
|
|
34
|
+
fields: string[];
|
|
35
|
+
outcomes: BoolMultiQuery[];
|
|
36
|
+
outcomeMissing?: Outcome;
|
|
37
|
+
outcomeDefault?: Outcome;
|
|
38
|
+
};
|
|
39
|
+
|
|
24
40
|
type ExistsNode = {
|
|
25
41
|
type: Exists;
|
|
26
42
|
field: string;
|
|
@@ -32,8 +48,8 @@ type CategoricalNode = {
|
|
|
32
48
|
outcomeMap: {
|
|
33
49
|
[key: string]: Outcome;
|
|
34
50
|
};
|
|
35
|
-
outcomeMissing
|
|
36
|
-
outcomeDefault
|
|
51
|
+
outcomeMissing?: Outcome;
|
|
52
|
+
outcomeDefault?: Outcome;
|
|
37
53
|
};
|
|
38
54
|
|
|
39
55
|
type ExitNode = {
|
|
@@ -45,10 +61,11 @@ type NodeDescription = { description: string };
|
|
|
45
61
|
|
|
46
62
|
type NodeWithSimpleOutcome = NodeDescription & (BoolNode | ExistsNode);
|
|
47
63
|
type NodeWithCategoricalOutcome = NodeDescription & CategoricalNode;
|
|
64
|
+
type NodeWithBoolMultiOutcome = NodeDescription & BoolMultiNode;
|
|
48
65
|
|
|
49
66
|
type Edge = { from: string; to: string; label: string };
|
|
50
67
|
|
|
51
|
-
export type NodeWithOutcome = NodeWithSimpleOutcome | NodeWithCategoricalOutcome;
|
|
68
|
+
export type NodeWithOutcome = NodeWithSimpleOutcome | NodeWithCategoricalOutcome | NodeWithBoolMultiOutcome;
|
|
52
69
|
|
|
53
70
|
export type Node = NodeWithOutcome | ExitNode;
|
|
54
71
|
|
package/src/utils/treeBuilder.ts
CHANGED
|
@@ -63,19 +63,49 @@ export const retrieveEdges = (inputTree: DecisionTree): TreeEdgesArray => {
|
|
|
63
63
|
let edges: TreeEdgesObj = {};
|
|
64
64
|
Object.keys(inputTree.nodes).forEach((key) => {
|
|
65
65
|
const node: Node = inputTree.nodes[key];
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
66
|
+
switch (node.type) {
|
|
67
|
+
case 'BOOL':
|
|
68
|
+
edges = createSimpleEdge('True', node, key, edges);
|
|
69
|
+
edges = createSimpleEdge('False', node, key, edges);
|
|
70
|
+
if ('outcomeMissing' in node) {
|
|
71
|
+
edges = createSimpleEdge('Missing', node, key, edges);
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case 'BOOL_MULTI':
|
|
75
|
+
node.outcomes.forEach((outcome) => {
|
|
76
|
+
const nextNode = outcome.outcomeTrue.nextNode;
|
|
77
|
+
const label = outcome.queries
|
|
78
|
+
.map((query) => `${query.field} ${query.operator} ${query.value}`)
|
|
79
|
+
.join(` ${outcome.operator} `);
|
|
80
|
+
edges = createEdge(nextNode, label, key, edges);
|
|
81
|
+
});
|
|
82
|
+
if ('outcomeMissing' in node) {
|
|
83
|
+
edges = createSimpleEdge('Missing', node, key, edges);
|
|
84
|
+
}
|
|
85
|
+
if ('outcomeDefault' in node) {
|
|
86
|
+
edges = createSimpleEdge('Default', node, key, edges);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
case 'CATEGORICAL':
|
|
90
|
+
Object.keys(node.outcomeMap).forEach((category) => {
|
|
91
|
+
const nextNode = node.outcomeMap[category].nextNode;
|
|
92
|
+
edges = createEdge(nextNode, category, key, edges);
|
|
93
|
+
});
|
|
94
|
+
if ('outcomeMissing' in node) {
|
|
95
|
+
edges = createSimpleEdge('Missing', node, key, edges);
|
|
96
|
+
}
|
|
97
|
+
if ('outcomeDefault' in node) {
|
|
98
|
+
edges = createSimpleEdge('Default', node, key, edges);
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case 'EXISTS':
|
|
102
|
+
edges = createSimpleEdge('True', node, key, edges);
|
|
103
|
+
edges = createSimpleEdge('False', node, key, edges);
|
|
104
|
+
break;
|
|
105
|
+
case 'LEAF':
|
|
106
|
+
break;
|
|
107
|
+
default:
|
|
108
|
+
throw new Error('unknown node type');
|
|
79
109
|
}
|
|
80
110
|
});
|
|
81
111
|
return Object.keys(edges).map((k) => edges[k]);
|
|
@@ -6,6 +6,12 @@ import { Consequence } from '@/types/Consequence';
|
|
|
6
6
|
const expectedMetadata = {
|
|
7
7
|
effect: { id: 'Consequence', type: 'STRING', number: { type: 'OTHER' }, description: 'Consequence' },
|
|
8
8
|
symbol: { id: 'SYMBOL', type: 'STRING', number: { type: 'NUMBER', count: 1 }, description: 'SYMBOL' },
|
|
9
|
+
incompletePenetrance: {
|
|
10
|
+
id: 'IncompletePenetrance',
|
|
11
|
+
type: 'FLAG',
|
|
12
|
+
number: { type: 'NUMBER', count: 1 },
|
|
13
|
+
description: 'IncompletePenetrance'
|
|
14
|
+
},
|
|
9
15
|
inheritance: {
|
|
10
16
|
id: 'InheritanceModesGene',
|
|
11
17
|
type: 'STRING',
|
|
@@ -169,6 +175,7 @@ test('get consequences in case of CSQ info', () => {
|
|
|
169
175
|
gnomAD: null,
|
|
170
176
|
hgvsC: 'hgvsC1',
|
|
171
177
|
hgvsP: 'hgvsP1',
|
|
178
|
+
incompletePenetrance: false,
|
|
172
179
|
pubMed: [],
|
|
173
180
|
clinVar: [],
|
|
174
181
|
mvl: null,
|
|
@@ -183,6 +190,7 @@ test('get consequences in case of CSQ info', () => {
|
|
|
183
190
|
gnomAD: null,
|
|
184
191
|
hgvsC: 'hgvsC0',
|
|
185
192
|
hgvsP: 'hgvsP0',
|
|
193
|
+
incompletePenetrance: false,
|
|
186
194
|
pubMed: [],
|
|
187
195
|
clinVar: [],
|
|
188
196
|
mvl: null,
|
|
@@ -243,6 +251,7 @@ test('get consequences in case of CSQ info with extended info', () => {
|
|
|
243
251
|
gnomAD: 0.1234,
|
|
244
252
|
hgvsC: 'hgvsC1',
|
|
245
253
|
hgvsP: 'hgvsP1',
|
|
254
|
+
incompletePenetrance: false,
|
|
246
255
|
pubMed: ['12345678', '23456789'],
|
|
247
256
|
clinVar: ['likely_pathogenic', 'pathogenic'],
|
|
248
257
|
vkgl: 'B',
|
|
@@ -257,6 +266,7 @@ test('get consequences in case of CSQ info with extended info', () => {
|
|
|
257
266
|
gnomAD: 0.2345,
|
|
258
267
|
hgvsC: 'hgvsC0',
|
|
259
268
|
hgvsP: 'hgvsP0',
|
|
269
|
+
incompletePenetrance: false,
|
|
260
270
|
pubMed: ['12345678'],
|
|
261
271
|
clinVar: ['benign'],
|
|
262
272
|
vkgl: 'VUS',
|
|
@@ -289,6 +299,7 @@ test('get consequences in case of ANN info', () => {
|
|
|
289
299
|
gnomAD: null,
|
|
290
300
|
hgvsC: 'hgvsC1',
|
|
291
301
|
hgvsP: 'hgvsP1',
|
|
302
|
+
incompletePenetrance: false,
|
|
292
303
|
pubMed: [],
|
|
293
304
|
clinVar: [],
|
|
294
305
|
mvl: null,
|
|
@@ -303,6 +314,7 @@ test('get consequences in case of ANN info', () => {
|
|
|
303
314
|
gnomAD: null,
|
|
304
315
|
hgvsC: 'hgvsC0',
|
|
305
316
|
hgvsP: 'hgvsP0',
|
|
317
|
+
incompletePenetrance: false,
|
|
306
318
|
pubMed: [],
|
|
307
319
|
clinVar: [],
|
|
308
320
|
mvl: null,
|
|
@@ -336,6 +348,7 @@ test('get consequences in case of CSQ and ANN info', () => {
|
|
|
336
348
|
gnomAD: null,
|
|
337
349
|
hgvsC: 'hgvsC1',
|
|
338
350
|
hgvsP: 'hgvsP1',
|
|
351
|
+
incompletePenetrance: false,
|
|
339
352
|
pubMed: [],
|
|
340
353
|
clinVar: [],
|
|
341
354
|
mvl: null,
|
|
@@ -350,6 +363,7 @@ test('get consequences in case of CSQ and ANN info', () => {
|
|
|
350
363
|
gnomAD: null,
|
|
351
364
|
hgvsC: 'hgvsC0',
|
|
352
365
|
hgvsP: 'hgvsP0',
|
|
366
|
+
incompletePenetrance: false,
|
|
353
367
|
pubMed: [],
|
|
354
368
|
clinVar: [],
|
|
355
369
|
mvl: null,
|
|
@@ -364,6 +378,7 @@ test('get consequences in case of CSQ and ANN info', () => {
|
|
|
364
378
|
gnomAD: null,
|
|
365
379
|
hgvsC: 'hgvsC2',
|
|
366
380
|
hgvsP: 'hgvsP2',
|
|
381
|
+
incompletePenetrance: false,
|
|
367
382
|
pubMed: [],
|
|
368
383
|
clinVar: [],
|
|
369
384
|
mvl: null,
|
|
@@ -517,7 +517,7 @@ test('whether records contain MVL annotations - no meta', () => {
|
|
|
517
517
|
|
|
518
518
|
test('whether records contain MVL annotations - no info meta', () => {
|
|
519
519
|
const recordsMetadata = mock<Vcf.Metadata>();
|
|
520
|
-
recordsMetadata.info = {
|
|
520
|
+
recordsMetadata.info = {};
|
|
521
521
|
|
|
522
522
|
const metadata = mock<Api.Metadata>();
|
|
523
523
|
metadata.records = recordsMetadata;
|
|
@@ -28,6 +28,55 @@ describe('treeBuilder', () => {
|
|
|
28
28
|
nextNode: 'existsNode'
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
|
+
boolMultiNode: {
|
|
32
|
+
type: 'BOOL_MULTI',
|
|
33
|
+
description: 'Bool multi type node',
|
|
34
|
+
fields: ['my_multi_1', 'my_multi_2'],
|
|
35
|
+
outcomeDefault: {
|
|
36
|
+
nextNode: 'exit_t'
|
|
37
|
+
},
|
|
38
|
+
outcomeMissing: {
|
|
39
|
+
nextNode: 'exit_f'
|
|
40
|
+
},
|
|
41
|
+
outcomes: [
|
|
42
|
+
{
|
|
43
|
+
operator: 'AND',
|
|
44
|
+
queries: [
|
|
45
|
+
{
|
|
46
|
+
field: 'my_multi_1',
|
|
47
|
+
operator: '>',
|
|
48
|
+
value: 0.1
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
field: 'my_multi_1',
|
|
52
|
+
operator: '<=',
|
|
53
|
+
value: 0.2
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
outcomeTrue: {
|
|
57
|
+
nextNode: 'exit_f'
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
operator: 'OR',
|
|
62
|
+
queries: [
|
|
63
|
+
{
|
|
64
|
+
field: 'my_multi_2',
|
|
65
|
+
operator: '<',
|
|
66
|
+
value: 0.1
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
field: 'my_multi_2',
|
|
70
|
+
operator: '>',
|
|
71
|
+
value: 0.2
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
outcomeTrue: {
|
|
75
|
+
nextNode: 'exit_t'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
]
|
|
79
|
+
},
|
|
31
80
|
existsNode: {
|
|
32
81
|
type: 'EXISTS',
|
|
33
82
|
description: 'check some field exists',
|
|
@@ -82,6 +131,11 @@ describe('treeBuilder', () => {
|
|
|
82
131
|
label: 'boolNode\n(== val)',
|
|
83
132
|
type: 'BOOL'
|
|
84
133
|
},
|
|
134
|
+
{
|
|
135
|
+
id: 'boolMultiNode',
|
|
136
|
+
label: 'boolMultiNode',
|
|
137
|
+
type: 'BOOL_MULTI'
|
|
138
|
+
},
|
|
85
139
|
{
|
|
86
140
|
id: 'existsNode',
|
|
87
141
|
label: 'existsNode\n(exists)',
|
|
@@ -181,6 +235,16 @@ describe('treeBuilder', () => {
|
|
|
181
235
|
to: 'existsNode',
|
|
182
236
|
label: 'False\nMissing'
|
|
183
237
|
},
|
|
238
|
+
{
|
|
239
|
+
from: 'boolMultiNode',
|
|
240
|
+
to: 'exit_f',
|
|
241
|
+
label: 'my_multi_1 > 0.1 AND my_multi_1 <= 0.2\nMissing'
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
from: 'boolMultiNode',
|
|
245
|
+
to: 'exit_t',
|
|
246
|
+
label: 'my_multi_2 < 0.1 OR my_multi_2 > 0.2\nDefault'
|
|
247
|
+
},
|
|
184
248
|
{
|
|
185
249
|
from: 'existsNode',
|
|
186
250
|
to: 'categorical_field',
|
|
@@ -199,4 +263,58 @@ describe('treeBuilder', () => {
|
|
|
199
263
|
];
|
|
200
264
|
expect(outcome).toStrictEqual(expected);
|
|
201
265
|
});
|
|
266
|
+
it('should generate edges for CATEGORICAL node without default/missing', () => {
|
|
267
|
+
const decisionTree: DecisionTree = {
|
|
268
|
+
files: {
|
|
269
|
+
panel: {
|
|
270
|
+
path: 'path/to/tsv'
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
rootNode: 'ROOT',
|
|
274
|
+
nodes: {
|
|
275
|
+
categoricalField: {
|
|
276
|
+
type: 'CATEGORICAL',
|
|
277
|
+
description: 'check categorical field',
|
|
278
|
+
field: 'FIELD_TO_CHECK',
|
|
279
|
+
outcomeMap: {
|
|
280
|
+
P: {
|
|
281
|
+
nextNode: 'exit_t'
|
|
282
|
+
},
|
|
283
|
+
LP: {
|
|
284
|
+
nextNode: 'exit_t'
|
|
285
|
+
},
|
|
286
|
+
LB: {
|
|
287
|
+
nextNode: 'exit_f'
|
|
288
|
+
},
|
|
289
|
+
B: {
|
|
290
|
+
nextNode: 'exit_f'
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
exit_t: {
|
|
295
|
+
type: 'LEAF',
|
|
296
|
+
class: 'T'
|
|
297
|
+
},
|
|
298
|
+
exit_f: {
|
|
299
|
+
type: 'LEAF',
|
|
300
|
+
class: 'F'
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
const outcome = retrieveEdges(decisionTree);
|
|
306
|
+
const expected = [
|
|
307
|
+
{
|
|
308
|
+
from: 'categoricalField',
|
|
309
|
+
to: 'exit_t',
|
|
310
|
+
label: 'P\nLP'
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
from: 'categoricalField',
|
|
314
|
+
to: 'exit_f',
|
|
315
|
+
label: 'LB\nB'
|
|
316
|
+
}
|
|
317
|
+
];
|
|
318
|
+
expect(outcome).toStrictEqual(expected);
|
|
319
|
+
});
|
|
202
320
|
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* This script expects following arguments
|
|
5
|
-
*
|
|
6
|
-
* port - port number on which server should listen
|
|
7
|
-
* host - host address on which server should listen
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
const server = require("../lib/src/server");
|
|
11
|
-
|
|
12
|
-
const port = process.argv[2];
|
|
13
|
-
const host = process.argv[3];
|
|
14
|
-
|
|
15
|
-
server.start(port, host);
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Server } from "http";
|
|
3
|
-
export declare function setLogHandlersForTests(logHandler: typeof console.log, errorHandler: typeof console.error): void;
|
|
4
|
-
export declare function start(port?: number, host?: string): Promise<Server>;
|
|
5
|
-
export interface AnalysisInput {
|
|
6
|
-
filePath: string;
|
|
7
|
-
fileContent: string | undefined;
|
|
8
|
-
configFile: string;
|
|
9
|
-
}
|
|
10
|
-
export interface Issue {
|
|
11
|
-
line: number;
|
|
12
|
-
rule: string;
|
|
13
|
-
text: string;
|
|
14
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.start = exports.setLogHandlersForTests = void 0;
|
|
4
|
-
const express = require("express");
|
|
5
|
-
const stylelint = require("stylelint");
|
|
6
|
-
const fs = require("fs");
|
|
7
|
-
const bodyParser = require("body-parser");
|
|
8
|
-
// for testing purposes
|
|
9
|
-
let log = console.log;
|
|
10
|
-
let logError = console.error;
|
|
11
|
-
const MAX_REQUEST_SIZE = "50mb";
|
|
12
|
-
function setLogHandlersForTests(logHandler, errorHandler) {
|
|
13
|
-
log = logHandler;
|
|
14
|
-
logError = errorHandler;
|
|
15
|
-
}
|
|
16
|
-
exports.setLogHandlersForTests = setLogHandlersForTests;
|
|
17
|
-
function start(port = 0, host = "127.0.0.1") {
|
|
18
|
-
return new Promise(resolve => {
|
|
19
|
-
log("DEBUG starting stylelint-bridge server at port", port);
|
|
20
|
-
const app = express();
|
|
21
|
-
app.use(bodyParser.json({ limit: MAX_REQUEST_SIZE }));
|
|
22
|
-
app.post("/analyze", analyzeWithStylelint);
|
|
23
|
-
app.get("/status", (_, resp) => resp.send("OK!"));
|
|
24
|
-
app.post("/close", (_req, resp) => {
|
|
25
|
-
console.log("DEBUG stylelint-bridge server will shutdown");
|
|
26
|
-
resp.end(() => {
|
|
27
|
-
server.close();
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
// every time something is wrong we log error and send empty response (with 0 issues)
|
|
31
|
-
// it's important to keep this call last in configuring "app"
|
|
32
|
-
app.use((error, _req, response, _next) => processError(error, response));
|
|
33
|
-
const server = app.listen(port, host, () => {
|
|
34
|
-
log("DEBUG stylelint-bridge server is running at port", server.address().port);
|
|
35
|
-
resolve(server);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
exports.start = start;
|
|
40
|
-
function analyzeWithStylelint(request, response) {
|
|
41
|
-
const parsedRequest = request.body;
|
|
42
|
-
const { filePath, fileContent, configFile } = parsedRequest;
|
|
43
|
-
const code = typeof fileContent == "string" ? fileContent : getFileContent(filePath);
|
|
44
|
-
const options = {
|
|
45
|
-
code,
|
|
46
|
-
codeFilename: filePath,
|
|
47
|
-
configFile
|
|
48
|
-
};
|
|
49
|
-
stylelint
|
|
50
|
-
.lint(options)
|
|
51
|
-
.then(result => response.json(toIssues(result.results, filePath)))
|
|
52
|
-
.catch(error => processError(error, response));
|
|
53
|
-
}
|
|
54
|
-
function processError(error, response) {
|
|
55
|
-
logError(error);
|
|
56
|
-
response.json([]);
|
|
57
|
-
}
|
|
58
|
-
function toIssues(results, filePath) {
|
|
59
|
-
const analysisResponse = [];
|
|
60
|
-
// we should have only one element in 'results' as we are analyzing only 1 file
|
|
61
|
-
results.forEach(result => {
|
|
62
|
-
// to avoid reporting on "fake" source like <input ccs 1>
|
|
63
|
-
if (result.source !== filePath) {
|
|
64
|
-
log(`DEBUG For file [${filePath}] received issues with [${result.source}] as a source. They will not be reported.`);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
result.warnings.forEach(warning => analysisResponse.push({
|
|
68
|
-
line: warning.line,
|
|
69
|
-
text: warning.text,
|
|
70
|
-
rule: warning.rule
|
|
71
|
-
}));
|
|
72
|
-
});
|
|
73
|
-
return analysisResponse;
|
|
74
|
-
}
|
|
75
|
-
function getFileContent(filePath) {
|
|
76
|
-
const fileContent = fs.readFileSync(filePath, { encoding: "utf8" });
|
|
77
|
-
// strip BOM
|
|
78
|
-
if (fileContent.charCodeAt(0) === 0xfeff) {
|
|
79
|
-
return fileContent.slice(1);
|
|
80
|
-
}
|
|
81
|
-
return fileContent;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|