lutaml 0.10.19 → 0.11.2

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 (662) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +8 -1
  3. data/CLAUDE.md +26 -19
  4. data/Gemfile +14 -10
  5. data/Rakefile +6 -4
  6. data/lib/lutaml/version.rb +1 -1
  7. data/lib/lutaml.rb +3 -9
  8. data/lutaml.gemspec +2 -18
  9. metadata +5 -892
  10. data/Makefile +0 -2
  11. data/config/diagram_styles.yml +0 -200
  12. data/config/model_transformations.yml +0 -266
  13. data/config/package_metadata.example.yml +0 -58
  14. data/config/qea_schema.yml +0 -1024
  15. data/config/static_site.yml +0 -166
  16. data/examples/UML_EA.DTD +0 -6856
  17. data/examples/lur/20251010_current_plateau_v5.1.lur +0 -0
  18. data/examples/lur/basic.lur +0 -0
  19. data/examples/lur/test-output.lur +0 -0
  20. data/examples/lur/test.lur +0 -0
  21. data/examples/lur_basic_usage.rb +0 -220
  22. data/examples/lur_cli_workflow.rb +0 -262
  23. data/examples/lur_statistics.rb +0 -325
  24. data/examples/qea/20251010_current_plateau_v5.1.qea +0 -0
  25. data/examples/qea/ArcGISWorkspace_template.qea +0 -0
  26. data/examples/qea/README_qea_parser.adoc +0 -230
  27. data/examples/qea/UmlModel_template.qea +0 -0
  28. data/examples/qea/basic.qea +0 -0
  29. data/examples/qea/simple.qea +0 -0
  30. data/examples/qea/simple_example.qea +0 -0
  31. data/examples/qea/test.qea +0 -0
  32. data/examples/xmi/20251010_current_plateau_v5.1.xmi +0 -118121
  33. data/examples/xmi/ArcGISWorkspace_template.xmi +0 -1467
  34. data/examples/xmi/Images/EAID_0016F797_D055_4717_AF1A_606413D0A166.svg +0 -158
  35. data/examples/xmi/Images/EAID_00C5C772_5A03_434f_BF30_AC37542A1AAC.svg +0 -659
  36. data/examples/xmi/Images/EAID_0114FD24_9E58_4664_98CD_71305B59AD11.svg +0 -411
  37. data/examples/xmi/Images/EAID_01661E1B_31B6_4167_BCCF_A00678FB4EA2.svg +0 -102
  38. data/examples/xmi/Images/EAID_039FE004_5408_4fc0_89AA_EB319E4F61C7.svg +0 -169
  39. data/examples/xmi/Images/EAID_04EE9625_17A0_4721_BC71_21756DB21D06.svg +0 -403
  40. data/examples/xmi/Images/EAID_05FF9417_1619_4170_B0C9_55AA6B988EF1.svg +0 -175
  41. data/examples/xmi/Images/EAID_09853FB2_AF8A_432f_94C5_6C47461BD937.svg +0 -360
  42. data/examples/xmi/Images/EAID_09927B7F_A657_4819_99E5_AC9DC99227D9.svg +0 -195
  43. data/examples/xmi/Images/EAID_09AF6B8A_557C_43bc_BBB0_47C1E9401EF3.svg +0 -218
  44. data/examples/xmi/Images/EAID_0BE81AC5_031B_4973_A9A0_223CCD92BAA1.svg +0 -471
  45. data/examples/xmi/Images/EAID_0EDEA6EF_4DC8_4979_BB80_28B1B9EBD1D4.svg +0 -56
  46. data/examples/xmi/Images/EAID_0F413534_6AD2_48bc_B4AF_8699D530D91D.svg +0 -262
  47. data/examples/xmi/Images/EAID_1321F39B_AD67_47b5_B5C3_3A42BBFCBDF9.svg +0 -286
  48. data/examples/xmi/Images/EAID_13E09C71_99E7_40b4_B72D_48AF6379BC2E.svg +0 -164
  49. data/examples/xmi/Images/EAID_144955D8_CB4E_4b59_BB0C_E549F7F84943.svg +0 -66
  50. data/examples/xmi/Images/EAID_14E9F5FD_F6CD_4f48_B1CD_F5A40C6D8E83.svg +0 -95
  51. data/examples/xmi/Images/EAID_157826AA_96A7_4278_89A6_94BD0F31409A.svg +0 -63
  52. data/examples/xmi/Images/EAID_159E9DA0_7A54_4817_B72A_401C750F675D.svg +0 -306
  53. data/examples/xmi/Images/EAID_17BC8309_8051_492b_BE87_61CCFE83DB16.svg +0 -45
  54. data/examples/xmi/Images/EAID_1A10EB6D_E2E5_42a6_A31E_B293D93FD07E.svg +0 -193
  55. data/examples/xmi/Images/EAID_1A290AFD_CE96_46a2_8351_A986D77CC727.svg +0 -444
  56. data/examples/xmi/Images/EAID_1B2D9309_C66B_492a_995C_95B2B02E0D7C.svg +0 -168
  57. data/examples/xmi/Images/EAID_1DE6B973_CE8A_416f_909B_54CEA1E5944E.svg +0 -10
  58. data/examples/xmi/Images/EAID_204F4ACC_2230_4c8d_9861_EF5A6844B712.svg +0 -60
  59. data/examples/xmi/Images/EAID_227300E2_4F4B_4955_83B9_FA626CE8680B.svg +0 -188
  60. data/examples/xmi/Images/EAID_22C24D4C_4894_480a_B113_0CB034CB59E9.svg +0 -426
  61. data/examples/xmi/Images/EAID_234BC4F5_8100_4969_BDCB_A24E0E641F23.svg +0 -169
  62. data/examples/xmi/Images/EAID_24446BFC_9FEB_4935_8970_65A4C562A93F.svg +0 -277
  63. data/examples/xmi/Images/EAID_24E8A45C_C99F_49b7_860A_9CF65FF76C76.svg +0 -575
  64. data/examples/xmi/Images/EAID_272F3181_4300_48b7_98A0_A8CFD12B1A72.svg +0 -255
  65. data/examples/xmi/Images/EAID_292E0D94_392C_4da6_A0B5_841501FAE50A.svg +0 -183
  66. data/examples/xmi/Images/EAID_29DD0967_ADAB_4abb_99C5_544821F5E7DA.svg +0 -10
  67. data/examples/xmi/Images/EAID_2A339928_E5EF_4ed2_9E5D_CC2CA5CF248B.svg +0 -310
  68. data/examples/xmi/Images/EAID_2A5E0832_06BE_4381_85D4_9B00E4F95575.svg +0 -155
  69. data/examples/xmi/Images/EAID_2AAB709F_EFCE_496f_8AFE_92809D66A0A9.svg +0 -81
  70. data/examples/xmi/Images/EAID_2C8DD882_8DEA_4065_89F8_DDA796AA0C85.svg +0 -520
  71. data/examples/xmi/Images/EAID_2E98EA19_37D8_4b70_BDCE_CFEE4FA800B0.svg +0 -173
  72. data/examples/xmi/Images/EAID_30D62231_110F_44e8_9C06_6FCDCBA53A09.svg +0 -722
  73. data/examples/xmi/Images/EAID_3206D3FD_1FC4_41c7_8D00_36DB908E9319.svg +0 -181
  74. data/examples/xmi/Images/EAID_3452CC53_9ACB_44eb_9C9D_B90CF862F284.svg +0 -92
  75. data/examples/xmi/Images/EAID_348EE46E_ABD9_40b0_82A1_0285E75BDC52.svg +0 -187
  76. data/examples/xmi/Images/EAID_34FF671B_CFDC_47ad_91DF_ECA6D8358180.svg +0 -217
  77. data/examples/xmi/Images/EAID_359DD694_0100_4bdf_AD5F_712D97E9C69B.svg +0 -157
  78. data/examples/xmi/Images/EAID_35DE714C_49A8_490e_913A_56F39EF317F9.svg +0 -180
  79. data/examples/xmi/Images/EAID_360C79F1_8EDF_41db_A069_DECDC55625BC.svg +0 -31
  80. data/examples/xmi/Images/EAID_36913C58_FF35_4ba2_A04B_9A4824E24609.svg +0 -166
  81. data/examples/xmi/Images/EAID_372F7F7B_57ED_469a_A640_70DB578B3C56.svg +0 -361
  82. data/examples/xmi/Images/EAID_37AC19B9_8433_4fee_A326_763170D54D06.svg +0 -32
  83. data/examples/xmi/Images/EAID_38170608_32B5_4a6f_A68D_A0D7C0C9D019.svg +0 -234
  84. data/examples/xmi/Images/EAID_3A77A5D0_4E1B_4116_8AAD_407FC422B47F.svg +0 -183
  85. data/examples/xmi/Images/EAID_3B8BD087_1683_46b1_8D0D_6F839C46C578.svg +0 -42
  86. data/examples/xmi/Images/EAID_3DC20801_AE8B_4e76_B08C_F574E8A90E13.svg +0 -192
  87. data/examples/xmi/Images/EAID_3DE28C70_C6D4_406c_B49F_EEF52148C8C1.svg +0 -124
  88. data/examples/xmi/Images/EAID_458E093C_BA2B_4292_BEC4_37511C163DDC.svg +0 -140
  89. data/examples/xmi/Images/EAID_45F9B1F7_E568_47c9_B229_953BC2E707E4.svg +0 -266
  90. data/examples/xmi/Images/EAID_46B3041A_8C23_46e6_8E14_ADE7012274C5.svg +0 -80
  91. data/examples/xmi/Images/EAID_47E4600F_CEC9_4245_9BF5_EE38007A9DDB.svg +0 -584
  92. data/examples/xmi/Images/EAID_4881CEEE_792C_4cb0_BEA7_54333B643D0A.svg +0 -155
  93. data/examples/xmi/Images/EAID_48D364F0_DCA4_41e8_B4D4_509B3023B969.svg +0 -17
  94. data/examples/xmi/Images/EAID_4DBDAB9E_4C1C_4cb1_A767_06BD743A50A7.svg +0 -78
  95. data/examples/xmi/Images/EAID_4EB75007_B31D_4f2c_8855_7E9D3A3B17F4.svg +0 -454
  96. data/examples/xmi/Images/EAID_4F421236_FCF3_4aae_B22A_C7E6A5EFBAC7.svg +0 -81
  97. data/examples/xmi/Images/EAID_4FC1D352_2102_4b73_BCB0_1410B29C6BD7.svg +0 -379
  98. data/examples/xmi/Images/EAID_4FE346EA_01E1_4b30_8BE6_BB32EA191E47.svg +0 -126
  99. data/examples/xmi/Images/EAID_5038EEE3_7DD0_4cca_9829_364E044D37E8.svg +0 -199
  100. data/examples/xmi/Images/EAID_508A37DC_9378_4f5a_BD96_48F4D24E03A5.svg +0 -162
  101. data/examples/xmi/Images/EAID_516DA1A2_F0EC_415c_9664_E4CA54E7F05C.svg +0 -136
  102. data/examples/xmi/Images/EAID_52A1DBD3_D3DA_4b6d_8F96_FC6F39F64242.svg +0 -161
  103. data/examples/xmi/Images/EAID_575E87BA_32E9_4a84_AA4E_0EFDFC5D4C07.svg +0 -71
  104. data/examples/xmi/Images/EAID_57E0F1A0_6C72_47ef_B922_B806F9A875E8.svg +0 -209
  105. data/examples/xmi/Images/EAID_5957C373_3FC1_482f_8F35_D809153A17F5.svg +0 -123
  106. data/examples/xmi/Images/EAID_59A66AE2_412C_48a6_BFC7_EA56CF11D269.svg +0 -218
  107. data/examples/xmi/Images/EAID_5A43833E_680B_4a90_8931_0C902304E029.svg +0 -236
  108. data/examples/xmi/Images/EAID_5D6DB5A0_5047_4bac_9E60_69904A60B56D.svg +0 -353
  109. data/examples/xmi/Images/EAID_5DA1E7A7_8E59_4803_A831_E9F3EC27328F.svg +0 -242
  110. data/examples/xmi/Images/EAID_5E2C1E2A_82A8_47f4_B2ED_1398D72BFCFD.svg +0 -246
  111. data/examples/xmi/Images/EAID_6052620C_4BD5_49f6_A21C_AD7E6DCA2795.svg +0 -290
  112. data/examples/xmi/Images/EAID_6481E2CC_35A6_43b0_88D4_10A667A2BC2D.svg +0 -60
  113. data/examples/xmi/Images/EAID_660C7D03_A26C_4977_A7BA_9D0A773DA811.svg +0 -318
  114. data/examples/xmi/Images/EAID_671F3C3D_35B6_4514_B5B6_DD7E84925493.svg +0 -24
  115. data/examples/xmi/Images/EAID_676B9C9A_D85F_4d2f_A46B_73F02090DC87.svg +0 -127
  116. data/examples/xmi/Images/EAID_6797FEFA_5801_48e4_8B9C_3C824C0E165D.svg +0 -412
  117. data/examples/xmi/Images/EAID_6807F4EE_18EF_4e7e_ACCF_D5BD323AFDE9.svg +0 -130
  118. data/examples/xmi/Images/EAID_69E81E34_CF28_4c7f_A48F_5941BA85CEE3.svg +0 -96
  119. data/examples/xmi/Images/EAID_6A3C55E8_3C3C_4f3a_8AAC_0299C5B23070.svg +0 -10
  120. data/examples/xmi/Images/EAID_6BAC333E_E2C2_42c7_8DDF_6B4FA0FFC03B.svg +0 -143
  121. data/examples/xmi/Images/EAID_6D0349D5_3F1B_4b28_82D2_910743DEB5E5.svg +0 -114
  122. data/examples/xmi/Images/EAID_6E95B74E_8A09_4698_9E9E_23BCFD2CE194.svg +0 -37
  123. data/examples/xmi/Images/EAID_70C77F92_5614_4b22_8C8E_67859F59D8FD.svg +0 -254
  124. data/examples/xmi/Images/EAID_71F9216B_E7A7_4083_B08E_6C71B57F3A1F.svg +0 -187
  125. data/examples/xmi/Images/EAID_73025C5A_08FC_47ff_AB2F_C7F79CF54B41.svg +0 -145
  126. data/examples/xmi/Images/EAID_74C974B6_6D07_425d_B7AC_C8899E3B4967.svg +0 -76
  127. data/examples/xmi/Images/EAID_7504FCD2_524C_4e7d_BAE4_4E58A8A8A12C.svg +0 -196
  128. data/examples/xmi/Images/EAID_78030266_3603_4747_9D75_03D16614BE7D.svg +0 -35
  129. data/examples/xmi/Images/EAID_785226C1_12B1_4104_A4C1_F19B70B9FB71.svg +0 -348
  130. data/examples/xmi/Images/EAID_7854470F_26B8_4d3c_AFDF_C05BCE6ED0CD.svg +0 -72
  131. data/examples/xmi/Images/EAID_794F4A8F_18CA_4e9f_8477_A6F0E5ED22D4.svg +0 -187
  132. data/examples/xmi/Images/EAID_7A24839E_C8AE_424d_B7D2_6DA16DC813E7.svg +0 -114
  133. data/examples/xmi/Images/EAID_7A3649FD_E960_4ae6_B9B1_A9001C066AE7.svg +0 -181
  134. data/examples/xmi/Images/EAID_7B2C6765_AB68_439a_87F3_DAC323CB2AF5.svg +0 -196
  135. data/examples/xmi/Images/EAID_7C44AC09_27C1_47b3_9A85_88EC71C081FF.svg +0 -55
  136. data/examples/xmi/Images/EAID_7CE102CA_97C1_4cac_BD3B_0500D3712D2A.svg +0 -195
  137. data/examples/xmi/Images/EAID_7D960BD8_65D8_4934_9C11_4EF860DD8FBA.svg +0 -90
  138. data/examples/xmi/Images/EAID_80939C98_A456_48c3_BCEA_4B72851F2DF6.svg +0 -174
  139. data/examples/xmi/Images/EAID_812FE862_76ED_44f0_B678_7A4601B395CF.svg +0 -142
  140. data/examples/xmi/Images/EAID_81B76F5B_9D64_4bbf_8AC8_34234FB87533.svg +0 -740
  141. data/examples/xmi/Images/EAID_84352F1A_195B_411b_9552_5BFC40BF90B5.svg +0 -105
  142. data/examples/xmi/Images/EAID_846DD800_139C_4d47_A1DF_3FB1AC5D130F.svg +0 -554
  143. data/examples/xmi/Images/EAID_84A9C65B_FD6D_4bb5_818F_E8C35FF5BCD1.svg +0 -228
  144. data/examples/xmi/Images/EAID_853674F5_7DC9_4aae_809B_5728098B5D5B.svg +0 -154
  145. data/examples/xmi/Images/EAID_860CBBFB_2F27_408f_9144_751F9D1F487F.svg +0 -273
  146. data/examples/xmi/Images/EAID_87476527_7B9B_4b92_967E_3D38365470CA.svg +0 -239
  147. data/examples/xmi/Images/EAID_87DAE930_5069_4c58_AC65_4B0B2C0F32C8.svg +0 -10
  148. data/examples/xmi/Images/EAID_88AF6BD7_BC34_406f_BB59_47CFAB4A7D5D.svg +0 -116
  149. data/examples/xmi/Images/EAID_88D0CB44_20D0_44fc_A6E3_B663332EF401.svg +0 -200
  150. data/examples/xmi/Images/EAID_8BB1CA0C_C003_4678_973B_A1C3308E021D.svg +0 -136
  151. data/examples/xmi/Images/EAID_8DAB169F_D189_4320_A0F5_4443E3297F0E.svg +0 -181
  152. data/examples/xmi/Images/EAID_8FD488EF_BAAB_40ec_A7ED_F7CC831D546E.svg +0 -324
  153. data/examples/xmi/Images/EAID_90BCA409_BB45_42c5_AFA5_45FE3D995904.svg +0 -342
  154. data/examples/xmi/Images/EAID_926AFE38_01FA_469e_B6AA_ED5F4D62B66F.svg +0 -105
  155. data/examples/xmi/Images/EAID_92AB0FD0_B0FB_4ceb_8EAE_66B6600D31D7.svg +0 -681
  156. data/examples/xmi/Images/EAID_92C43670_3057_47f1_A576_C60843FF3D26.svg +0 -136
  157. data/examples/xmi/Images/EAID_93F63576_BE01_4cd8_8A91_C674FF77FC3D.svg +0 -718
  158. data/examples/xmi/Images/EAID_9400D9BC_05A5_41fc_83F7_02E5C67F9718.svg +0 -487
  159. data/examples/xmi/Images/EAID_95246DCF_1C09_4a16_9512_98000F56B3D8.svg +0 -292
  160. data/examples/xmi/Images/EAID_9994BF62_51E2_42cd_BB35_16C537B6718A.svg +0 -715
  161. data/examples/xmi/Images/EAID_9AAD6C21_B1E7_4472_B64A_FB5E3569D970.svg +0 -116
  162. data/examples/xmi/Images/EAID_9BD7189A_877B_4ca9_B42C_817DEF144FB2.svg +0 -284
  163. data/examples/xmi/Images/EAID_9DA6C553_94FC_4204_83AD_ECC4B45A53EF.svg +0 -159
  164. data/examples/xmi/Images/EAID_9EE6A41B_5FAA_4c89_B98F_732059778630.svg +0 -10
  165. data/examples/xmi/Images/EAID_9F1A4B54_46F6_435c_9529_E43E54CF6050.svg +0 -172
  166. data/examples/xmi/Images/EAID_9FE1EA7B_4CEF_4976_A281_93A94315BD84.svg +0 -153
  167. data/examples/xmi/Images/EAID_A0695647_6172_4262_8C30_67441399609C.svg +0 -290
  168. data/examples/xmi/Images/EAID_A081C63E_D6F2_41a7_A99C_307836754AFA.svg +0 -149
  169. data/examples/xmi/Images/EAID_A24E2778_5AD9_44f2_AB8F_5CD3913477D6.svg +0 -194
  170. data/examples/xmi/Images/EAID_A264F089_F9B3_406c_A3A8_FF34903797D3.svg +0 -143
  171. data/examples/xmi/Images/EAID_A282E5D1_2A13_4e7f_BC76_5D086DD4A577.svg +0 -357
  172. data/examples/xmi/Images/EAID_A3BCE1D6_9DB5_4272_A020_4C0E194B99CC.svg +0 -171
  173. data/examples/xmi/Images/EAID_A56E3818_D1B8_4b63_B69E_FBAC4A8AF482.svg +0 -218
  174. data/examples/xmi/Images/EAID_A57215D5_75C5_4532_BCF4_264A77CD62F1.svg +0 -204
  175. data/examples/xmi/Images/EAID_A59065AF_9669_486c_9582_9693177CFC7F.svg +0 -263
  176. data/examples/xmi/Images/EAID_A759374D_589A_488c_99EF_537ACB9B1FF9.svg +0 -398
  177. data/examples/xmi/Images/EAID_A7B25F46_F18A_4373_B16D_8C6AC0B868B0.svg +0 -174
  178. data/examples/xmi/Images/EAID_A9FE9E6F_A5F4_47e5_A6BA_26E22C7346B6.svg +0 -310
  179. data/examples/xmi/Images/EAID_AA62CDEB_55EC_498d_B326_4AA2C9AF6A05.svg +0 -144
  180. data/examples/xmi/Images/EAID_AAF52AF6_F7F9_4005_AE46_8920847BEA03.svg +0 -144
  181. data/examples/xmi/Images/EAID_AB281AC1_7CB8_404a_8124_34343DDD84E2.svg +0 -198
  182. data/examples/xmi/Images/EAID_AB7F1FDF_A66B_42a1_B8A3_7F594BAAD508.svg +0 -143
  183. data/examples/xmi/Images/EAID_AC2191E3_76E3_40b2_9E21_0E0B9B5277D2.svg +0 -114
  184. data/examples/xmi/Images/EAID_AD451676_A7C8_4c6a_A925_A9B9CA344142.svg +0 -339
  185. data/examples/xmi/Images/EAID_ADBA40A1_9375_4c1b_9938_0990612EB615.svg +0 -429
  186. data/examples/xmi/Images/EAID_ADC8773C_1B27_48ac_BAC1_14C1C919FAF6.svg +0 -245
  187. data/examples/xmi/Images/EAID_AE0718DF_AF69_4ea1_A099_E20028FE40A1.svg +0 -173
  188. data/examples/xmi/Images/EAID_B0DDB85D_A00C_4a7f_8C06_CCA15E5E4FE5.svg +0 -31
  189. data/examples/xmi/Images/EAID_B27ED282_D5E5_4f33_8AC1_62802F9E0B35.svg +0 -256
  190. data/examples/xmi/Images/EAID_B3AFECCB_17DD_44d6_8A44_2C38D9A64C0B.svg +0 -95
  191. data/examples/xmi/Images/EAID_B3B6C5B1_278E_4714_8244_B6C28B66AB50.svg +0 -176
  192. data/examples/xmi/Images/EAID_B53E76CD_A0F2_4e2f_B3AB_796D85964EF2.svg +0 -179
  193. data/examples/xmi/Images/EAID_B55D6E67_0BDD_4163_B359_11A6FBA89C74.svg +0 -207
  194. data/examples/xmi/Images/EAID_B58D1A53_E860_41a3_8352_11C274093E83.svg +0 -189
  195. data/examples/xmi/Images/EAID_B62C02B3_69DB_49e9_8089_4EE398BDE666.svg +0 -165
  196. data/examples/xmi/Images/EAID_BC008774_B539_4150_8174_B675989053D0.svg +0 -22
  197. data/examples/xmi/Images/EAID_BC1F7E00_082D_4a26_922B_3967A8D66859.svg +0 -266
  198. data/examples/xmi/Images/EAID_BDA613D8_402A_475a_AA15_683D88FD3D23.svg +0 -183
  199. data/examples/xmi/Images/EAID_C028B286_4C85_47d8_B6D5_80B28F556E82.svg +0 -303
  200. data/examples/xmi/Images/EAID_C173A6F4_1D1B_400e_AD8C_64FFF7CD5BE5.svg +0 -178
  201. data/examples/xmi/Images/EAID_C1834072_CADC_4ce4_B0FC_8284AE5CF4A4.svg +0 -158
  202. data/examples/xmi/Images/EAID_C1EC985B_5CBD_4e91_8661_EB4EF23781D9.svg +0 -286
  203. data/examples/xmi/Images/EAID_C31C1314_B679_4413_B8FE_A2CD584FC128.svg +0 -305
  204. data/examples/xmi/Images/EAID_C37CFBD6_69BA_42fb_9AC7_2D329D931BCF.svg +0 -171
  205. data/examples/xmi/Images/EAID_C857C934_306F_463a_87D5_257CB225ECFE.svg +0 -174
  206. data/examples/xmi/Images/EAID_C96797DE_2238_42d3_896A_9F92500270ED.svg +0 -180
  207. data/examples/xmi/Images/EAID_C96CBC24_B20E_459a_8F9D_75B61CDCB89F.svg +0 -656
  208. data/examples/xmi/Images/EAID_CACB523D_56A5_4f05_B3C2_51BB18F380FD.svg +0 -158
  209. data/examples/xmi/Images/EAID_CB34B578_101B_48b4_9271_214FFEA6A83A.svg +0 -409
  210. data/examples/xmi/Images/EAID_CBBD6CF4_0A1E_4406_9930_89DE43527910.svg +0 -361
  211. data/examples/xmi/Images/EAID_CC06A828_3750_472f_8DB2_C2E0863FCE17.svg +0 -96
  212. data/examples/xmi/Images/EAID_CD5CF053_1772_4a0f_962D_B17054D8EEAA.svg +0 -173
  213. data/examples/xmi/Images/EAID_CE440B5A_9534_4c75_9BA5_50862BB396C2.svg +0 -97
  214. data/examples/xmi/Images/EAID_CE4734FC_7986_4b3a_807F_A5B2C7EDE9E4.svg +0 -193
  215. data/examples/xmi/Images/EAID_D14AA320_9D41_4366_8739_9C2C21F96AE1.svg +0 -32
  216. data/examples/xmi/Images/EAID_D2FA55D3_C733_4a4d_92D0_0BC7AC0BB5BC.svg +0 -108
  217. data/examples/xmi/Images/EAID_D351FC34_FB03_488d_ADA4_BDB93DA9CB02.svg +0 -49
  218. data/examples/xmi/Images/EAID_D368FDF3_BDC5_4718_A701_351C8587A376.svg +0 -592
  219. data/examples/xmi/Images/EAID_D4DA8C48_3998_450d_87C4_9D65C9FECDB4.svg +0 -42
  220. data/examples/xmi/Images/EAID_D5464ECF_290E_4b2b_A6C4_25BE80F886CB.svg +0 -76
  221. data/examples/xmi/Images/EAID_D55235B0_61E9_461a_8379_2B8BF2403BE2.svg +0 -147
  222. data/examples/xmi/Images/EAID_D555ED73_F010_45d7_8A53_45A33C64C249.svg +0 -318
  223. data/examples/xmi/Images/EAID_D7AAC526_267E_45a0_A853_3207F02363F8.svg +0 -45
  224. data/examples/xmi/Images/EAID_D998B20D_A875_4ef8_A9CE_996BE56602BD.svg +0 -158
  225. data/examples/xmi/Images/EAID_DBFA8B39_F5B7_4c0e_9552_19AEAE5BA64E.svg +0 -200
  226. data/examples/xmi/Images/EAID_DE47A47D_E7BE_4e6f_BA81_F789EE8CFE72.svg +0 -61
  227. data/examples/xmi/Images/EAID_DFBB1072_8EC5_4384_8241_7EDF4B6B888B.svg +0 -78
  228. data/examples/xmi/Images/EAID_E325B9D8_E955_4aed_8125_63167BD40320.svg +0 -67
  229. data/examples/xmi/Images/EAID_E32D9D02_CAE9_4a47_92A8_3290EDCD6E6D.svg +0 -79
  230. data/examples/xmi/Images/EAID_E3B28611_7857_458a_B0BC_736E777B88EC.svg +0 -194
  231. data/examples/xmi/Images/EAID_E43C37EC_1176_4d2e_8B98_B6F3DFF6A092.svg +0 -96
  232. data/examples/xmi/Images/EAID_E591C1CF_7F35_4160_8A72_DFA097AD5811.svg +0 -271
  233. data/examples/xmi/Images/EAID_E77C66A2_2E94_4196_BFC6_662FE5AEEB6F.svg +0 -332
  234. data/examples/xmi/Images/EAID_E7AABA98_2450_4986_9736_DCCAF0108C50.svg +0 -639
  235. data/examples/xmi/Images/EAID_E7D9A2C4_72D6_40b9_8EB8_6B35476246B3.svg +0 -134
  236. data/examples/xmi/Images/EAID_E9CDAD85_ECF1_43de_819F_30A0D01785E6.svg +0 -193
  237. data/examples/xmi/Images/EAID_EC8AF507_F441_4e8a_B8A7_C1690F3C7D0B.svg +0 -58
  238. data/examples/xmi/Images/EAID_ED501058_D540_47ac_8EBC_5921E8C0BF57.svg +0 -384
  239. data/examples/xmi/Images/EAID_EFBF5F0F_DF74_4944_8791_114F5637C335.svg +0 -590
  240. data/examples/xmi/Images/EAID_EFFFA027_2A1F_425c_8437_BF89AADC8893.svg +0 -365
  241. data/examples/xmi/Images/EAID_F07E7718_B2C2_4a65_B5DD_477CB73E971E.svg +0 -165
  242. data/examples/xmi/Images/EAID_F0F20BDF_C729_47f7_B6FC_25ED2C4609CA.svg +0 -61
  243. data/examples/xmi/Images/EAID_F32E5AFE_8605_4c77_AE69_D0D0A6E380AC.svg +0 -76
  244. data/examples/xmi/Images/EAID_F3F00F45_CD37_46fd_B521_D1040EB2FB16.svg +0 -123
  245. data/examples/xmi/Images/EAID_F46E8F19_D8F1_4a3d_B87B_B0BAB4F50F50.svg +0 -202
  246. data/examples/xmi/Images/EAID_F48E5F6E_2411_4635_9315_3EAA4CFA29F7.svg +0 -351
  247. data/examples/xmi/Images/EAID_F4C23F9E_DD74_4fed_B75D_AD3C6448BA24.svg +0 -189
  248. data/examples/xmi/Images/EAID_F853B3C4_B145_4ef0_B261_C3CC0475B6D2.svg +0 -215
  249. data/examples/xmi/Images/EAID_F8BE68CA_1F8F_47e5_9454_01A2EB7D388A.svg +0 -124
  250. data/examples/xmi/Images/EAID_F92A6A28_612E_468e_9E39_D7AE7D24E24D.svg +0 -208
  251. data/examples/xmi/Images/EAID_F995FA49_B86E_4c94_BE5E_C928FB6B87D0.svg +0 -302
  252. data/examples/xmi/Images/EAID_FEAE013A_A4E4_4283_A491_1FEB8D0EBA28.svg +0 -524
  253. data/examples/xmi/Images/EAID_FEBE5726_3751_470b_9023_8C569202E97E.svg +0 -730
  254. data/examples/xmi/UML_EA.DTD +0 -6856
  255. data/examples/xmi/UmlModel_template.xmi +0 -23
  256. data/examples/xmi/basic.xmi +0 -9086
  257. data/examples/xmi/simple.xmi +0 -655
  258. data/examples/xmi/simple_example.xmi +0 -23
  259. data/examples/xmi/test.xmi +0 -1703
  260. data/exe/lutaml +0 -11
  261. data/exe/lutaml-sysml +0 -22
  262. data/exe/lutaml-wsd2uml +0 -63
  263. data/exe/lutaml-yaml2uml +0 -146
  264. data/frontend/dist/app.iife.js +0 -24
  265. data/frontend/dist/style.css +0 -1
  266. data/frontend/index.html +0 -26
  267. data/frontend/package-lock.json +0 -2805
  268. data/frontend/package.json +0 -26
  269. data/frontend/src/App.vue +0 -59
  270. data/frontend/src/app.ts +0 -8
  271. data/frontend/src/components/AppHeader.vue +0 -127
  272. data/frontend/src/components/AppSidebar.vue +0 -119
  273. data/frontend/src/components/ClassDetails.vue +0 -247
  274. data/frontend/src/components/DiagramView.vue +0 -79
  275. data/frontend/src/components/PackageDetails.vue +0 -92
  276. data/frontend/src/components/PackageTreeNode.vue +0 -64
  277. data/frontend/src/components/SearchResults.vue +0 -48
  278. data/frontend/src/components/WelcomeView.vue +0 -66
  279. data/frontend/src/shims-vue.d.ts +0 -5
  280. data/frontend/src/stores/dataStore.ts +0 -79
  281. data/frontend/src/stores/uiStore.ts +0 -167
  282. data/frontend/src/styles/main.css +0 -1566
  283. data/frontend/src/types.ts +0 -221
  284. data/frontend/tests/e2e/__screenshots__/new-dark-mode.png +0 -0
  285. data/frontend/tests/e2e/__screenshots__/new-package-details.png +0 -0
  286. data/frontend/tests/e2e/__screenshots__/new-search-modal.png +0 -0
  287. data/frontend/tests/e2e/__screenshots__/new-sidebar-collapsed.png +0 -0
  288. data/frontend/tests/e2e/__screenshots__/new-welcome.png +0 -0
  289. data/frontend/tests/e2e/render.spec.ts +0 -188
  290. data/frontend/tsconfig.json +0 -20
  291. data/frontend/vite.config.ts +0 -26
  292. data/frontend/vitest.config.ts +0 -8
  293. data/lib/lutaml/cli/element_identifier.rb +0 -160
  294. data/lib/lutaml/cli/enhanced_formatter.rb +0 -494
  295. data/lib/lutaml/cli/interactive_shell/bookmark_commands.rb +0 -85
  296. data/lib/lutaml/cli/interactive_shell/command_base.rb +0 -32
  297. data/lib/lutaml/cli/interactive_shell/export_handler.rb +0 -73
  298. data/lib/lutaml/cli/interactive_shell/help_display.rb +0 -107
  299. data/lib/lutaml/cli/interactive_shell/navigation_commands.rb +0 -151
  300. data/lib/lutaml/cli/interactive_shell/query_commands.rb +0 -208
  301. data/lib/lutaml/cli/interactive_shell.rb +0 -254
  302. data/lib/lutaml/cli/lml_commands.rb +0 -205
  303. data/lib/lutaml/cli/output_formatter.rb +0 -348
  304. data/lib/lutaml/cli/resource_registry.rb +0 -127
  305. data/lib/lutaml/cli/tree_view_formatter.rb +0 -312
  306. data/lib/lutaml/cli/uml/build_command.rb +0 -487
  307. data/lib/lutaml/cli/uml/diagram_command.rb +0 -415
  308. data/lib/lutaml/cli/uml/export_command.rb +0 -77
  309. data/lib/lutaml/cli/uml/find_command.rb +0 -119
  310. data/lib/lutaml/cli/uml/info_command.rb +0 -103
  311. data/lib/lutaml/cli/uml/inspect_command.rb +0 -85
  312. data/lib/lutaml/cli/uml/ls_command.rb +0 -102
  313. data/lib/lutaml/cli/uml/repl_command.rb +0 -49
  314. data/lib/lutaml/cli/uml/search_command.rb +0 -85
  315. data/lib/lutaml/cli/uml/serve_command.rb +0 -58
  316. data/lib/lutaml/cli/uml/shared_helpers.rb +0 -49
  317. data/lib/lutaml/cli/uml/spa_command.rb +0 -223
  318. data/lib/lutaml/cli/uml/stats_command.rb +0 -57
  319. data/lib/lutaml/cli/uml/tree_command.rb +0 -82
  320. data/lib/lutaml/cli/uml/validate_command.rb +0 -190
  321. data/lib/lutaml/cli/uml/verify_command.rb +0 -103
  322. data/lib/lutaml/cli/uml.rb +0 -24
  323. data/lib/lutaml/cli/uml_commands.rb +0 -145
  324. data/lib/lutaml/cli.rb +0 -84
  325. data/lib/lutaml/converter/dsl_to_uml.rb +0 -237
  326. data/lib/lutaml/converter/xmi_to_uml.rb +0 -329
  327. data/lib/lutaml/converter/xmi_to_uml_generalization.rb +0 -193
  328. data/lib/lutaml/converter.rb +0 -10
  329. data/lib/lutaml/ea/diagram/configuration.rb +0 -379
  330. data/lib/lutaml/ea/diagram/element_renderers/base_renderer.rb +0 -81
  331. data/lib/lutaml/ea/diagram/element_renderers/class_renderer.rb +0 -328
  332. data/lib/lutaml/ea/diagram/element_renderers/connector_renderer.rb +0 -53
  333. data/lib/lutaml/ea/diagram/element_renderers/package_renderer.rb +0 -67
  334. data/lib/lutaml/ea/diagram/element_renderers.rb +0 -18
  335. data/lib/lutaml/ea/diagram/extractor.rb +0 -550
  336. data/lib/lutaml/ea/diagram/layout_engine.rb +0 -249
  337. data/lib/lutaml/ea/diagram/path_builder.rb +0 -256
  338. data/lib/lutaml/ea/diagram/style_parser.rb +0 -315
  339. data/lib/lutaml/ea/diagram/style_resolver.rb +0 -281
  340. data/lib/lutaml/ea/diagram/svg_renderer.rb +0 -279
  341. data/lib/lutaml/ea/diagram/util.rb +0 -69
  342. data/lib/lutaml/ea/diagram.rb +0 -62
  343. data/lib/lutaml/ea.rb +0 -7
  344. data/lib/lutaml/formatter/base.rb +0 -63
  345. data/lib/lutaml/formatter/graphviz.rb +0 -374
  346. data/lib/lutaml/formatter.rb +0 -20
  347. data/lib/lutaml/layout/engine.rb +0 -17
  348. data/lib/lutaml/layout/graph_viz_engine.rb +0 -19
  349. data/lib/lutaml/layout.rb +0 -8
  350. data/lib/lutaml/model_transformations/configuration.rb +0 -333
  351. data/lib/lutaml/model_transformations/format_registry.rb +0 -392
  352. data/lib/lutaml/model_transformations/parsers/base_parser.rb +0 -464
  353. data/lib/lutaml/model_transformations/parsers/qea_parser.rb +0 -450
  354. data/lib/lutaml/model_transformations/parsers/xmi_parser.rb +0 -289
  355. data/lib/lutaml/model_transformations/transformation_engine.rb +0 -405
  356. data/lib/lutaml/model_transformations.rb +0 -143
  357. data/lib/lutaml/qea/benchmark.rb +0 -210
  358. data/lib/lutaml/qea/database.rb +0 -270
  359. data/lib/lutaml/qea/factory/association_builder.rb +0 -203
  360. data/lib/lutaml/qea/factory/association_transformer.rb +0 -107
  361. data/lib/lutaml/qea/factory/attribute_tag_transformer.rb +0 -57
  362. data/lib/lutaml/qea/factory/attribute_transformer.rb +0 -93
  363. data/lib/lutaml/qea/factory/base_transformer.rb +0 -127
  364. data/lib/lutaml/qea/factory/class_transformer.rb +0 -164
  365. data/lib/lutaml/qea/factory/constraint_transformer.rb +0 -75
  366. data/lib/lutaml/qea/factory/data_type_transformer.rb +0 -133
  367. data/lib/lutaml/qea/factory/diagram_transformer.rb +0 -157
  368. data/lib/lutaml/qea/factory/document_builder.rb +0 -273
  369. data/lib/lutaml/qea/factory/ea_to_uml_factory.rb +0 -243
  370. data/lib/lutaml/qea/factory/enum_transformer.rb +0 -88
  371. data/lib/lutaml/qea/factory/generalization_builder.rb +0 -236
  372. data/lib/lutaml/qea/factory/generalization_transformer.rb +0 -98
  373. data/lib/lutaml/qea/factory/instance_transformer.rb +0 -84
  374. data/lib/lutaml/qea/factory/object_property_transformer.rb +0 -58
  375. data/lib/lutaml/qea/factory/operation_transformer.rb +0 -66
  376. data/lib/lutaml/qea/factory/package_transformer.rb +0 -208
  377. data/lib/lutaml/qea/factory/reference_resolver.rb +0 -99
  378. data/lib/lutaml/qea/factory/stereotype_loader.rb +0 -40
  379. data/lib/lutaml/qea/factory/tagged_value_transformer.rb +0 -38
  380. data/lib/lutaml/qea/factory/transformer_registry.rb +0 -77
  381. data/lib/lutaml/qea/factory.rb +0 -37
  382. data/lib/lutaml/qea/file_detector.rb +0 -178
  383. data/lib/lutaml/qea/infrastructure/database_connection.rb +0 -100
  384. data/lib/lutaml/qea/infrastructure/schema_reader.rb +0 -136
  385. data/lib/lutaml/qea/infrastructure/table_reader.rb +0 -224
  386. data/lib/lutaml/qea/infrastructure.rb +0 -12
  387. data/lib/lutaml/qea/models/base_model.rb +0 -48
  388. data/lib/lutaml/qea/models/ea_attribute.rb +0 -133
  389. data/lib/lutaml/qea/models/ea_attribute_tag.rb +0 -107
  390. data/lib/lutaml/qea/models/ea_complexity_type.rb +0 -79
  391. data/lib/lutaml/qea/models/ea_connector.rb +0 -160
  392. data/lib/lutaml/qea/models/ea_connector_type.rb +0 -60
  393. data/lib/lutaml/qea/models/ea_constraint_type.rb +0 -63
  394. data/lib/lutaml/qea/models/ea_datatype.rb +0 -104
  395. data/lib/lutaml/qea/models/ea_diagram.rb +0 -115
  396. data/lib/lutaml/qea/models/ea_diagram_link.rb +0 -78
  397. data/lib/lutaml/qea/models/ea_diagram_object.rb +0 -84
  398. data/lib/lutaml/qea/models/ea_diagram_type.rb +0 -56
  399. data/lib/lutaml/qea/models/ea_document.rb +0 -66
  400. data/lib/lutaml/qea/models/ea_object.rb +0 -206
  401. data/lib/lutaml/qea/models/ea_object_constraint.rb +0 -60
  402. data/lib/lutaml/qea/models/ea_object_property.rb +0 -94
  403. data/lib/lutaml/qea/models/ea_object_type.rb +0 -73
  404. data/lib/lutaml/qea/models/ea_operation.rb +0 -151
  405. data/lib/lutaml/qea/models/ea_operation_param.rb +0 -71
  406. data/lib/lutaml/qea/models/ea_package.rb +0 -73
  407. data/lib/lutaml/qea/models/ea_script.rb +0 -67
  408. data/lib/lutaml/qea/models/ea_status_type.rb +0 -66
  409. data/lib/lutaml/qea/models/ea_stereotype.rb +0 -57
  410. data/lib/lutaml/qea/models/ea_tagged_value.rb +0 -103
  411. data/lib/lutaml/qea/models/ea_xref.rb +0 -172
  412. data/lib/lutaml/qea/models.rb +0 -35
  413. data/lib/lutaml/qea/parser.rb +0 -57
  414. data/lib/lutaml/qea/repositories/base_repository.rb +0 -215
  415. data/lib/lutaml/qea/repositories/object_repository.rb +0 -219
  416. data/lib/lutaml/qea/repositories.rb +0 -10
  417. data/lib/lutaml/qea/services/configuration.rb +0 -211
  418. data/lib/lutaml/qea/services/database_loader.rb +0 -186
  419. data/lib/lutaml/qea/services.rb +0 -10
  420. data/lib/lutaml/qea/validation/association_validator.rb +0 -73
  421. data/lib/lutaml/qea/validation/attribute_validator.rb +0 -101
  422. data/lib/lutaml/qea/validation/base_validator.rb +0 -312
  423. data/lib/lutaml/qea/validation/class_validator.rb +0 -121
  424. data/lib/lutaml/qea/validation/database/circular_reference_validator.rb +0 -109
  425. data/lib/lutaml/qea/validation/database/orphan_validator.rb +0 -153
  426. data/lib/lutaml/qea/validation/database/referential_integrity_validator.rb +0 -128
  427. data/lib/lutaml/qea/validation/database.rb +0 -16
  428. data/lib/lutaml/qea/validation/diagram_validator.rb +0 -112
  429. data/lib/lutaml/qea/validation/formatters/json_formatter.rb +0 -137
  430. data/lib/lutaml/qea/validation/formatters/text_formatter.rb +0 -235
  431. data/lib/lutaml/qea/validation/operation_validator.rb +0 -79
  432. data/lib/lutaml/qea/validation/package_validator.rb +0 -111
  433. data/lib/lutaml/qea/validation/validation_engine.rb +0 -477
  434. data/lib/lutaml/qea/validation/validation_message.rb +0 -144
  435. data/lib/lutaml/qea/validation/validation_result.rb +0 -210
  436. data/lib/lutaml/qea/validation/validator_registry.rb +0 -134
  437. data/lib/lutaml/qea/validation.rb +0 -27
  438. data/lib/lutaml/qea/verification/comparison_result.rb +0 -264
  439. data/lib/lutaml/qea/verification/document_normalizer.rb +0 -169
  440. data/lib/lutaml/qea/verification/document_verifier.rb +0 -323
  441. data/lib/lutaml/qea/verification/element_comparator.rb +0 -277
  442. data/lib/lutaml/qea/verification/structure_matcher.rb +0 -287
  443. data/lib/lutaml/qea/verification.rb +0 -14
  444. data/lib/lutaml/qea.rb +0 -227
  445. data/lib/lutaml/uml/abstraction.rb +0 -12
  446. data/lib/lutaml/uml/action.rb +0 -17
  447. data/lib/lutaml/uml/activity.rb +0 -12
  448. data/lib/lutaml/uml/actor.rb +0 -12
  449. data/lib/lutaml/uml/association.rb +0 -37
  450. data/lib/lutaml/uml/association_generalization.rb +0 -20
  451. data/lib/lutaml/uml/behavior.rb +0 -12
  452. data/lib/lutaml/uml/cardinality.rb +0 -12
  453. data/lib/lutaml/uml/class.rb +0 -52
  454. data/lib/lutaml/uml/classifier.rb +0 -19
  455. data/lib/lutaml/uml/comment.rb +0 -15
  456. data/lib/lutaml/uml/connector.rb +0 -20
  457. data/lib/lutaml/uml/connector_end.rb +0 -22
  458. data/lib/lutaml/uml/constraint.rb +0 -24
  459. data/lib/lutaml/uml/data_type.rb +0 -56
  460. data/lib/lutaml/uml/dependency.rb +0 -20
  461. data/lib/lutaml/uml/diagram.rb +0 -25
  462. data/lib/lutaml/uml/diagram_link.rb +0 -28
  463. data/lib/lutaml/uml/diagram_object.rb +0 -32
  464. data/lib/lutaml/uml/document.rb +0 -64
  465. data/lib/lutaml/uml/enum.rb +0 -21
  466. data/lib/lutaml/uml/event.rb +0 -12
  467. data/lib/lutaml/uml/fidelity.rb +0 -12
  468. data/lib/lutaml/uml/final_state.rb +0 -12
  469. data/lib/lutaml/uml/fontname.rb +0 -15
  470. data/lib/lutaml/uml/general_attribute.rb +0 -24
  471. data/lib/lutaml/uml/generalization.rb +0 -37
  472. data/lib/lutaml/uml/group.rb +0 -21
  473. data/lib/lutaml/uml/has_attributes.rb +0 -14
  474. data/lib/lutaml/uml/has_members.rb +0 -30
  475. data/lib/lutaml/uml/inheritance_walker.rb +0 -96
  476. data/lib/lutaml/uml/instance.rb +0 -17
  477. data/lib/lutaml/uml/model.rb +0 -15
  478. data/lib/lutaml/uml/model_helpers.rb +0 -104
  479. data/lib/lutaml/uml/namespace.rb +0 -12
  480. data/lib/lutaml/uml/node/attribute.rb +0 -30
  481. data/lib/lutaml/uml/node/base.rb +0 -19
  482. data/lib/lutaml/uml/node/class_node.rb +0 -48
  483. data/lib/lutaml/uml/node/class_relationship.rb +0 -11
  484. data/lib/lutaml/uml/node/document.rb +0 -15
  485. data/lib/lutaml/uml/node/has_name.rb +0 -15
  486. data/lib/lutaml/uml/node/has_type.rb +0 -15
  487. data/lib/lutaml/uml/node/method_argument.rb +0 -12
  488. data/lib/lutaml/uml/node/operation.rb +0 -23
  489. data/lib/lutaml/uml/node/relationship.rb +0 -22
  490. data/lib/lutaml/uml/opaque_behavior.rb +0 -12
  491. data/lib/lutaml/uml/operation.rb +0 -23
  492. data/lib/lutaml/uml/operation_parameter.rb +0 -19
  493. data/lib/lutaml/uml/package.rb +0 -33
  494. data/lib/lutaml/uml/package_path.rb +0 -235
  495. data/lib/lutaml/uml/parsers/attribute.rb +0 -68
  496. data/lib/lutaml/uml/parsers/dsl.rb +0 -415
  497. data/lib/lutaml/uml/parsers/dsl_preprocessor.rb +0 -63
  498. data/lib/lutaml/uml/parsers/dsl_transform.rb +0 -27
  499. data/lib/lutaml/uml/parsers/yaml.rb +0 -22
  500. data/lib/lutaml/uml/port.rb +0 -9
  501. data/lib/lutaml/uml/primitive_type.rb +0 -15
  502. data/lib/lutaml/uml/property.rb +0 -27
  503. data/lib/lutaml/uml/pseudostate.rb +0 -12
  504. data/lib/lutaml/uml/qualified_name.rb +0 -175
  505. data/lib/lutaml/uml/realization.rb +0 -12
  506. data/lib/lutaml/uml/region.rb +0 -12
  507. data/lib/lutaml/uml/state.rb +0 -22
  508. data/lib/lutaml/uml/state_machine.rb +0 -12
  509. data/lib/lutaml/uml/tagged_value.rb +0 -23
  510. data/lib/lutaml/uml/top_element.rb +0 -85
  511. data/lib/lutaml/uml/top_element_attribute.rb +0 -64
  512. data/lib/lutaml/uml/transition.rb +0 -24
  513. data/lib/lutaml/uml/trigger.rb +0 -18
  514. data/lib/lutaml/uml/validation/document_structure_validator.rb +0 -387
  515. data/lib/lutaml/uml/value.rb +0 -37
  516. data/lib/lutaml/uml/vertex.rb +0 -12
  517. data/lib/lutaml/uml.rb +0 -113
  518. data/lib/lutaml/uml_repository/class_lookup_index.rb +0 -39
  519. data/lib/lutaml/uml_repository/error_handler.rb +0 -203
  520. data/lib/lutaml/uml_repository/exporters/base_exporter.rb +0 -61
  521. data/lib/lutaml/uml_repository/exporters/json_exporter.rb +0 -343
  522. data/lib/lutaml/uml_repository/exporters/markdown/class_page_builder.rb +0 -187
  523. data/lib/lutaml/uml_repository/exporters/markdown/formatting.rb +0 -34
  524. data/lib/lutaml/uml_repository/exporters/markdown/index_page_builder.rb +0 -81
  525. data/lib/lutaml/uml_repository/exporters/markdown/link_resolver.rb +0 -40
  526. data/lib/lutaml/uml_repository/exporters/markdown/package_page_builder.rb +0 -107
  527. data/lib/lutaml/uml_repository/exporters/markdown.rb +0 -20
  528. data/lib/lutaml/uml_repository/exporters/markdown_exporter.rb +0 -86
  529. data/lib/lutaml/uml_repository/index_builder.rb +0 -210
  530. data/lib/lutaml/uml_repository/index_builders/association_index.rb +0 -155
  531. data/lib/lutaml/uml_repository/index_builders/class_index.rb +0 -113
  532. data/lib/lutaml/uml_repository/index_builders/package_index.rb +0 -62
  533. data/lib/lutaml/uml_repository/index_builders.rb +0 -13
  534. data/lib/lutaml/uml_repository/lazy_repository.rb +0 -236
  535. data/lib/lutaml/uml_repository/package_exporter.rb +0 -334
  536. data/lib/lutaml/uml_repository/package_loader.rb +0 -240
  537. data/lib/lutaml/uml_repository/package_metadata.rb +0 -77
  538. data/lib/lutaml/uml_repository/presenters/association_presenter.rb +0 -79
  539. data/lib/lutaml/uml_repository/presenters/attribute_presenter.rb +0 -94
  540. data/lib/lutaml/uml_repository/presenters/class_presenter.rb +0 -72
  541. data/lib/lutaml/uml_repository/presenters/datatype_presenter.rb +0 -97
  542. data/lib/lutaml/uml_repository/presenters/diagram_presenter.rb +0 -469
  543. data/lib/lutaml/uml_repository/presenters/element_presenter.rb +0 -91
  544. data/lib/lutaml/uml_repository/presenters/enum_presenter.rb +0 -78
  545. data/lib/lutaml/uml_repository/presenters/package_presenter.rb +0 -48
  546. data/lib/lutaml/uml_repository/presenters/presenter_factory.rb +0 -74
  547. data/lib/lutaml/uml_repository/queries/association_query.rb +0 -184
  548. data/lib/lutaml/uml_repository/queries/base_query.rb +0 -45
  549. data/lib/lutaml/uml_repository/queries/class_query.rb +0 -178
  550. data/lib/lutaml/uml_repository/queries/diagram_query.rb +0 -108
  551. data/lib/lutaml/uml_repository/queries/inheritance_query.rb +0 -327
  552. data/lib/lutaml/uml_repository/queries/package_query.rb +0 -230
  553. data/lib/lutaml/uml_repository/queries/search_query.rb +0 -236
  554. data/lib/lutaml/uml_repository/query_dsl/conditions/base_condition.rb +0 -28
  555. data/lib/lutaml/uml_repository/query_dsl/conditions/block_condition.rb +0 -44
  556. data/lib/lutaml/uml_repository/query_dsl/conditions/hash_condition.rb +0 -82
  557. data/lib/lutaml/uml_repository/query_dsl/conditions/package_condition.rb +0 -89
  558. data/lib/lutaml/uml_repository/query_dsl/order.rb +0 -90
  559. data/lib/lutaml/uml_repository/query_dsl/query_builder.rb +0 -290
  560. data/lib/lutaml/uml_repository/repository/deprecated.rb +0 -39
  561. data/lib/lutaml/uml_repository/repository/loader.rb +0 -117
  562. data/lib/lutaml/uml_repository/repository.rb +0 -718
  563. data/lib/lutaml/uml_repository/repository_enhanced.rb +0 -431
  564. data/lib/lutaml/uml_repository/search_result.rb +0 -86
  565. data/lib/lutaml/uml_repository/static_site/configuration.rb +0 -377
  566. data/lib/lutaml/uml_repository/static_site/data_transformer.rb +0 -135
  567. data/lib/lutaml/uml_repository/static_site/generator.rb +0 -120
  568. data/lib/lutaml/uml_repository/static_site/id_generator.rb +0 -120
  569. data/lib/lutaml/uml_repository/static_site/models/spa_association.rb +0 -29
  570. data/lib/lutaml/uml_repository/static_site/models/spa_association_end.rb +0 -25
  571. data/lib/lutaml/uml_repository/static_site/models/spa_attribute.rb +0 -58
  572. data/lib/lutaml/uml_repository/static_site/models/spa_base.rb +0 -12
  573. data/lib/lutaml/uml_repository/static_site/models/spa_cardinality.rb +0 -28
  574. data/lib/lutaml/uml_repository/static_site/models/spa_class.rb +0 -60
  575. data/lib/lutaml/uml_repository/static_site/models/spa_diagram.rb +0 -31
  576. data/lib/lutaml/uml_repository/static_site/models/spa_document.rb +0 -31
  577. data/lib/lutaml/uml_repository/static_site/models/spa_inherited_association.rb +0 -25
  578. data/lib/lutaml/uml_repository/static_site/models/spa_inherited_attribute.rb +0 -25
  579. data/lib/lutaml/uml_repository/static_site/models/spa_literal.rb +0 -19
  580. data/lib/lutaml/uml_repository/static_site/models/spa_metadata.rb +0 -39
  581. data/lib/lutaml/uml_repository/static_site/models/spa_operation.rb +0 -34
  582. data/lib/lutaml/uml_repository/static_site/models/spa_package.rb +0 -37
  583. data/lib/lutaml/uml_repository/static_site/models/spa_package_tree_node.rb +0 -32
  584. data/lib/lutaml/uml_repository/static_site/models/spa_parameter.rb +0 -21
  585. data/lib/lutaml/uml_repository/static_site/models/spa_search_entry.rb +0 -34
  586. data/lib/lutaml/uml_repository/static_site/models/spa_search_index.rb +0 -29
  587. data/lib/lutaml/uml_repository/static_site/models/spa_statistics.rb +0 -25
  588. data/lib/lutaml/uml_repository/static_site/models/spa_tree_class_ref.rb +0 -22
  589. data/lib/lutaml/uml_repository/static_site/models.rb +0 -48
  590. data/lib/lutaml/uml_repository/static_site/output/multi_file_strategy.rb +0 -69
  591. data/lib/lutaml/uml_repository/static_site/output/strategy.rb +0 -36
  592. data/lib/lutaml/uml_repository/static_site/output/vue_inlined_strategy.rb +0 -113
  593. data/lib/lutaml/uml_repository/static_site/output.rb +0 -15
  594. data/lib/lutaml/uml_repository/static_site/search_index_builder.rb +0 -216
  595. data/lib/lutaml/uml_repository/static_site/serializers/association_serializer.rb +0 -70
  596. data/lib/lutaml/uml_repository/static_site/serializers/attribute_serializer.rb +0 -24
  597. data/lib/lutaml/uml_repository/static_site/serializers/base.rb +0 -66
  598. data/lib/lutaml/uml_repository/static_site/serializers/class_serializer.rb +0 -97
  599. data/lib/lutaml/uml_repository/static_site/serializers/diagram_serializer.rb +0 -59
  600. data/lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb +0 -151
  601. data/lib/lutaml/uml_repository/static_site/serializers/metadata_builder.rb +0 -102
  602. data/lib/lutaml/uml_repository/static_site/serializers/operation_serializer.rb +0 -52
  603. data/lib/lutaml/uml_repository/static_site/serializers/package_serializer.rb +0 -55
  604. data/lib/lutaml/uml_repository/static_site/serializers/package_tree_builder.rb +0 -77
  605. data/lib/lutaml/uml_repository/static_site/serializers.rb +0 -30
  606. data/lib/lutaml/uml_repository/static_site.rb +0 -92
  607. data/lib/lutaml/uml_repository/statistics_calculator.rb +0 -342
  608. data/lib/lutaml/uml_repository/validators/repository_validator.rb +0 -402
  609. data/lib/lutaml/uml_repository/web_ui/app.rb +0 -161
  610. data/lib/lutaml/uml_repository/web_ui/public/app.js +0 -452
  611. data/lib/lutaml/uml_repository/web_ui/public/styles.css +0 -381
  612. data/lib/lutaml/uml_repository/web_ui/views/index.erb +0 -40
  613. data/lib/lutaml/uml_repository.rb +0 -117
  614. data/lib/lutaml/xmi/liquid_drops/association_drop.rb +0 -56
  615. data/lib/lutaml/xmi/liquid_drops/attribute_drop.rb +0 -72
  616. data/lib/lutaml/xmi/liquid_drops/cardinality_drop.rb +0 -35
  617. data/lib/lutaml/xmi/liquid_drops/connector_drop.rb +0 -54
  618. data/lib/lutaml/xmi/liquid_drops/constraint_drop.rb +0 -29
  619. data/lib/lutaml/xmi/liquid_drops/data_type_drop.rb +0 -63
  620. data/lib/lutaml/xmi/liquid_drops/dependency_drop.rb +0 -36
  621. data/lib/lutaml/xmi/liquid_drops/diagram_drop.rb +0 -34
  622. data/lib/lutaml/xmi/liquid_drops/enum_drop.rb +0 -49
  623. data/lib/lutaml/xmi/liquid_drops/enum_owned_literal_drop.rb +0 -25
  624. data/lib/lutaml/xmi/liquid_drops/generalization_attribute_drop.rb +0 -87
  625. data/lib/lutaml/xmi/liquid_drops/generalization_drop.rb +0 -127
  626. data/lib/lutaml/xmi/liquid_drops/klass_drop.rb +0 -191
  627. data/lib/lutaml/xmi/liquid_drops/operation_drop.rb +0 -29
  628. data/lib/lutaml/xmi/liquid_drops/package_drop.rb +0 -108
  629. data/lib/lutaml/xmi/liquid_drops/root_drop.rb +0 -34
  630. data/lib/lutaml/xmi/liquid_drops/source_target_drop.rb +0 -43
  631. data/lib/lutaml/xmi/parsers/xmi_base.rb +0 -301
  632. data/lib/lutaml/xmi/parsers/xmi_class_members.rb +0 -45
  633. data/lib/lutaml/xmi/parsers/xmi_connector.rb +0 -263
  634. data/lib/lutaml/xmi/parsers/xml.rb +0 -62
  635. data/lib/lutaml/xmi/xmi_lookup_service.rb +0 -40
  636. data/lib/lutaml/xmi.rb +0 -47
  637. data/templates/static_site/assets/images/lutaml-full.svg +0 -1
  638. data/templates/static_site/assets/images/lutaml-icon.svg +0 -1
  639. data/templates/static_site/assets/scripts/app.js +0 -45
  640. data/templates/static_site/assets/scripts/core/state.js +0 -446
  641. data/templates/static_site/assets/scripts/core/utils.js +0 -133
  642. data/templates/static_site/assets/scripts/ui/details.js +0 -74
  643. data/templates/static_site/assets/scripts/ui/diagrams.js +0 -345
  644. data/templates/static_site/assets/scripts/ui/search.js +0 -187
  645. data/templates/static_site/assets/scripts/ui/sidebar.js +0 -123
  646. data/templates/static_site/assets/styles/00-variables.css +0 -144
  647. data/templates/static_site/assets/styles/01-reset.css +0 -69
  648. data/templates/static_site/assets/styles/02-base.css +0 -144
  649. data/templates/static_site/assets/styles/03-layout.css +0 -121
  650. data/templates/static_site/assets/styles/04-components.css +0 -905
  651. data/templates/static_site/assets/styles/05-utilities.css +0 -23
  652. data/templates/static_site/assets/styles/06-diagrams.css +0 -74
  653. data/templates/static_site/components/class_details.liquid +0 -328
  654. data/templates/static_site/components/content.liquid +0 -481
  655. data/templates/static_site/components/diagram_list.liquid +0 -52
  656. data/templates/static_site/components/diagram_viewer.liquid +0 -71
  657. data/templates/static_site/components/header.liquid +0 -114
  658. data/templates/static_site/components/package_details.liquid +0 -119
  659. data/templates/static_site/components/sidebar.liquid +0 -76
  660. data/templates/static_site/components/tree_node.liquid +0 -81
  661. data/templates/static_site/multi_file.liquid +0 -49
  662. data/templates/static_site/single_file.liquid +0 -57
@@ -1,221 +0,0 @@
1
- export interface SpaCardinality {
2
- min?: string
3
- max?: string
4
- }
5
-
6
- export interface SpaAttribute {
7
- id: string
8
- name: string
9
- type: string
10
- visibility?: string
11
- owner: string
12
- ownerName: string
13
- cardinality?: SpaCardinality
14
- definition?: string
15
- stereotypes: string[]
16
- isStatic: boolean
17
- isReadOnly: boolean
18
- defaultValue?: string
19
- }
20
-
21
- export interface SpaAssociationEnd {
22
- class?: string
23
- className?: string
24
- role?: string
25
- cardinality?: SpaCardinality
26
- aggregation?: string
27
- }
28
-
29
- export interface SpaAssociation {
30
- id: string
31
- xmiId: string
32
- name: string
33
- type: string
34
- definition?: string
35
- source?: SpaAssociationEnd
36
- target?: SpaAssociationEnd
37
- }
38
-
39
- export interface SpaOperation {
40
- id: string
41
- name: string
42
- visibility?: string
43
- returnType?: string
44
- owner: string
45
- ownerName: string
46
- parameters: SpaParameter[]
47
- isStatic: boolean
48
- isAbstract: boolean
49
- }
50
-
51
- export interface SpaParameter {
52
- name: string
53
- type?: string
54
- direction?: string
55
- }
56
-
57
- export interface SpaLiteral {
58
- name: string
59
- definition?: string
60
- }
61
-
62
- export interface SpaInheritedAttribute {
63
- attributeId: string
64
- attribute: SpaAttribute
65
- inheritedFrom: string
66
- inheritedFromName: string
67
- parentOrder: number
68
- }
69
-
70
- export interface SpaInheritedAssociation {
71
- associationId: string
72
- inheritedFrom: string
73
- inheritedFromName: string
74
- parentOrder: number
75
- localRole: string
76
- }
77
-
78
- export interface SpaClass {
79
- id: string
80
- xmiId: string
81
- name: string
82
- qualifiedName: string
83
- type: string
84
- package?: string
85
- stereotypes: string[]
86
- definition?: string
87
- attributes: string[]
88
- operations: string[]
89
- associations: string[]
90
- generalizations: string[]
91
- specializations: string[]
92
- isAbstract: boolean
93
- literals: SpaLiteral[]
94
- inheritedAttributes: SpaInheritedAttribute[]
95
- inheritedAssociations: SpaInheritedAssociation[]
96
- }
97
-
98
- export interface SpaPackage {
99
- id: string
100
- xmiId: string
101
- name: string
102
- path: string
103
- definition?: string
104
- stereotypes: string[]
105
- classes: string[]
106
- subPackages: string[]
107
- diagrams: string[]
108
- parent?: string
109
- }
110
-
111
- export interface SpaTreeClassRef {
112
- id: string
113
- name: string
114
- stereotypes: string[]
115
- }
116
-
117
- export interface SpaPackageTreeNode {
118
- id: string
119
- name: string
120
- path: string
121
- stereotypes: string[]
122
- classCount: number
123
- classes: SpaTreeClassRef[]
124
- children: SpaPackageTreeNode[]
125
- }
126
-
127
- export interface SpaDiagram {
128
- id: string
129
- xmiId: string
130
- name: string
131
- type: string
132
- package?: string
133
- objectCount: number
134
- linkCount: number
135
- svg?: string
136
- }
137
-
138
- export interface SpaStatistics {
139
- packages: number
140
- classes: number
141
- associations: number
142
- attributes: number
143
- operations: number
144
- }
145
-
146
- export interface SpaLogoVariant {
147
- path?: string
148
- url?: string
149
- }
150
-
151
- export interface SpaLogoConfig {
152
- light: SpaLogoVariant
153
- dark: SpaLogoVariant
154
- }
155
-
156
- export interface SpaLogos {
157
- square?: SpaLogoConfig
158
- long?: SpaLogoConfig
159
- }
160
-
161
- export interface SpaAppearance {
162
- logos?: SpaLogos
163
- }
164
-
165
- export interface SpaMetadata {
166
- title?: string
167
- description?: string
168
- generated: string
169
- generator: string
170
- version: string
171
- homepage?: string
172
- repository?: string
173
- license?: string
174
- authors?: string
175
- tags?: string[]
176
- appearance?: SpaAppearance
177
- statistics: SpaStatistics
178
- }
179
-
180
- export interface SpaSearchEntry {
181
- id: string
182
- type: string
183
- entityType: string
184
- entityId: string
185
- name: string
186
- qualifiedName: string
187
- package: string
188
- content: string
189
- boost: number
190
- }
191
-
192
- export interface SpaSearchIndex {
193
- version: string
194
- fields: { name: string; boost: number }[]
195
- ref: string
196
- documentStore: SpaSearchEntry[]
197
- pipeline: string[]
198
- }
199
-
200
- export interface SpaDocument {
201
- metadata: SpaMetadata
202
- packageTree: SpaPackageTreeNode
203
- packages: Record<string, SpaPackage>
204
- classes: Record<string, SpaClass>
205
- attributes: Record<string, SpaAttribute>
206
- associations: Record<string, SpaAssociation>
207
- operations: Record<string, SpaOperation>
208
- diagrams: Record<string, SpaDiagram>
209
- }
210
-
211
- export interface SpaData {
212
- metadata: SpaMetadata
213
- packageTree: SpaPackageTreeNode
214
- packages: Record<string, SpaPackage>
215
- classes: Record<string, SpaClass>
216
- attributes: Record<string, SpaAttribute>
217
- associations: Record<string, SpaAssociation>
218
- operations: Record<string, SpaOperation>
219
- diagrams: Record<string, SpaDiagram>
220
- searchIndex: SpaSearchIndex
221
- }
@@ -1,188 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll } from 'vitest'
2
- import puppeteer, { type Browser, type Page } from 'puppeteer'
3
- import path from 'path'
4
- import fs from 'fs'
5
-
6
- const NEW_HTML = '/tmp/lutaml_test_new.html'
7
- const SCREENSHOT_DIR = path.join(__dirname, '__screenshots__')
8
-
9
- describe('Lutaml SPA rendering', () => {
10
- let browser: Browser
11
- let page: Page
12
- const consoleErrors: string[] = []
13
-
14
- beforeAll(async () => {
15
- fs.mkdirSync(SCREENSHOT_DIR, { recursive: true })
16
-
17
- browser = await puppeteer.launch({
18
- headless: true,
19
- args: ['--no-sandbox', '--disable-setuid-sandbox'],
20
- })
21
- page = await browser.newPage()
22
- await page.setViewport({ width: 1280, height: 800 })
23
-
24
- page.on('pageerror', (err) => {
25
- consoleErrors.push(`PageError: ${err.message}`)
26
- })
27
- page.on('console', (msg) => {
28
- if (msg.type() === 'error') {
29
- consoleErrors.push(`ConsoleError: ${msg.text()}`)
30
- }
31
- })
32
- })
33
-
34
- afterAll(async () => {
35
- await browser.close()
36
- })
37
-
38
- it('loads without JS errors', async () => {
39
- await page.goto(`file://${NEW_HTML}`, { waitUntil: 'networkidle0', timeout: 10000 })
40
-
41
- // Wait for Vue to mount
42
- await page.waitForSelector('#app', { timeout: 5000 })
43
- await new Promise((r) => setTimeout(r, 500))
44
-
45
- const criticalErrors = consoleErrors.filter(
46
- (e) =>
47
- !e.includes('favicon') &&
48
- !e.includes('fonts.googleapis.com') &&
49
- !e.includes('Download the React DevTools')
50
- )
51
- expect(criticalErrors).toEqual([])
52
- })
53
-
54
- it('renders the sidebar', async () => {
55
- const sidebar = await page.$('.sidebar')
56
- expect(sidebar).not.toBeNull()
57
-
58
- const branding = await page.$('.sidebar-branding')
59
- expect(branding).not.toBeNull()
60
-
61
- const overviewBtn = await page.$('.overview-btn')
62
- expect(overviewBtn).not.toBeNull()
63
- })
64
-
65
- it('renders the header', async () => {
66
- const header = await page.$('.header')
67
- expect(header).not.toBeNull()
68
-
69
- const searchTrigger = await page.$('.search-trigger')
70
- expect(searchTrigger).not.toBeNull()
71
-
72
- const themeBtn = await page.$('.theme-btn')
73
- expect(themeBtn).not.toBeNull()
74
- })
75
-
76
- it('renders the package tree', async () => {
77
- const treeNodes = await page.$$('.tree-node')
78
- expect(treeNodes.length).toBeGreaterThan(0)
79
- })
80
-
81
- it('renders the welcome view by default', async () => {
82
- const welcome = await page.$('.view-welcome')
83
- expect(welcome).not.toBeNull()
84
-
85
- const stats = await page.$$('.welcome-stat')
86
- expect(stats.length).toBeGreaterThan(0)
87
- })
88
-
89
- it('takes a screenshot of the welcome page', async () => {
90
- await page.screenshot({
91
- path: path.join(SCREENSHOT_DIR, 'new-welcome.png'),
92
- fullPage: false,
93
- })
94
- })
95
-
96
- it('toggles dark mode', async () => {
97
- // Check initial theme
98
- const initialTheme = await page.evaluate(() => {
99
- return document.querySelector('.app-layout')?.getAttribute('data-theme')
100
- })
101
- expect(initialTheme).toBe('light')
102
-
103
- // Click theme toggle
104
- await page.click('.theme-btn')
105
- await new Promise((r) => setTimeout(r, 200))
106
-
107
- const darkTheme = await page.evaluate(() => {
108
- return document.querySelector('.app-layout')?.getAttribute('data-theme')
109
- })
110
- expect(darkTheme).toBe('dark')
111
-
112
- await page.screenshot({
113
- path: path.join(SCREENSHOT_DIR, 'new-dark-mode.png'),
114
- fullPage: false,
115
- })
116
-
117
- // Toggle back
118
- await page.click('.theme-btn')
119
- await new Promise((r) => setTimeout(r, 200))
120
- })
121
-
122
- it('collapses and expands sidebar', async () => {
123
- // Sidebar should be visible initially
124
- const sidebarClass = await page.evaluate(() => {
125
- return document.querySelector('.sidebar')?.className
126
- })
127
- expect(sidebarClass).not.toContain('collapsed')
128
-
129
- // Click sidebar toggle
130
- await page.click('.sidebar-toggle')
131
- await new Promise((r) => setTimeout(r, 300))
132
-
133
- const collapsedClass = await page.evaluate(() => {
134
- return document.querySelector('.sidebar')?.className
135
- })
136
- expect(collapsedClass).toContain('collapsed')
137
-
138
- await page.screenshot({
139
- path: path.join(SCREENSHOT_DIR, 'new-sidebar-collapsed.png'),
140
- fullPage: false,
141
- })
142
-
143
- // Expand again
144
- await page.click('.sidebar-toggle')
145
- await new Promise((r) => setTimeout(r, 300))
146
- })
147
-
148
- it('opens search modal with / key', async () => {
149
- await page.keyboard.press('/')
150
- await new Promise((r) => setTimeout(r, 200))
151
-
152
- const modal = await page.$('.search-modal-overlay')
153
- expect(modal).not.toBeNull()
154
-
155
- await page.screenshot({
156
- path: path.join(SCREENSHOT_DIR, 'new-search-modal.png'),
157
- fullPage: false,
158
- })
159
-
160
- // Close
161
- await page.keyboard.press('Escape')
162
- await new Promise((r) => setTimeout(r, 200))
163
- })
164
-
165
- it('clicks a package in the tree and shows details', async () => {
166
- // Click the first package label in the tree
167
- const clicked = await page.evaluate(() => {
168
- const label = document.querySelector('.tree-label') as HTMLElement
169
- if (label) {
170
- label.click()
171
- return true
172
- }
173
- return false
174
- })
175
- expect(clicked).toBe(true)
176
-
177
- await new Promise((r) => setTimeout(r, 300))
178
-
179
- // Should show package details or class details
180
- const detailView = await page.$('.detail-view')
181
- expect(detailView).not.toBeNull()
182
-
183
- await page.screenshot({
184
- path: path.join(SCREENSHOT_DIR, 'new-package-details.png'),
185
- fullPage: false,
186
- })
187
- })
188
- })
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "module": "ESNext",
5
- "moduleResolution": "bundler",
6
- "strict": true,
7
- "jsx": "preserve",
8
- "resolveJsonModule": true,
9
- "isolatedModules": true,
10
- "esModuleInterop": true,
11
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
12
- "skipLibCheck": true,
13
- "noEmit": true,
14
- "paths": {
15
- "@/*": ["./src/*"]
16
- }
17
- },
18
- "include": ["src/**/*.ts", "src/**/*.vue"],
19
- "exclude": ["node_modules", "dist"]
20
- }
@@ -1,26 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import vue from '@vitejs/plugin-vue'
3
- import { resolve } from 'path'
4
-
5
- export default defineConfig({
6
- plugins: [vue()],
7
- define: {
8
- 'process.env.NODE_ENV': JSON.stringify('production'),
9
- },
10
- build: {
11
- lib: {
12
- entry: resolve(__dirname, 'src/app.ts'),
13
- name: 'LutamlUmlSpa',
14
- formats: ['iife'],
15
- fileName: () => 'app.iife.js',
16
- },
17
- rollupOptions: {
18
- external: [],
19
- output: {
20
- assetFileNames: 'style.[ext]',
21
- },
22
- },
23
- outDir: 'dist',
24
- emptyOutDir: true,
25
- },
26
- })
@@ -1,8 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
-
3
- export default defineConfig({
4
- test: {
5
- testTimeout: 30000,
6
- hookTimeout: 30000,
7
- },
8
- })
@@ -1,160 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Lutaml
4
- module Cli
5
- # ElementIdentifier parses and manages element references
6
- #
7
- # Provides a unified syntax for referring to UML elements:
8
- # - "package:ModelRoot::Core"
9
- # - "class:ModelRoot::Core::Building"
10
- # - "diagram:ClassDiagram1"
11
- # - "attribute:ModelRoot::Core::Building::name"
12
- #
13
- # Supports auto-detection when type prefix is omitted.
14
- #
15
- # @example Parse an identifier with explicit type
16
- # id = ElementIdentifier.parse("class:Building")
17
- # id.type # => :class
18
- # id.path # => "Building"
19
- #
20
- # @example Parse an identifier with auto-detection
21
- # id = ElementIdentifier.parse("ModelRoot::Core::Building")
22
- # id.type # => :class (auto-detected from pattern)
23
- # id.path # => "ModelRoot::Core::Building"
24
- class ElementIdentifier
25
- attr_reader :type, :path
26
-
27
- # Parse an element identifier string
28
- #
29
- # @param identifier [String] Element identifier in format "type:path"
30
- # or just "path"
31
- # @return [ElementIdentifier] Parsed identifier
32
- # @raise [ArgumentError] If identifier is invalid or type is not
33
- # registered
34
- def self.parse(identifier) # rubocop:disable Metrics/MethodLength
35
- if identifier.nil? || identifier.empty?
36
- raise ArgumentError,
37
- "Identifier cannot be nil or empty"
38
- end
39
-
40
- if identifier.include?(":")
41
- type, path = identifier.split(":", 2)
42
- type_sym = type.to_sym
43
-
44
- unless ResourceRegistry.type_registered?(type_sym)
45
- raise ArgumentError, "Unknown element type: #{type}. " \
46
- "Valid types: " \
47
- "#{ResourceRegistry.types.join(', ')}"
48
- end
49
-
50
- new(type_sym, path)
51
- else
52
- # Auto-detect type from pattern
53
- detected_type = detect_type(identifier)
54
- new(detected_type, identifier)
55
- end
56
- end
57
-
58
- # Initialize an identifier
59
- #
60
- # @param type [Symbol] Element type
61
- # @param path [String] Element path/name
62
- def initialize(type, path)
63
- @type = type
64
- @path = path
65
- end
66
-
67
- # Get a human-readable string representation
68
- #
69
- # @return [String] String representation
70
- def to_s
71
- "#{type}:#{path}"
72
- end
73
-
74
- # Check if this identifier has an explicit type prefix
75
- #
76
- # @param identifier [String] Identifier string
77
- # @return [Boolean] True if has explicit type prefix
78
- def self.has_type_prefix?(identifier)
79
- identifier.include?(":") &&
80
- ResourceRegistry.type_registered?(identifier.split(":",
81
- 2).first.to_sym)
82
- end
83
-
84
- # Detect element type from identifier pattern
85
- #
86
- # Uses heuristics to determine type:
87
- # - Multiple :: separators → likely a class
88
- # - Starts with uppercase → likely a class or package
89
- # - Contains "Diagram" → likely a diagram
90
- # - Otherwise → package (safest default)
91
- #
92
- # @param identifier [String] Identifier without type prefix
93
- # @return [Symbol] Detected type
94
- def self.detect_type(identifier) # rubocop:disable Metrics/MethodLength
95
- # Check for diagram patterns
96
- return :diagram if identifier.match?(/diagram/i)
97
-
98
- # Count package separators
99
- separator_count = identifier.scan("::").size
100
-
101
- case separator_count
102
- when 0
103
- # No separators - single name
104
- # Could be package, class, or diagram
105
- if identifier.match?(/^[A-Z]/)
106
- # Starts with uppercase - likely a class or package name
107
- # Default to package as it's more general
108
- :package
109
- else
110
- # Lowercase start - could be attribute or diagram name
111
- :diagram
112
- end
113
- when 1..Float::INFINITY
114
- # One or more separators - likely qualified class name
115
- # e.g., Package::Class or ModelRoot::Package::Class
116
- :class
117
- else
118
- # Default
119
- :package
120
- end
121
- end
122
-
123
- # Check if identifier is a qualified name (contains ::)
124
- #
125
- # @return [Boolean] True if qualified
126
- def qualified?
127
- @path.include?("::")
128
- end
129
-
130
- # Get the simple name (last component after ::)
131
- #
132
- # @return [String] Simple name
133
- def simple_name
134
- qualified? ? @path.split("::").last : @path
135
- end
136
-
137
- # Get the parent path (everything before last ::)
138
- #
139
- # @return [String, nil] Parent path or nil if not qualified
140
- def parent_path
141
- return nil unless qualified?
142
-
143
- parts = @path.split("::")
144
- parts[0...-1].join("::")
145
- end
146
-
147
- # Convert to hash representation
148
- #
149
- # @return [Hash] Hash with type and path keys
150
- def to_h
151
- {
152
- type: @type,
153
- path: @path,
154
- simple_name: simple_name,
155
- qualified: qualified?,
156
- }
157
- end
158
- end
159
- end
160
- end