{"pviz_slice":true,"schema_version":"pviz-slice@v1","tool":"hub_summary","generated_at":"2026-11-03T17:29:54.339952+00:00","bundle":{"path":"/b/bundle.json","repo":"bookstack","node_count":2276,"edge_count":7744},"params":{"command":"hub-summary","top_n":15,"top_reason_n":5},"result":{"schema":"pviz.slice.hub_summary.v1","totals":{"nodes_seen":2276,"nodes_with_edges":1083,"nodes_with_language_facts":2151,"edges_seen":7744,"edges_counted":7744,"edges_skipped_missing_endpoint":0,"directories_with_edges":146,"languages_with_edges":5,"rails_roles_with_edges":0,"language_role_groups_with_edges":5,"reasons":12},"node_hubs":{"by_outgoing_edges":[{"node":"resources/js/components/index.ts","directory":"resources/js/components","loc":67,"incoming":7,"outgoing":67,"total":74,"reasons":{"reexport":67,"import":7},"reasons_total":2,"reasons_truncated":false,"language":"ts"},{"node":"routes/web.php","directory":"routes","loc":297,"incoming":0,"outgoing":64,"total":64,"reasons":{"php_type_ref_resolved":54,"php_import_internal":10},"reasons_total":2,"reasons_truncated":false,"language":"php","language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Entity.php","directory":"app/Entities/Models","loc":272,"incoming":147,"outgoing":63,"total":210,"reasons":{"php_type_ref_resolved":87,"php_import_internal":86,"php_call_resolved":26,"php_implements_resolved":6,"php_extends_resolved":4},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":36,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Exports/ZipExports/ZipImportRunner.php","directory":"app/Exports/ZipExports","loc":294,"incoming":7,"outgoing":57,"total":64,"reasons":{"php_type_ref_resolved":26,"php_import_internal":25,"php_call_resolved":13},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":13,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Controllers/PageController.php","directory":"app/Entities/Controllers","loc":303,"incoming":1,"outgoing":56,"total":57,"reasons":{"php_type_ref_resolved":21,"php_import_internal":20,"php_call_resolved":15,"php_extends_resolved":1},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":21,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Repos/PageRepo.php","directory":"app/Entities/Repos","loc":219,"incoming":39,"outgoing":54,"total":93,"reasons":{"php_type_ref_resolved":37,"php_import_internal":35,"php_call_resolved":21},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":11,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Controllers/BookController.php","directory":"app/Entities/Controllers","loc":185,"incoming":1,"outgoing":47,"total":48,"reasons":{"php_import_internal":17,"php_type_ref_resolved":17,"php_call_resolved":13,"php_extends_resolved":1},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":12,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Tools/PageContent.php","directory":"app/Entities/Tools","loc":307,"incoming":38,"outgoing":45,"total":83,"reasons":{"php_type_ref_resolved":31,"php_import_internal":28,"php_call_resolved":24},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":18,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Access/Oidc/OidcService.php","directory":"app/Access/Oidc","loc":213,"incoming":3,"outgoing":43,"total":46,"reasons":{"php_type_ref_resolved":20,"php_call_resolved":14,"php_import_internal":12},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":11,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Exports/ImportRepo.php","directory":"app/Exports","loc":112,"incoming":6,"outgoing":43,"total":49,"reasons":{"php_import_internal":20,"php_type_ref_resolved":19,"php_call_resolved":10},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":7,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"tests/User/UserManagementTest.php","directory":"tests/User","loc":348,"incoming":0,"outgoing":43,"total":43,"reasons":{"php_import_internal":19,"php_type_ref_resolved":19,"php_call_resolved":4,"php_extends_resolved":1},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":20,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Controllers/ChapterController.php","directory":"app/Entities/Controllers","loc":178,"incoming":1,"outgoing":42,"total":43,"reasons":{"php_import_internal":16,"php_type_ref_resolved":16,"php_call_resolved":10,"php_extends_resolved":1},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":13,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Tools/TrashCan.php","directory":"app/Entities/Tools","loc":260,"incoming":31,"outgoing":42,"total":73,"reasons":{"php_type_ref_resolved":28,"php_import_internal":27,"php_call_resolved":18},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":18,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Repos/BaseRepo.php","directory":"app/Entities/Repos","loc":120,"incoming":17,"outgoing":40,"total":57,"reasons":{"php_type_ref_resolved":22,"php_import_internal":19,"php_call_resolved":16},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":7,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Tools/Cloner.php","directory":"app/Entities/Tools","loc":135,"incoming":11,"outgoing":38,"total":49,"reasons":{"php_import_internal":18,"php_type_ref_resolved":17,"php_call_resolved":14},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":12,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]}],"by_incoming_edges":[{"node":"tests/TestCase.php","directory":"tests","loc":221,"incoming":560,"outgoing":23,"total":583,"reasons":{"php_type_ref_resolved":164,"php_extends_resolved":153,"php_import_internal":153,"php_call_resolved":112,"php_uses_resolved":1},"reasons_total":5,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":20,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Users/Models/User.php","directory":"app/Users/Models","loc":191,"incoming":261,"outgoing":32,"total":293,"reasons":{"php_import_internal":133,"php_type_ref_resolved":133,"php_call_resolved":24,"php_implements_resolved":2,"php_extends_resolved":1},"reasons_total":5,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":26,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Http/Controller.php","directory":"app/Http","loc":114,"incoming":223,"outgoing":16,"total":239,"reasons":{"php_call_resolved":68,"php_type_ref_resolved":60,"php_import_internal":58,"php_extends_resolved":53},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":17,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Page.php","directory":"app/Entities/Models","loc":89,"incoming":189,"outgoing":14,"total":203,"reasons":{"php_import_internal":102,"php_type_ref_resolved":89,"php_call_resolved":11,"php_extends_resolved":1},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":11,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Book.php","directory":"app/Entities/Models","loc":61,"incoming":163,"outgoing":23,"total":186,"reasons":{"php_import_internal":89,"php_type_ref_resolved":85,"php_call_resolved":7,"php_implements_resolved":3,"php_extends_resolved":1},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":10,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"resources/js/wysiwyg/lexical/core/index.ts","directory":"resources/js/wysiwyg/lexical/core","loc":194,"incoming":161,"outgoing":18,"total":179,"reasons":{"import":137,"reexport":20,"ts:extends":12,"ts:constructs":9,"ts:implements":1},"reasons_total":5,"reasons_truncated":false,"language":"ts"},{"node":"app/Permissions/Permission.php","directory":"app/Permissions","loc":107,"incoming":150,"outgoing":0,"total":150,"reasons":{"php_type_ref_resolved":75,"php_import_internal":72,"php_call_resolved":3},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":2,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Entity.php","directory":"app/Entities/Models","loc":272,"incoming":147,"outgoing":63,"total":210,"reasons":{"php_type_ref_resolved":87,"php_import_internal":86,"php_call_resolved":26,"php_implements_resolved":6,"php_extends_resolved":4},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":36,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/App/helpers.php","directory":"app/App","loc":52,"incoming":146,"outgoing":18,"total":164,"reasons":{"php_call_resolved":148,"php_import_internal":8,"php_type_ref_resolved":8},"reasons_total":3,"reasons_truncated":false,"language":"php","method_count":6,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"resources/js/components/component.js","directory":"resources/js/components","loc":18,"incoming":135,"outgoing":0,"total":135,"reasons":{"import":68,"ts:extends":67},"reasons_total":2,"reasons_truncated":false,"language":"js","declared_type_count":1,"language_fact_keys":["method_symbols"]},{"node":"app/Activity/ActivityType.php","directory":"app/Activity","loc":64,"incoming":126,"outgoing":0,"total":126,"reasons":{"php_type_ref_resolved":61,"php_import_internal":60,"php_call_resolved":5},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":1,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Chapter.php","directory":"app/Entities/Models","loc":42,"incoming":111,"outgoing":13,"total":124,"reasons":{"php_import_internal":57,"php_type_ref_resolved":57,"php_call_resolved":6,"php_implements_resolved":2,"php_extends_resolved":1},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":4,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/App/Model.php","directory":"app/App","loc":19,"incoming":98,"outgoing":0,"total":98,"reasons":{"php_import_internal":37,"php_type_ref_resolved":36,"php_extends_resolved":20,"php_call_resolved":5},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":2,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Users/Models/Role.php","directory":"app/Users/Models","loc":72,"incoming":94,"outgoing":14,"total":108,"reasons":{"php_type_ref_resolved":43,"php_import_internal":42,"php_call_resolved":21,"php_extends_resolved":1,"php_implements_resolved":1},"reasons_total":5,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":10,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/View/SimpleViewBlock.php","directory":"app/View","loc":20,"incoming":90,"outgoing":2,"total":92,"reasons":{"php_extends_resolved":31,"php_type_ref_resolved":31,"php_import_internal":30},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":3,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]}],"by_total_edges":[{"node":"tests/TestCase.php","directory":"tests","loc":221,"incoming":560,"outgoing":23,"total":583,"reasons":{"php_type_ref_resolved":164,"php_extends_resolved":153,"php_import_internal":153,"php_call_resolved":112,"php_uses_resolved":1},"reasons_total":5,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":20,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Users/Models/User.php","directory":"app/Users/Models","loc":191,"incoming":261,"outgoing":32,"total":293,"reasons":{"php_import_internal":133,"php_type_ref_resolved":133,"php_call_resolved":24,"php_implements_resolved":2,"php_extends_resolved":1},"reasons_total":5,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":26,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Http/Controller.php","directory":"app/Http","loc":114,"incoming":223,"outgoing":16,"total":239,"reasons":{"php_call_resolved":68,"php_type_ref_resolved":60,"php_import_internal":58,"php_extends_resolved":53},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":17,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Entity.php","directory":"app/Entities/Models","loc":272,"incoming":147,"outgoing":63,"total":210,"reasons":{"php_type_ref_resolved":87,"php_import_internal":86,"php_call_resolved":26,"php_implements_resolved":6,"php_extends_resolved":4},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":36,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Page.php","directory":"app/Entities/Models","loc":89,"incoming":189,"outgoing":14,"total":203,"reasons":{"php_import_internal":102,"php_type_ref_resolved":89,"php_call_resolved":11,"php_extends_resolved":1},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":11,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Book.php","directory":"app/Entities/Models","loc":61,"incoming":163,"outgoing":23,"total":186,"reasons":{"php_import_internal":89,"php_type_ref_resolved":85,"php_call_resolved":7,"php_implements_resolved":3,"php_extends_resolved":1},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":10,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"resources/js/wysiwyg/lexical/core/index.ts","directory":"resources/js/wysiwyg/lexical/core","loc":194,"incoming":161,"outgoing":18,"total":179,"reasons":{"import":137,"reexport":20,"ts:extends":12,"ts:constructs":9,"ts:implements":1},"reasons_total":5,"reasons_truncated":false,"language":"ts"},{"node":"app/App/helpers.php","directory":"app/App","loc":52,"incoming":146,"outgoing":18,"total":164,"reasons":{"php_call_resolved":148,"php_import_internal":8,"php_type_ref_resolved":8},"reasons_total":3,"reasons_truncated":false,"language":"php","method_count":6,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Permissions/Permission.php","directory":"app/Permissions","loc":107,"incoming":150,"outgoing":0,"total":150,"reasons":{"php_type_ref_resolved":75,"php_import_internal":72,"php_call_resolved":3},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":2,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"resources/js/components/component.js","directory":"resources/js/components","loc":18,"incoming":135,"outgoing":0,"total":135,"reasons":{"import":68,"ts:extends":67},"reasons_total":2,"reasons_truncated":false,"language":"js","declared_type_count":1,"language_fact_keys":["method_symbols"]},{"node":"app/Activity/ActivityType.php","directory":"app/Activity","loc":64,"incoming":126,"outgoing":0,"total":126,"reasons":{"php_type_ref_resolved":61,"php_import_internal":60,"php_call_resolved":5},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":1,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Models/Chapter.php","directory":"app/Entities/Models","loc":42,"incoming":111,"outgoing":13,"total":124,"reasons":{"php_import_internal":57,"php_type_ref_resolved":57,"php_call_resolved":6,"php_implements_resolved":2,"php_extends_resolved":1},"reasons_total":6,"reasons_truncated":true,"language":"php","declared_type_count":1,"method_count":4,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Users/Models/Role.php","directory":"app/Users/Models","loc":72,"incoming":94,"outgoing":14,"total":108,"reasons":{"php_type_ref_resolved":43,"php_import_internal":42,"php_call_resolved":21,"php_extends_resolved":1,"php_implements_resolved":1},"reasons_total":5,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":10,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/App/Model.php","directory":"app/App","loc":19,"incoming":98,"outgoing":0,"total":98,"reasons":{"php_import_internal":37,"php_type_ref_resolved":36,"php_extends_resolved":20,"php_call_resolved":5},"reasons_total":4,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":2,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]},{"node":"app/Entities/Repos/PageRepo.php","directory":"app/Entities/Repos","loc":219,"incoming":39,"outgoing":54,"total":93,"reasons":{"php_type_ref_resolved":37,"php_import_internal":35,"php_call_resolved":21},"reasons_total":3,"reasons_truncated":false,"language":"php","declared_type_count":1,"method_count":11,"language_fact_keys":["attributes","classes","classes_fq","extends_fq","functions","implements_fq","imports","method_symbols","methods","namespace","parse_status","partial_types","type_kinds","uses_fq"]}]},"node_hubs_bounds":{"by_outgoing_edges_total":1083,"by_outgoing_edges_truncated":true,"by_incoming_edges_total":1083,"by_incoming_edges_truncated":true,"by_total_edges_total":1083,"by_total_edges_truncated":true},"directory_hubs":{"by_outgoing_edges":[{"directory":"app/Entities/Controllers","incoming":12,"outgoing":343,"total":355,"internal_edges":0,"external_edges":355,"reasons":{"php_type_ref_resolved":132,"php_import_internal":127,"php_call_resolved":84,"php_extends_resolved":12},"reasons_total":4,"reasons_truncated":false,"languages":{"php":12}},{"directory":"app/Entities/Tools","incoming":240,"outgoing":332,"total":572,"internal_edges":24,"external_edges":524,"reasons":{"php_type_ref_resolved":219,"php_import_internal":205,"php_call_resolved":148},"reasons_total":3,"reasons_truncated":false,"languages":{"php":24}},{"directory":"resources/js/components","incoming":223,"outgoing":286,"total":509,"internal_edges":215,"external_edges":79,"reasons":{"import":234,"reexport":134,"ts:extends":134,"ts:constructs":4,"dynamic_import":3},"reasons_total":5,"reasons_truncated":false,"languages":{"js":50,"ts":19}},{"directory":"tests/Api","incoming":72,"outgoing":238,"total":310,"internal_edges":60,"external_edges":190,"reasons":{"php_type_ref_resolved":110,"php_import_internal":72,"php_call_resolved":65,"php_uses_resolved":43,"php_extends_resolved":20},"reasons_total":5,"reasons_truncated":false,"languages":{"php":21}},{"directory":"app/Exports/ZipExports","incoming":97,"outgoing":218,"total":315,"internal_edges":27,"external_edges":261,"reasons":{"php_type_ref_resolved":131,"php_import_internal":106,"php_call_resolved":78},"reasons_total":3,"reasons_truncated":false,"languages":{"php":11}},{"directory":"app/View/ViewBlocks","incoming":35,"outgoing":208,"total":243,"internal_edges":0,"external_edges":243,"reasons":{"php_type_ref_resolved":95,"php_import_internal":79,"php_extends_resolved":35,"php_call_resolved":34},"reasons_total":4,"reasons_truncated":false,"languages":{"php":35}},{"directory":"app/Access/Controllers","incoming":24,"outgoing":201,"total":225,"internal_edges":12,"external_edges":201,"reasons":{"php_type_ref_resolved":81,"php_import_internal":67,"php_call_resolved":57,"php_extends_resolved":12,"php_uses_resolved":8},"reasons_total":5,"reasons_truncated":false,"languages":{"php":14}},{"directory":"app/Entities/Repos","incoming":119,"outgoing":184,"total":303,"internal_edges":10,"external_edges":283,"reasons":{"php_type_ref_resolved":118,"php_import_internal":111,"php_call_resolved":74},"reasons_total":3,"reasons_truncated":false,"languages":{"php":7}},{"directory":"app/Entities/Models","incoming":796,"outgoing":178,"total":974,"internal_edges":57,"external_edges":860,"reasons":{"php_type_ref_resolved":440,"php_import_internal":429,"php_call_resolved":61,"php_implements_resolved":23,"php_extends_resolved":14},"reasons_total":6,"reasons_truncated":true,"languages":{"php":19}},{"directory":"tests/Entity","incoming":0,"outgoing":170,"total":170,"internal_edges":0,"external_edges":170,"reasons":{"php_import_internal":69,"php_type_ref_resolved":56,"php_call_resolved":27,"php_extends_resolved":18},"reasons_total":4,"reasons_truncated":false,"languages":{"php":18}},{"directory":"app/Uploads/Controllers","incoming":8,"outgoing":143,"total":151,"internal_edges":0,"external_edges":151,"reasons":{"php_type_ref_resolved":54,"php_import_internal":52,"php_call_resolved":39,"php_extends_resolved":6},"reasons_total":4,"reasons_truncated":false,"languages":{"php":6}},{"directory":"app/Access","incoming":154,"outgoing":138,"total":292,"internal_edges":29,"external_edges":234,"reasons":{"php_type_ref_resolved":121,"php_import_internal":95,"php_call_resolved":70,"php_extends_resolved":5,"php_implements_resolved":1},"reasons_total":5,"reasons_truncated":false,"languages":{"php":14}},{"directory":"tests/Activity","incoming":0,"outgoing":137,"total":137,"internal_edges":0,"external_edges":137,"reasons":{"php_import_internal":52,"php_type_ref_resolved":51,"php_call_resolved":20,"php_extends_resolved":12,"php_uses_resolved":2},"reasons_total":5,"reasons_truncated":false,"languages":{"php":12}},{"directory":"app/Users/Controllers","incoming":10,"outgoing":136,"total":146,"internal_edges":0,"external_edges":146,"reasons":{"php_type_ref_resolved":52,"php_import_internal":49,"php_call_resolved":37,"php_extends_resolved":8},"reasons_total":4,"reasons_truncated":false,"languages":{"php":8}},{"directory":"tests/Auth","incoming":0,"outgoing":134,"total":134,"internal_edges":0,"external_edges":134,"reasons":{"php_import_internal":52,"php_type_ref_resolved":49,"php_call_resolved":21,"php_extends_resolved":12},"reasons_total":4,"reasons_truncated":false,"languages":{"php":12}}],"by_incoming_edges":[{"directory":"app/Entities/Models","incoming":796,"outgoing":178,"total":974,"internal_edges":57,"external_edges":860,"reasons":{"php_type_ref_resolved":440,"php_import_internal":429,"php_call_resolved":61,"php_implements_resolved":23,"php_extends_resolved":14},"reasons_total":6,"reasons_truncated":true,"languages":{"php":19}},{"directory":"tests","incoming":562,"outgoing":83,"total":645,"internal_edges":30,"external_edges":585,"reasons":{"php_type_ref_resolved":188,"php_import_internal":166,"php_extends_resolved":163,"php_call_resolved":126,"php_uses_resolved":2},"reasons_total":5,"reasons_truncated":false,"languages":{"php":12}},{"directory":"app/Users/Models","incoming":385,"outgoing":47,"total":432,"internal_edges":3,"external_edges":426,"reasons":{"php_type_ref_resolved":188,"php_import_internal":186,"php_call_resolved":45,"php_implements_resolved":7,"php_uses_resolved":4},"reasons_total":6,"reasons_truncated":true,"languages":{"php":4}},{"directory":"app/Http","incoming":329,"outgoing":48,"total":377,"internal_edges":8,"external_edges":361,"reasons":{"php_type_ref_resolved":119,"php_call_resolved":93,"php_import_internal":91,"php_extends_resolved":74},"reasons_total":4,"reasons_truncated":false,"languages":{"php":8}},{"directory":"app/App","incoming":312,"outgoing":53,"total":365,"internal_edges":14,"external_edges":337,"reasons":{"php_call_resolved":182,"php_type_ref_resolved":78,"php_import_internal":75,"php_extends_resolved":28,"php_implements_resolved":2},"reasons_total":5,"reasons_truncated":false,"languages":{"php":10}},{"directory":"app/Exceptions","incoming":299,"outgoing":47,"total":346,"internal_edges":39,"external_edges":268,"reasons":{"php_type_ref_resolved":145,"php_import_internal":130,"php_call_resolved":37,"php_extends_resolved":26,"php_implements_resolved":8},"reasons_total":5,"reasons_truncated":false,"languages":{"php":32}},{"directory":"resources/js/wysiwyg/lexical/core","incoming":287,"outgoing":117,"total":404,"internal_edges":77,"external_edges":250,"reasons":{"import":349,"reexport":30,"ts:extends":13,"ts:constructs":11,"ts:implements":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ts":14}},{"directory":"app/Util","incoming":265,"outgoing":22,"total":287,"internal_edges":12,"external_edges":263,"reasons":{"php_type_ref_resolved":102,"php_call_resolved":95,"php_import_internal":90},"reasons_total":3,"reasons_truncated":false,"languages":{"php":17}},{"directory":"app/Uploads","incoming":259,"outgoing":108,"total":367,"internal_edges":26,"external_edges":315,"reasons":{"php_type_ref_resolved":157,"php_import_internal":128,"php_call_resolved":76,"php_extends_resolved":2,"php_implements_resolved":2},"reasons_total":6,"reasons_truncated":true,"languages":{"php":12}},{"directory":"app/Permissions","incoming":244,"outgoing":118,"total":362,"internal_edges":22,"external_edges":318,"reasons":{"php_type_ref_resolved":166,"php_import_internal":142,"php_call_resolved":50,"php_extends_resolved":4},"reasons_total":4,"reasons_truncated":false,"languages":{"php":11}},{"directory":"app/Entities/Tools","incoming":240,"outgoing":332,"total":572,"internal_edges":24,"external_edges":524,"reasons":{"php_type_ref_resolved":219,"php_import_internal":205,"php_call_resolved":148},"reasons_total":3,"reasons_truncated":false,"languages":{"php":24}},{"directory":"app/Entities/Queries","incoming":236,"outgoing":77,"total":313,"internal_edges":14,"external_edges":285,"reasons":{"php_type_ref_resolved":124,"php_import_internal":104,"php_call_resolved":77,"php_implements_resolved":8},"reasons_total":4,"reasons_truncated":false,"languages":{"php":10}},{"directory":"app/Activity/Models","incoming":226,"outgoing":62,"total":288,"internal_edges":7,"external_edges":274,"reasons":{"php_type_ref_resolved":128,"php_import_internal":124,"php_implements_resolved":16,"php_call_resolved":14,"php_extends_resolved":5},"reasons_total":6,"reasons_truncated":true,"languages":{"php":12}},{"directory":"resources/js/components","incoming":223,"outgoing":286,"total":509,"internal_edges":215,"external_edges":79,"reasons":{"import":234,"reexport":134,"ts:extends":134,"ts:constructs":4,"dynamic_import":3},"reasons_total":5,"reasons_truncated":false,"languages":{"js":50,"ts":19}},{"directory":"app/Activity","incoming":183,"outgoing":72,"total":255,"internal_edges":1,"external_edges":253,"reasons":{"php_type_ref_resolved":113,"php_import_internal":111,"php_call_resolved":31},"reasons_total":3,"reasons_truncated":false,"languages":{"php":6}}],"by_total_edges":[{"directory":"app/Entities/Models","incoming":796,"outgoing":178,"total":974,"internal_edges":57,"external_edges":860,"reasons":{"php_type_ref_resolved":440,"php_import_internal":429,"php_call_resolved":61,"php_implements_resolved":23,"php_extends_resolved":14},"reasons_total":6,"reasons_truncated":true,"languages":{"php":19}},{"directory":"tests","incoming":562,"outgoing":83,"total":645,"internal_edges":30,"external_edges":585,"reasons":{"php_type_ref_resolved":188,"php_import_internal":166,"php_extends_resolved":163,"php_call_resolved":126,"php_uses_resolved":2},"reasons_total":5,"reasons_truncated":false,"languages":{"php":12}},{"directory":"app/Entities/Tools","incoming":240,"outgoing":332,"total":572,"internal_edges":24,"external_edges":524,"reasons":{"php_type_ref_resolved":219,"php_import_internal":205,"php_call_resolved":148},"reasons_total":3,"reasons_truncated":false,"languages":{"php":24}},{"directory":"resources/js/components","incoming":223,"outgoing":286,"total":509,"internal_edges":215,"external_edges":79,"reasons":{"import":234,"reexport":134,"ts:extends":134,"ts:constructs":4,"dynamic_import":3},"reasons_total":5,"reasons_truncated":false,"languages":{"js":50,"ts":19}},{"directory":"app/Users/Models","incoming":385,"outgoing":47,"total":432,"internal_edges":3,"external_edges":426,"reasons":{"php_type_ref_resolved":188,"php_import_internal":186,"php_call_resolved":45,"php_implements_resolved":7,"php_uses_resolved":4},"reasons_total":6,"reasons_truncated":true,"languages":{"php":4}},{"directory":"resources/js/wysiwyg/lexical/core","incoming":287,"outgoing":117,"total":404,"internal_edges":77,"external_edges":250,"reasons":{"import":349,"reexport":30,"ts:extends":13,"ts:constructs":11,"ts:implements":1},"reasons_total":5,"reasons_truncated":false,"languages":{"ts":14}},{"directory":"app/Http","incoming":329,"outgoing":48,"total":377,"internal_edges":8,"external_edges":361,"reasons":{"php_type_ref_resolved":119,"php_call_resolved":93,"php_import_internal":91,"php_extends_resolved":74},"reasons_total":4,"reasons_truncated":false,"languages":{"php":8}},{"directory":"app/Uploads","incoming":259,"outgoing":108,"total":367,"internal_edges":26,"external_edges":315,"reasons":{"php_type_ref_resolved":157,"php_import_internal":128,"php_call_resolved":76,"php_extends_resolved":2,"php_implements_resolved":2},"reasons_total":6,"reasons_truncated":true,"languages":{"php":12}},{"directory":"app/App","incoming":312,"outgoing":53,"total":365,"internal_edges":14,"external_edges":337,"reasons":{"php_call_resolved":182,"php_type_ref_resolved":78,"php_import_internal":75,"php_extends_resolved":28,"php_implements_resolved":2},"reasons_total":5,"reasons_truncated":false,"languages":{"php":10}},{"directory":"app/Permissions","incoming":244,"outgoing":118,"total":362,"internal_edges":22,"external_edges":318,"reasons":{"php_type_ref_resolved":166,"php_import_internal":142,"php_call_resolved":50,"php_extends_resolved":4},"reasons_total":4,"reasons_truncated":false,"languages":{"php":11}},{"directory":"app/Entities/Controllers","incoming":12,"outgoing":343,"total":355,"internal_edges":0,"external_edges":355,"reasons":{"php_type_ref_resolved":132,"php_import_internal":127,"php_call_resolved":84,"php_extends_resolved":12},"reasons_total":4,"reasons_truncated":false,"languages":{"php":12}},{"directory":"app/Exceptions","incoming":299,"outgoing":47,"total":346,"internal_edges":39,"external_edges":268,"reasons":{"php_type_ref_resolved":145,"php_import_internal":130,"php_call_resolved":37,"php_extends_resolved":26,"php_implements_resolved":8},"reasons_total":5,"reasons_truncated":false,"languages":{"php":32}},{"directory":"app/Exports/ZipExports","incoming":97,"outgoing":218,"total":315,"internal_edges":27,"external_edges":261,"reasons":{"php_type_ref_resolved":131,"php_import_internal":106,"php_call_resolved":78},"reasons_total":3,"reasons_truncated":false,"languages":{"php":11}},{"directory":"app/Entities/Queries","incoming":236,"outgoing":77,"total":313,"internal_edges":14,"external_edges":285,"reasons":{"php_type_ref_resolved":124,"php_import_internal":104,"php_call_resolved":77,"php_implements_resolved":8},"reasons_total":4,"reasons_truncated":false,"languages":{"php":10}},{"directory":"tests/Api","incoming":72,"outgoing":238,"total":310,"internal_edges":60,"external_edges":190,"reasons":{"php_type_ref_resolved":110,"php_import_internal":72,"php_call_resolved":65,"php_uses_resolved":43,"php_extends_resolved":20},"reasons_total":5,"reasons_truncated":false,"languages":{"php":21}}]},"directory_hubs_bounds":{"by_outgoing_edges_total":146,"by_outgoing_edges_truncated":true,"by_incoming_edges_total":146,"by_incoming_edges_truncated":true,"by_total_edges_total":146,"by_total_edges_truncated":true},"language_hubs":{"by_language_nodes":[{"value":"php","count":1839},{"value":"ts","count":256},{"value":"js","count":121},{"value":"svg","count":56},{"value":"mjs","count":4}],"by_language_outgoing_edges":[{"value":"php","count":6210},{"value":"ts","count":1364},{"value":"js","count":165},{"value":"mjs","count":5}],"by_language_incoming_edges":[{"value":"php","count":6210},{"value":"ts","count":1260},{"value":"js","count":215},{"value":"svg","count":59}],"by_rails_role_nodes":[],"by_rails_role_outgoing_edges":[],"by_rails_role_incoming_edges":[],"by_language_role_nodes":[],"by_language_role_outgoing_edges":[{"value":"php","count":6210},{"value":"ts","count":1364},{"value":"js","count":165},{"value":"mjs","count":5}],"by_language_role_incoming_edges":[{"value":"php","count":6210},{"value":"ts","count":1260},{"value":"js","count":215},{"value":"svg","count":59}],"language_reasons":{"js":{"import":209,"ts:extends":116,"reexport":49,"ts:constructs":6},"mjs":{"import":4,"ts:constructs":1},"php":{"php_type_ref_resolved":4940,"php_import_internal":4248,"php_call_resolved":2402,"php_extends_resolved":662,"php_implements_resolved":94},"svg":{"import":59},"ts":{"import":2206,"reexport":155,"ts:constructs":149,"ts:extends":100,"ts:implements":8}},"rails_role_reasons":{},"language_role_reasons":{"js":{"import":209,"ts:extends":116,"reexport":49,"ts:constructs":6},"mjs":{"import":4,"ts:constructs":1},"php":{"php_type_ref_resolved":4940,"php_import_internal":4248,"php_call_resolved":2402,"php_extends_resolved":662,"php_implements_resolved":94},"svg":{"import":59},"ts":{"import":2206,"reexport":155,"ts:constructs":149,"ts:extends":100,"ts:implements":8}}},"language_hubs_bounds":{"by_language_nodes_total":5,"by_language_nodes_truncated":false,"by_language_outgoing_edges_total":4,"by_language_outgoing_edges_truncated":false,"by_language_incoming_edges_total":4,"by_language_incoming_edges_truncated":false,"by_rails_role_nodes_total":0,"by_rails_role_nodes_truncated":false,"by_rails_role_outgoing_edges_total":0,"by_rails_role_outgoing_edges_truncated":false,"by_rails_role_incoming_edges_total":0,"by_rails_role_incoming_edges_truncated":false,"by_language_role_nodes_total":0,"by_language_role_nodes_truncated":false,"by_language_role_outgoing_edges_total":4,"by_language_role_outgoing_edges_truncated":false,"by_language_role_incoming_edges_total":4,"by_language_role_incoming_edges_truncated":false,"language_reasons_total":{"js":4,"mjs":2,"php":6,"svg":1,"ts":6},"language_reasons_truncated":{"js":false,"mjs":false,"php":true,"svg":false,"ts":true},"rails_role_reasons_total":{},"rails_role_reasons_truncated":{},"language_role_reasons_total":{"js":4,"mjs":2,"php":6,"svg":1,"ts":6},"language_role_reasons_truncated":{"js":false,"mjs":false,"php":true,"svg":false,"ts":true}},"reason_hubs":{"by_reason":[{"value":"php_type_ref_resolved","count":2470},{"value":"php_import_internal","count":2124},{"value":"import","count":1239},{"value":"php_call_resolved","count":1201},{"value":"php_extends_resolved","count":331},{"value":"ts:extends","count":108},{"value":"reexport","count":102},{"value":"ts:constructs","count":78},{"value":"php_implements_resolved","count":47},{"value":"php_uses_resolved","count":37},{"value":"ts:implements","count":4},{"value":"dynamic_import","count":3}]},"reason_hubs_bounds":{"by_reason_total":12,"by_reason_truncated":false}}}