{"total": {"lines":{"total":170908,"covered":85324,"skipped":0,"pct":49.92},"statements":{"total":170908,"covered":85324,"skipped":0,"pct":49.92},"functions":{"total":6995,"covered":3238,"skipped":0,"pct":46.29},"branches":{"total":20247,"covered":11578,"skipped":0,"pct":57.18},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/config/instance-config.js": {"lines":{"total":466,"covered":466,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":466,"covered":466,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/config/validate-config.js": {"lines":{"total":184,"covered":164,"skipped":0,"pct":89.13},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":184,"covered":164,"skipped":0,"pct":89.13},"branches":{"total":44,"covered":31,"skipped":0,"pct":70.45}} ,"/app/js/accessControl.js": {"lines":{"total":807,"covered":206,"skipped":0,"pct":25.52},"functions":{"total":40,"covered":13,"skipped":0,"pct":32.5},"statements":{"total":807,"covered":206,"skipped":0,"pct":25.52},"branches":{"total":41,"covered":19,"skipped":0,"pct":46.34}} ,"/app/js/adminListStore.js": {"lines":{"total":1032,"covered":93,"skipped":0,"pct":9.01},"functions":{"total":29,"covered":1,"skipped":0,"pct":3.44},"statements":{"total":1032,"covered":93,"skipped":0,"pct":9.01},"branches":{"total":8,"covered":2,"skipped":0,"pct":25}} ,"/app/js/app.js": {"lines":{"total":5134,"covered":1845,"skipped":0,"pct":35.93},"functions":{"total":435,"covered":40,"skipped":0,"pct":9.19},"statements":{"total":5134,"covered":1845,"skipped":0,"pct":35.93},"branches":{"total":119,"covered":60,"skipped":0,"pct":50.42}} ,"/app/js/applicationContext.js": {"lines":{"total":24,"covered":16,"skipped":0,"pct":66.66},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":24,"covered":16,"skipped":0,"pct":66.66},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} ,"/app/js/channelProfile.js": {"lines":{"total":5576,"covered":1261,"skipped":0,"pct":22.61},"functions":{"total":138,"covered":34,"skipped":0,"pct":24.63},"statements":{"total":5576,"covered":1261,"skipped":0,"pct":22.61},"branches":{"total":292,"covered":131,"skipped":0,"pct":44.86}} ,"/app/js/config.js": {"lines":{"total":170,"covered":151,"skipped":0,"pct":88.82},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":170,"covered":151,"skipped":0,"pct":88.82},"branches":{"total":15,"covered":12,"skipped":0,"pct":80}} ,"/app/js/constants.js": {"lines":{"total":523,"covered":473,"skipped":0,"pct":90.43},"functions":{"total":40,"covered":30,"skipped":0,"pct":75},"statements":{"total":523,"covered":473,"skipped":0,"pct":90.43},"branches":{"total":50,"covered":34,"skipped":0,"pct":68}} ,"/app/js/designSystem.js": {"lines":{"total":98,"covered":81,"skipped":0,"pct":82.65},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":98,"covered":81,"skipped":0,"pct":82.65},"branches":{"total":27,"covered":18,"skipped":0,"pct":66.66}} ,"/app/js/directMessagesStore.js": {"lines":{"total":336,"covered":170,"skipped":0,"pct":50.59},"functions":{"total":16,"covered":12,"skipped":0,"pct":75},"statements":{"total":336,"covered":170,"skipped":0,"pct":50.59},"branches":{"total":46,"covered":20,"skipped":0,"pct":43.47}} ,"/app/js/dmDecryptor.js": {"lines":{"total":651,"covered":453,"skipped":0,"pct":69.58},"functions":{"total":21,"covered":21,"skipped":0,"pct":100},"statements":{"total":651,"covered":453,"skipped":0,"pct":69.58},"branches":{"total":144,"covered":73,"skipped":0,"pct":50.69}} ,"/app/js/embedDiagnostics.js": {"lines":{"total":177,"covered":9,"skipped":0,"pct":5.08},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":177,"covered":9,"skipped":0,"pct":5.08},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}} ,"/app/js/gridHealth.js": {"lines":{"total":553,"covered":135,"skipped":0,"pct":24.41},"functions":{"total":20,"covered":5,"skipped":0,"pct":25},"statements":{"total":553,"covered":135,"skipped":0,"pct":24.41},"branches":{"total":34,"covered":6,"skipped":0,"pct":17.64}} ,"/app/js/gridHealthLogic.js": {"lines":{"total":134,"covered":113,"skipped":0,"pct":84.32},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":134,"covered":113,"skipped":0,"pct":84.32},"branches":{"total":48,"covered":42,"skipped":0,"pct":87.5}} ,"/app/js/hashChangeHandler.js": {"lines":{"total":138,"covered":118,"skipped":0,"pct":85.5},"functions":{"total":8,"covered":5,"skipped":0,"pct":62.5},"statements":{"total":138,"covered":118,"skipped":0,"pct":85.5},"branches":{"total":37,"covered":27,"skipped":0,"pct":72.97}} ,"/app/js/hashView.js": {"lines":{"total":35,"covered":7,"skipped":0,"pct":20},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":35,"covered":7,"skipped":0,"pct":20},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/historyView.js": {"lines":{"total":2546,"covered":258,"skipped":0,"pct":10.13},"functions":{"total":78,"covered":1,"skipped":0,"pct":1.28},"statements":{"total":2546,"covered":258,"skipped":0,"pct":10.13},"branches":{"total":12,"covered":5,"skipped":0,"pct":41.66}} ,"/app/js/lists.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/magnetShared.js": {"lines":{"total":423,"covered":316,"skipped":0,"pct":74.7},"functions":{"total":16,"covered":15,"skipped":0,"pct":93.75},"statements":{"total":423,"covered":316,"skipped":0,"pct":74.7},"branches":{"total":124,"covered":83,"skipped":0,"pct":66.93}} ,"/app/js/magnetUtils.js": {"lines":{"total":129,"covered":127,"skipped":0,"pct":98.44},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":129,"covered":127,"skipped":0,"pct":98.44},"branches":{"total":33,"covered":24,"skipped":0,"pct":72.72}} ,"/app/js/magnets.js": {"lines":{"total":96,"covered":13,"skipped":0,"pct":13.54},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":96,"covered":13,"skipped":0,"pct":13.54},"branches":{"total":7,"covered":7,"skipped":0,"pct":100}} ,"/app/js/nostrClientFacade.js": {"lines":{"total":21,"covered":21,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":21,"covered":21,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostrClientRegistry.js": {"lines":{"total":271,"covered":189,"skipped":0,"pct":69.74},"functions":{"total":18,"covered":13,"skipped":0,"pct":72.22},"statements":{"total":271,"covered":189,"skipped":0,"pct":69.74},"branches":{"total":63,"covered":46,"skipped":0,"pct":73.01}} ,"/app/js/nostrEventSchemas.js": {"lines":{"total":2912,"covered":2369,"skipped":0,"pct":81.35},"functions":{"total":54,"covered":48,"skipped":0,"pct":88.88},"statements":{"total":2912,"covered":2369,"skipped":0,"pct":81.35},"branches":{"total":536,"covered":259,"skipped":0,"pct":48.32}} ,"/app/js/nostrPublish.js": {"lines":{"total":252,"covered":143,"skipped":0,"pct":56.74},"functions":{"total":11,"covered":8,"skipped":0,"pct":72.72},"statements":{"total":252,"covered":143,"skipped":0,"pct":56.74},"branches":{"total":38,"covered":18,"skipped":0,"pct":47.36}} ,"/app/js/nostrToolsBootstrap.js": {"lines":{"total":699,"covered":497,"skipped":0,"pct":71.1},"functions":{"total":43,"covered":19,"skipped":0,"pct":44.18},"statements":{"total":699,"covered":497,"skipped":0,"pct":71.1},"branches":{"total":142,"covered":81,"skipped":0,"pct":57.04}} ,"/app/js/nostrViewEventsFacade.js": {"lines":{"total":27,"covered":27,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":27,"covered":27,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostrWatchHistoryFacade.js": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nwcSettings.js": {"lines":{"total":370,"covered":45,"skipped":0,"pct":12.16},"functions":{"total":24,"covered":0,"skipped":0,"pct":0},"statements":{"total":370,"covered":45,"skipped":0,"pct":12.16},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/playbackUtils.js": {"lines":{"total":102,"covered":91,"skipped":0,"pct":89.21},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":102,"covered":91,"skipped":0,"pct":89.21},"branches":{"total":16,"covered":2,"skipped":0,"pct":12.5}} ,"/app/js/r2.js": {"lines":{"total":245,"covered":140,"skipped":0,"pct":57.14},"functions":{"total":16,"covered":11,"skipped":0,"pct":68.75},"statements":{"total":245,"covered":140,"skipped":0,"pct":57.14},"branches":{"total":40,"covered":15,"skipped":0,"pct":37.5}} ,"/app/js/reactionCounter.js": {"lines":{"total":797,"covered":49,"skipped":0,"pct":6.14},"functions":{"total":23,"covered":0,"skipped":0,"pct":0},"statements":{"total":797,"covered":49,"skipped":0,"pct":6.14},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/relayManager.js": {"lines":{"total":771,"covered":385,"skipped":0,"pct":49.93},"functions":{"total":30,"covered":20,"skipped":0,"pct":66.66},"statements":{"total":771,"covered":385,"skipped":0,"pct":49.93},"branches":{"total":118,"covered":64,"skipped":0,"pct":54.23}} ,"/app/js/sidebarLoading.js": {"lines":{"total":33,"covered":4,"skipped":0,"pct":12.12},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":33,"covered":4,"skipped":0,"pct":12.12},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/subscriptions.js": {"lines":{"total":2406,"covered":1493,"skipped":0,"pct":62.05},"functions":{"total":87,"covered":58,"skipped":0,"pct":66.66},"statements":{"total":2406,"covered":1493,"skipped":0,"pct":62.05},"branches":{"total":386,"covered":172,"skipped":0,"pct":44.55}} ,"/app/js/urlHealthObserver.js": {"lines":{"total":67,"covered":25,"skipped":0,"pct":37.31},"functions":{"total":4,"covered":2,"skipped":0,"pct":50},"statements":{"total":67,"covered":25,"skipped":0,"pct":37.31},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} ,"/app/js/userBlocks.js": {"lines":{"total":2304,"covered":596,"skipped":0,"pct":25.86},"functions":{"total":63,"covered":21,"skipped":0,"pct":33.33},"statements":{"total":2304,"covered":596,"skipped":0,"pct":25.86},"branches":{"total":113,"covered":33,"skipped":0,"pct":29.2}} ,"/app/js/videoEventUtils.js": {"lines":{"total":117,"covered":14,"skipped":0,"pct":11.96},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":117,"covered":14,"skipped":0,"pct":11.96},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/viewCounter.js": {"lines":{"total":674,"covered":259,"skipped":0,"pct":38.42},"functions":{"total":28,"covered":13,"skipped":0,"pct":46.42},"statements":{"total":674,"covered":259,"skipped":0,"pct":38.42},"branches":{"total":58,"covered":15,"skipped":0,"pct":25.86}} ,"/app/js/watchHistoryDebug.js": {"lines":{"total":193,"covered":45,"skipped":0,"pct":23.31},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":193,"covered":45,"skipped":0,"pct":23.31},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} ,"/app/js/watchHistoryService.js": {"lines":{"total":1399,"covered":381,"skipped":0,"pct":27.23},"functions":{"total":38,"covered":19,"skipped":0,"pct":50},"statements":{"total":1399,"covered":381,"skipped":0,"pct":27.23},"branches":{"total":98,"covered":35,"skipped":0,"pct":35.71}} ,"/app/js/webtorrent.js": {"lines":{"total":1037,"covered":414,"skipped":0,"pct":39.92},"functions":{"total":28,"covered":11,"skipped":0,"pct":39.28},"statements":{"total":1037,"covered":414,"skipped":0,"pct":39.92},"branches":{"total":60,"covered":33,"skipped":0,"pct":55}} ,"/app/js/app/authSessionCoordinator.js": {"lines":{"total":1742,"covered":160,"skipped":0,"pct":9.18},"functions":{"total":34,"covered":1,"skipped":0,"pct":2.94},"statements":{"total":1742,"covered":160,"skipped":0,"pct":9.18},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}} ,"/app/js/app/bindCoordinator.js": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":22,"covered":22,"skipped":0,"pct":100},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} ,"/app/js/app/feedCoordinator.js": {"lines":{"total":1766,"covered":573,"skipped":0,"pct":32.44},"functions":{"total":87,"covered":16,"skipped":0,"pct":18.39},"statements":{"total":1766,"covered":573,"skipped":0,"pct":32.44},"branches":{"total":48,"covered":18,"skipped":0,"pct":37.5}} ,"/app/js/app/modalCoordinator.js": {"lines":{"total":647,"covered":232,"skipped":0,"pct":35.85},"functions":{"total":32,"covered":7,"skipped":0,"pct":21.87},"statements":{"total":647,"covered":232,"skipped":0,"pct":35.85},"branches":{"total":30,"covered":19,"skipped":0,"pct":63.33}} ,"/app/js/app/moderationCoordinator.js": {"lines":{"total":324,"covered":108,"skipped":0,"pct":33.33},"functions":{"total":29,"covered":2,"skipped":0,"pct":6.89},"statements":{"total":324,"covered":108,"skipped":0,"pct":33.33},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} ,"/app/js/app/playbackCoordinator.js": {"lines":{"total":1216,"covered":199,"skipped":0,"pct":16.36},"functions":{"total":50,"covered":18,"skipped":0,"pct":36},"statements":{"total":1216,"covered":199,"skipped":0,"pct":16.36},"branches":{"total":25,"covered":20,"skipped":0,"pct":80}} ,"/app/js/app/routerCoordinator.js": {"lines":{"total":88,"covered":25,"skipped":0,"pct":28.4},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":88,"covered":25,"skipped":0,"pct":28.4},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/app/uiCoordinator.js": {"lines":{"total":310,"covered":203,"skipped":0,"pct":65.48},"functions":{"total":14,"covered":10,"skipped":0,"pct":71.42},"statements":{"total":310,"covered":203,"skipped":0,"pct":65.48},"branches":{"total":25,"covered":18,"skipped":0,"pct":72}} ,"/app/js/attachments/attachmentUtils.js": {"lines":{"total":162,"covered":27,"skipped":0,"pct":16.66},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":162,"covered":27,"skipped":0,"pct":16.66},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/auth/signingAdapter.js": {"lines":{"total":24,"covered":24,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":24,"covered":24,"skipped":0,"pct":100},"branches":{"total":10,"covered":10,"skipped":0,"pct":100}} ,"/app/js/designSystem/dynamicStyles.js": {"lines":{"total":308,"covered":236,"skipped":0,"pct":76.62},"functions":{"total":13,"covered":13,"skipped":0,"pct":100},"statements":{"total":308,"covered":236,"skipped":0,"pct":76.62},"branches":{"total":85,"covered":54,"skipped":0,"pct":63.52}} ,"/app/js/designSystem/metrics.js": {"lines":{"total":251,"covered":209,"skipped":0,"pct":83.26},"functions":{"total":25,"covered":15,"skipped":0,"pct":60},"statements":{"total":251,"covered":209,"skipped":0,"pct":83.26},"branches":{"total":53,"covered":33,"skipped":0,"pct":62.26}} ,"/app/js/dom/cardObserver.js": {"lines":{"total":209,"covered":92,"skipped":0,"pct":44.01},"functions":{"total":10,"covered":4,"skipped":0,"pct":40},"statements":{"total":209,"covered":92,"skipped":0,"pct":44.01},"branches":{"total":15,"covered":7,"skipped":0,"pct":46.66}} ,"/app/js/feedEngine/engine.js": {"lines":{"total":262,"covered":49,"skipped":0,"pct":18.7},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":262,"covered":49,"skipped":0,"pct":18.7},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/feedEngine/exploreScoring.js": {"lines":{"total":451,"covered":379,"skipped":0,"pct":84.03},"functions":{"total":17,"covered":17,"skipped":0,"pct":100},"statements":{"total":451,"covered":379,"skipped":0,"pct":84.03},"branches":{"total":93,"covered":54,"skipped":0,"pct":58.06}} ,"/app/js/feedEngine/index.js": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/feedEngine/kidsAudienceFilterStage.js": {"lines":{"total":161,"covered":24,"skipped":0,"pct":14.9},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.66},"statements":{"total":161,"covered":24,"skipped":0,"pct":14.9},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/feedEngine/kidsScoring.js": {"lines":{"total":396,"covered":345,"skipped":0,"pct":87.12},"functions":{"total":16,"covered":16,"skipped":0,"pct":100},"statements":{"total":396,"covered":345,"skipped":0,"pct":87.12},"branches":{"total":94,"covered":50,"skipped":0,"pct":53.19}} ,"/app/js/feedEngine/sorters.js": {"lines":{"total":508,"covered":268,"skipped":0,"pct":52.75},"functions":{"total":14,"covered":10,"skipped":0,"pct":71.42},"statements":{"total":508,"covered":268,"skipped":0,"pct":52.75},"branches":{"total":68,"covered":45,"skipped":0,"pct":66.17}} ,"/app/js/feedEngine/sources.js": {"lines":{"total":238,"covered":29,"skipped":0,"pct":12.18},"functions":{"total":8,"covered":3,"skipped":0,"pct":37.5},"statements":{"total":238,"covered":29,"skipped":0,"pct":12.18},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}} ,"/app/js/feedEngine/stages.js": {"lines":{"total":1349,"covered":828,"skipped":0,"pct":61.37},"functions":{"total":30,"covered":19,"skipped":0,"pct":63.33},"statements":{"total":1349,"covered":828,"skipped":0,"pct":61.37},"branches":{"total":321,"covered":215,"skipped":0,"pct":66.97}} ,"/app/js/feedEngine/utils.js": {"lines":{"total":96,"covered":67,"skipped":0,"pct":69.79},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.42},"statements":{"total":96,"covered":67,"skipped":0,"pct":69.79},"branches":{"total":19,"covered":14,"skipped":0,"pct":73.68}} ,"/app/js/feedEngine/watchHistoryFeed.js": {"lines":{"total":691,"covered":39,"skipped":0,"pct":5.64},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":691,"covered":39,"skipped":0,"pct":5.64},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostr/cachePolicies.js": {"lines":{"total":97,"covered":97,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":97,"covered":97,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostr/client.js": {"lines":{"total":3996,"covered":2089,"skipped":0,"pct":52.27},"functions":{"total":195,"covered":93,"skipped":0,"pct":47.69},"statements":{"total":3996,"covered":2089,"skipped":0,"pct":52.27},"branches":{"total":324,"covered":149,"skipped":0,"pct":45.98}} ,"/app/js/nostr/commentEvents.js": {"lines":{"total":638,"covered":486,"skipped":0,"pct":76.17},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":638,"covered":486,"skipped":0,"pct":76.17},"branches":{"total":135,"covered":81,"skipped":0,"pct":60}} ,"/app/js/nostr/commentTargetNormalizer.js": {"lines":{"total":982,"covered":871,"skipped":0,"pct":88.69},"functions":{"total":25,"covered":25,"skipped":0,"pct":100},"statements":{"total":982,"covered":871,"skipped":0,"pct":88.69},"branches":{"total":307,"covered":245,"skipped":0,"pct":79.8}} ,"/app/js/nostr/countDiagnostics.js": {"lines":{"total":68,"covered":68,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":68,"covered":68,"skipped":0,"pct":100},"branches":{"total":22,"covered":21,"skipped":0,"pct":95.45}} ,"/app/js/nostr/decryptionSchemeCache.js": {"lines":{"total":70,"covered":70,"skipped":0,"pct":100},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":70,"covered":70,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}} ,"/app/js/nostr/defaultClient.js": {"lines":{"total":33,"covered":33,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":33,"covered":33,"skipped":0,"pct":100},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}} ,"/app/js/nostr/dmDecryptDiagnostics.js": {"lines":{"total":42,"covered":42,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":42,"covered":42,"skipped":0,"pct":100},"branches":{"total":25,"covered":25,"skipped":0,"pct":100}} ,"/app/js/nostr/dmDecryptWorker.js": {"lines":{"total":266,"covered":191,"skipped":0,"pct":71.8},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":266,"covered":191,"skipped":0,"pct":71.8},"branches":{"total":60,"covered":19,"skipped":0,"pct":31.66}} ,"/app/js/nostr/dmDecryptWorkerClient.js": {"lines":{"total":127,"covered":123,"skipped":0,"pct":96.85},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":127,"covered":123,"skipped":0,"pct":96.85},"branches":{"total":45,"covered":33,"skipped":0,"pct":73.33}} ,"/app/js/nostr/dmSignalEvents.js": {"lines":{"total":311,"covered":232,"skipped":0,"pct":74.59},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":311,"covered":232,"skipped":0,"pct":74.59},"branches":{"total":61,"covered":29,"skipped":0,"pct":47.54}} ,"/app/js/nostr/eventsMap.js": {"lines":{"total":90,"covered":83,"skipped":0,"pct":92.22},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":90,"covered":83,"skipped":0,"pct":92.22},"branches":{"total":26,"covered":21,"skipped":0,"pct":80.76}} ,"/app/js/nostr/index.js": {"lines":{"total":65,"covered":65,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":65,"covered":65,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostr/maxListenerDiagnostics.js": {"lines":{"total":95,"covered":84,"skipped":0,"pct":88.42},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":95,"covered":84,"skipped":0,"pct":88.42},"branches":{"total":21,"covered":18,"skipped":0,"pct":85.71}} ,"/app/js/nostr/nip04WorkerClient.js": {"lines":{"total":108,"covered":104,"skipped":0,"pct":96.29},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":108,"covered":104,"skipped":0,"pct":96.29},"branches":{"total":37,"covered":31,"skipped":0,"pct":83.78}} ,"/app/js/nostr/nip07Permissions.js": {"lines":{"total":442,"covered":397,"skipped":0,"pct":89.81},"functions":{"total":19,"covered":18,"skipped":0,"pct":94.73},"statements":{"total":442,"covered":397,"skipped":0,"pct":89.81},"branches":{"total":107,"covered":78,"skipped":0,"pct":72.89}} ,"/app/js/nostr/nip46Client.js": {"lines":{"total":2102,"covered":1160,"skipped":0,"pct":55.18},"functions":{"total":68,"covered":44,"skipped":0,"pct":64.7},"statements":{"total":2102,"covered":1160,"skipped":0,"pct":55.18},"branches":{"total":327,"covered":156,"skipped":0,"pct":47.7}} ,"/app/js/nostr/nip46Connector.js": {"lines":{"total":1093,"covered":515,"skipped":0,"pct":47.11},"functions":{"total":13,"covered":8,"skipped":0,"pct":61.53},"statements":{"total":1093,"covered":515,"skipped":0,"pct":47.11},"branches":{"total":71,"covered":28,"skipped":0,"pct":39.43}} ,"/app/js/nostr/nip46LoggingUtils.js": {"lines":{"total":158,"covered":74,"skipped":0,"pct":46.83},"functions":{"total":8,"covered":7,"skipped":0,"pct":87.5},"statements":{"total":158,"covered":74,"skipped":0,"pct":46.83},"branches":{"total":31,"covered":20,"skipped":0,"pct":64.51}} ,"/app/js/nostr/nip46Queue.js": {"lines":{"total":88,"covered":83,"skipped":0,"pct":94.31},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":88,"covered":83,"skipped":0,"pct":94.31},"branches":{"total":21,"covered":16,"skipped":0,"pct":76.19}} ,"/app/js/nostr/nip71.js": {"lines":{"total":1530,"covered":1262,"skipped":0,"pct":82.48},"functions":{"total":38,"covered":37,"skipped":0,"pct":97.36},"statements":{"total":1530,"covered":1262,"skipped":0,"pct":82.48},"branches":{"total":394,"covered":228,"skipped":0,"pct":57.86}} ,"/app/js/nostr/publishHelpers.js": {"lines":{"total":1414,"covered":455,"skipped":0,"pct":32.17},"functions":{"total":15,"covered":6,"skipped":0,"pct":40},"statements":{"total":1414,"covered":455,"skipped":0,"pct":32.17},"branches":{"total":122,"covered":54,"skipped":0,"pct":44.26}} ,"/app/js/nostr/reactionEvents.js": {"lines":{"total":515,"covered":250,"skipped":0,"pct":48.54},"functions":{"total":7,"covered":6,"skipped":0,"pct":85.71},"statements":{"total":515,"covered":250,"skipped":0,"pct":48.54},"branches":{"total":90,"covered":40,"skipped":0,"pct":44.44}} ,"/app/js/nostr/relayBatchFetcher.js": {"lines":{"total":235,"covered":179,"skipped":0,"pct":76.17},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":235,"covered":179,"skipped":0,"pct":76.17},"branches":{"total":43,"covered":28,"skipped":0,"pct":65.11}} ,"/app/js/nostr/relayConstants.js": {"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostr/sessionActor.js": {"lines":{"total":514,"covered":410,"skipped":0,"pct":79.76},"functions":{"total":26,"covered":21,"skipped":0,"pct":80.76},"statements":{"total":514,"covered":410,"skipped":0,"pct":79.76},"branches":{"total":123,"covered":75,"skipped":0,"pct":60.97}} ,"/app/js/nostr/signRequestQueue.js": {"lines":{"total":130,"covered":121,"skipped":0,"pct":93.07},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":130,"covered":121,"skipped":0,"pct":93.07},"branches":{"total":46,"covered":41,"skipped":0,"pct":89.13}} ,"/app/js/nostr/signerHelpers.js": {"lines":{"total":165,"covered":95,"skipped":0,"pct":57.57},"functions":{"total":9,"covered":5,"skipped":0,"pct":55.55},"statements":{"total":165,"covered":95,"skipped":0,"pct":57.57},"branches":{"total":18,"covered":6,"skipped":0,"pct":33.33}} ,"/app/js/nostr/syncMetadataStore.js": {"lines":{"total":100,"covered":92,"skipped":0,"pct":92},"functions":{"total":7,"covered":7,"skipped":0,"pct":100},"statements":{"total":100,"covered":92,"skipped":0,"pct":92},"branches":{"total":30,"covered":21,"skipped":0,"pct":70}} ,"/app/js/nostr/toolkit.js": {"lines":{"total":602,"covered":421,"skipped":0,"pct":69.93},"functions":{"total":32,"covered":22,"skipped":0,"pct":68.75},"statements":{"total":602,"covered":421,"skipped":0,"pct":69.93},"branches":{"total":135,"covered":81,"skipped":0,"pct":60}} ,"/app/js/nostr/videoEventBuffer.js": {"lines":{"total":218,"covered":190,"skipped":0,"pct":87.15},"functions":{"total":7,"covered":6,"skipped":0,"pct":85.71},"statements":{"total":218,"covered":190,"skipped":0,"pct":87.15},"branches":{"total":31,"covered":24,"skipped":0,"pct":77.41}} ,"/app/js/nostr/videoPayloadBuilder.js": {"lines":{"total":491,"covered":451,"skipped":0,"pct":91.85},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":491,"covered":451,"skipped":0,"pct":91.85},"branches":{"total":124,"covered":63,"skipped":0,"pct":50.8}} ,"/app/js/nostr/videoPublisher.js": {"lines":{"total":236,"covered":111,"skipped":0,"pct":47.03},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":236,"covered":111,"skipped":0,"pct":47.03},"branches":{"total":11,"covered":6,"skipped":0,"pct":54.54}} ,"/app/js/nostr/viewEventBindings.js": {"lines":{"total":42,"covered":12,"skipped":0,"pct":28.57},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":12,"skipped":0,"pct":28.57},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/nostr/viewEvents.js": {"lines":{"total":909,"covered":340,"skipped":0,"pct":37.4},"functions":{"total":18,"covered":11,"skipped":0,"pct":61.11},"statements":{"total":909,"covered":340,"skipped":0,"pct":37.4},"branches":{"total":77,"covered":17,"skipped":0,"pct":22.07}} ,"/app/js/nostr/watchHistory.js": {"lines":{"total":2210,"covered":1285,"skipped":0,"pct":58.14},"functions":{"total":56,"covered":39,"skipped":0,"pct":69.64},"statements":{"total":2210,"covered":1285,"skipped":0,"pct":58.14},"branches":{"total":322,"covered":131,"skipped":0,"pct":40.68}} ,"/app/js/nostr/watchHistoryBindings.js": {"lines":{"total":29,"covered":29,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":29,"covered":29,"skipped":0,"pct":100},"branches":{"total":9,"covered":9,"skipped":0,"pct":100}} ,"/app/js/nostr/adapters/nip07Adapter.js": {"lines":{"total":242,"covered":141,"skipped":0,"pct":58.26},"functions":{"total":22,"covered":12,"skipped":0,"pct":54.54},"statements":{"total":242,"covered":141,"skipped":0,"pct":58.26},"branches":{"total":46,"covered":32,"skipped":0,"pct":69.56}} ,"/app/js/nostr/adapters/nip46Adapter.js": {"lines":{"total":92,"covered":69,"skipped":0,"pct":75},"functions":{"total":18,"covered":4,"skipped":0,"pct":22.22},"statements":{"total":92,"covered":69,"skipped":0,"pct":75},"branches":{"total":11,"covered":5,"skipped":0,"pct":45.45}} ,"/app/js/nostr/adapters/nsecAdapter.js": {"lines":{"total":91,"covered":81,"skipped":0,"pct":89.01},"functions":{"total":9,"covered":5,"skipped":0,"pct":55.55},"statements":{"total":91,"covered":81,"skipped":0,"pct":89.01},"branches":{"total":20,"covered":12,"skipped":0,"pct":60}} ,"/app/js/nostr/managers/ConnectionManager.js": {"lines":{"total":965,"covered":554,"skipped":0,"pct":57.4},"functions":{"total":25,"covered":19,"skipped":0,"pct":76},"statements":{"total":965,"covered":554,"skipped":0,"pct":57.4},"branches":{"total":149,"covered":56,"skipped":0,"pct":37.58}} ,"/app/js/nostr/managers/EventsCacheStore.js": {"lines":{"total":408,"covered":374,"skipped":0,"pct":91.66},"functions":{"total":27,"covered":22,"skipped":0,"pct":81.48},"statements":{"total":408,"covered":374,"skipped":0,"pct":91.66},"branches":{"total":65,"covered":50,"skipped":0,"pct":76.92}} ,"/app/js/nostr/managers/PersistenceManager.js": {"lines":{"total":354,"covered":173,"skipped":0,"pct":48.87},"functions":{"total":11,"covered":6,"skipped":0,"pct":54.54},"statements":{"total":354,"covered":173,"skipped":0,"pct":48.87},"branches":{"total":20,"covered":10,"skipped":0,"pct":50}} ,"/app/js/nostr/managers/SignerManager.js": {"lines":{"total":1106,"covered":602,"skipped":0,"pct":54.43},"functions":{"total":35,"covered":20,"skipped":0,"pct":57.14},"statements":{"total":1106,"covered":602,"skipped":0,"pct":54.43},"branches":{"total":207,"covered":138,"skipped":0,"pct":66.66}} ,"/app/js/payments/lnurl.js": {"lines":{"total":409,"covered":45,"skipped":0,"pct":11},"functions":{"total":17,"covered":0,"skipped":0,"pct":0},"statements":{"total":409,"covered":45,"skipped":0,"pct":11},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/payments/nwcClient.js": {"lines":{"total":1641,"covered":186,"skipped":0,"pct":11.33},"functions":{"total":63,"covered":1,"skipped":0,"pct":1.58},"statements":{"total":1641,"covered":186,"skipped":0,"pct":11.33},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}} ,"/app/js/payments/platformAddress.js": {"lines":{"total":328,"covered":69,"skipped":0,"pct":21.03},"functions":{"total":14,"covered":1,"skipped":0,"pct":7.14},"statements":{"total":328,"covered":69,"skipped":0,"pct":21.03},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}} ,"/app/js/payments/platformFee.js": {"lines":{"total":74,"covered":11,"skipped":0,"pct":14.86},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":74,"covered":11,"skipped":0,"pct":14.86},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/payments/zapMessages.js": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/payments/zapNotifications.js": {"lines":{"total":365,"covered":20,"skipped":0,"pct":5.47},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":365,"covered":20,"skipped":0,"pct":5.47},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/payments/zapReceiptValidator.js": {"lines":{"total":445,"covered":43,"skipped":0,"pct":9.66},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":445,"covered":43,"skipped":0,"pct":9.66},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}} ,"/app/js/payments/zapRequests.js": {"lines":{"total":200,"covered":34,"skipped":0,"pct":17},"functions":{"total":8,"covered":0,"skipped":0,"pct":0},"statements":{"total":200,"covered":34,"skipped":0,"pct":17},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/payments/zapSharedState.js": {"lines":{"total":280,"covered":75,"skipped":0,"pct":26.78},"functions":{"total":15,"covered":0,"skipped":0,"pct":0},"statements":{"total":280,"covered":75,"skipped":0,"pct":26.78},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/payments/zapSplit.js": {"lines":{"total":601,"covered":105,"skipped":0,"pct":17.47},"functions":{"total":19,"covered":1,"skipped":0,"pct":5.26},"statements":{"total":601,"covered":105,"skipped":0,"pct":17.47},"branches":{"total":13,"covered":6,"skipped":0,"pct":46.15}} ,"/app/js/search/searchFilterMatchers.js": {"lines":{"total":80,"covered":71,"skipped":0,"pct":88.75},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":80,"covered":71,"skipped":0,"pct":88.75},"branches":{"total":53,"covered":32,"skipped":0,"pct":60.37}} ,"/app/js/search/searchFilters.js": {"lines":{"total":331,"covered":243,"skipped":0,"pct":73.41},"functions":{"total":11,"covered":9,"skipped":0,"pct":81.81},"statements":{"total":331,"covered":243,"skipped":0,"pct":73.41},"branches":{"total":58,"covered":28,"skipped":0,"pct":48.27}} ,"/app/js/services/attachmentService.js": {"lines":{"total":394,"covered":209,"skipped":0,"pct":53.04},"functions":{"total":15,"covered":12,"skipped":0,"pct":80},"statements":{"total":394,"covered":209,"skipped":0,"pct":53.04},"branches":{"total":57,"covered":29,"skipped":0,"pct":50.87}} ,"/app/js/services/authService.js": {"lines":{"total":1320,"covered":1021,"skipped":0,"pct":77.34},"functions":{"total":63,"covered":39,"skipped":0,"pct":61.9},"statements":{"total":1320,"covered":1021,"skipped":0,"pct":77.34},"branches":{"total":236,"covered":148,"skipped":0,"pct":62.71}} ,"/app/js/services/authUtils.js": {"lines":{"total":53,"covered":53,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":53,"covered":53,"skipped":0,"pct":100},"branches":{"total":14,"covered":14,"skipped":0,"pct":100}} ,"/app/js/services/commentThreadService.js": {"lines":{"total":1121,"covered":865,"skipped":0,"pct":77.16},"functions":{"total":57,"covered":50,"skipped":0,"pct":87.71},"statements":{"total":1121,"covered":865,"skipped":0,"pct":77.16},"branches":{"total":261,"covered":180,"skipped":0,"pct":68.96}} ,"/app/js/services/discussionCountService.js": {"lines":{"total":252,"covered":213,"skipped":0,"pct":84.52},"functions":{"total":10,"covered":8,"skipped":0,"pct":80},"statements":{"total":252,"covered":213,"skipped":0,"pct":84.52},"branches":{"total":72,"covered":51,"skipped":0,"pct":70.83}} ,"/app/js/services/dmNostrService.js": {"lines":{"total":684,"covered":78,"skipped":0,"pct":11.4},"functions":{"total":31,"covered":0,"skipped":0,"pct":0},"statements":{"total":684,"covered":78,"skipped":0,"pct":11.4},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/services/dmNotificationManager.js": {"lines":{"total":242,"covered":166,"skipped":0,"pct":68.59},"functions":{"total":12,"covered":8,"skipped":0,"pct":66.66},"statements":{"total":242,"covered":166,"skipped":0,"pct":68.59},"branches":{"total":46,"covered":31,"skipped":0,"pct":67.39}} ,"/app/js/services/exploreDataService.js": {"lines":{"total":341,"covered":275,"skipped":0,"pct":80.64},"functions":{"total":20,"covered":14,"skipped":0,"pct":70},"statements":{"total":341,"covered":275,"skipped":0,"pct":80.64},"branches":{"total":67,"covered":44,"skipped":0,"pct":65.67}} ,"/app/js/services/hashtagPreferencesService.js": {"lines":{"total":1434,"covered":971,"skipped":0,"pct":67.71},"functions":{"total":35,"covered":33,"skipped":0,"pct":94.28},"statements":{"total":1434,"covered":971,"skipped":0,"pct":67.71},"branches":{"total":261,"covered":132,"skipped":0,"pct":50.57}} ,"/app/js/services/linkPreviewService.js": {"lines":{"total":249,"covered":199,"skipped":0,"pct":79.91},"functions":{"total":19,"covered":16,"skipped":0,"pct":84.21},"statements":{"total":249,"covered":199,"skipped":0,"pct":79.91},"branches":{"total":64,"covered":35,"skipped":0,"pct":54.68}} ,"/app/js/services/moderationActionController.js": {"lines":{"total":600,"covered":414,"skipped":0,"pct":69},"functions":{"total":25,"covered":24,"skipped":0,"pct":96},"statements":{"total":600,"covered":414,"skipped":0,"pct":69},"branches":{"total":154,"covered":99,"skipped":0,"pct":64.28}} ,"/app/js/services/moderationDecorator.js": {"lines":{"total":507,"covered":427,"skipped":0,"pct":84.22},"functions":{"total":10,"covered":9,"skipped":0,"pct":90},"statements":{"total":507,"covered":427,"skipped":0,"pct":84.22},"branches":{"total":214,"covered":156,"skipped":0,"pct":72.89}} ,"/app/js/services/moderationService.js": {"lines":{"total":2512,"covered":1682,"skipped":0,"pct":66.95},"functions":{"total":97,"covered":77,"skipped":0,"pct":79.38},"statements":{"total":2512,"covered":1682,"skipped":0,"pct":66.95},"branches":{"total":476,"covered":261,"skipped":0,"pct":54.83}} ,"/app/js/services/nostrService.js": {"lines":{"total":2226,"covered":1048,"skipped":0,"pct":47.07},"functions":{"total":80,"covered":51,"skipped":0,"pct":63.75},"statements":{"total":2226,"covered":1048,"skipped":0,"pct":47.07},"branches":{"total":292,"covered":142,"skipped":0,"pct":48.63}} ,"/app/js/services/nwcSettingsService.js": {"lines":{"total":327,"covered":172,"skipped":0,"pct":52.59},"functions":{"total":23,"covered":15,"skipped":0,"pct":65.21},"statements":{"total":327,"covered":172,"skipped":0,"pct":52.59},"branches":{"total":45,"covered":24,"skipped":0,"pct":53.33}} ,"/app/js/services/playbackService.js": {"lines":{"total":1288,"covered":951,"skipped":0,"pct":73.83},"functions":{"total":63,"covered":44,"skipped":0,"pct":69.84},"statements":{"total":1288,"covered":951,"skipped":0,"pct":73.83},"branches":{"total":233,"covered":131,"skipped":0,"pct":56.22}} ,"/app/js/services/playbackStrategyService.js": {"lines":{"total":345,"covered":252,"skipped":0,"pct":73.04},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":345,"covered":252,"skipped":0,"pct":73.04},"branches":{"total":47,"covered":20,"skipped":0,"pct":42.55}} ,"/app/js/services/profileMetadataService.js": {"lines":{"total":294,"covered":262,"skipped":0,"pct":89.11},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":294,"covered":262,"skipped":0,"pct":89.11},"branches":{"total":82,"covered":62,"skipped":0,"pct":75.6}} ,"/app/js/services/r2Service.js": {"lines":{"total":1193,"covered":796,"skipped":0,"pct":66.72},"functions":{"total":37,"covered":28,"skipped":0,"pct":75.67},"statements":{"total":1193,"covered":796,"skipped":0,"pct":66.72},"branches":{"total":159,"covered":56,"skipped":0,"pct":35.22}} ,"/app/js/services/relayHealthService.js": {"lines":{"total":276,"covered":233,"skipped":0,"pct":84.42},"functions":{"total":16,"covered":16,"skipped":0,"pct":100},"statements":{"total":276,"covered":233,"skipped":0,"pct":84.42},"branches":{"total":77,"covered":56,"skipped":0,"pct":72.72}} ,"/app/js/services/relaySubscriptionService.js": {"lines":{"total":250,"covered":172,"skipped":0,"pct":68.8},"functions":{"total":11,"covered":9,"skipped":0,"pct":81.81},"statements":{"total":250,"covered":172,"skipped":0,"pct":68.8},"branches":{"total":59,"covered":39,"skipped":0,"pct":66.1}} ,"/app/js/services/s3Service.js": {"lines":{"total":185,"covered":102,"skipped":0,"pct":55.13},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":185,"covered":102,"skipped":0,"pct":55.13},"branches":{"total":30,"covered":25,"skipped":0,"pct":83.33}} ,"/app/js/services/s3UploadService.js": {"lines":{"total":483,"covered":399,"skipped":0,"pct":82.6},"functions":{"total":17,"covered":14,"skipped":0,"pct":82.35},"statements":{"total":483,"covered":399,"skipped":0,"pct":82.6},"branches":{"total":82,"covered":57,"skipped":0,"pct":69.51}} ,"/app/js/services/storageService.js": {"lines":{"total":741,"covered":604,"skipped":0,"pct":81.51},"functions":{"total":43,"covered":28,"skipped":0,"pct":65.11},"statements":{"total":741,"covered":604,"skipped":0,"pct":81.51},"branches":{"total":122,"covered":85,"skipped":0,"pct":69.67}} ,"/app/js/services/trustBootstrap.js": {"lines":{"total":192,"covered":171,"skipped":0,"pct":89.06},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":192,"covered":171,"skipped":0,"pct":89.06},"branches":{"total":46,"covered":36,"skipped":0,"pct":78.26}} ,"/app/js/services/videoNotePayload.js": {"lines":{"total":475,"covered":429,"skipped":0,"pct":90.31},"functions":{"total":14,"covered":14,"skipped":0,"pct":100},"statements":{"total":475,"covered":429,"skipped":0,"pct":90.31},"branches":{"total":183,"covered":138,"skipped":0,"pct":75.4}} ,"/app/js/services/watchHistoryTelemetry.js": {"lines":{"total":427,"covered":97,"skipped":0,"pct":22.71},"functions":{"total":22,"covered":5,"skipped":0,"pct":22.72},"statements":{"total":427,"covered":97,"skipped":0,"pct":22.71},"branches":{"total":16,"covered":6,"skipped":0,"pct":37.5}} ,"/app/js/services/authProviders/generate.js": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/services/authProviders/index.js": {"lines":{"total":147,"covered":93,"skipped":0,"pct":63.26},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":147,"covered":93,"skipped":0,"pct":63.26},"branches":{"total":24,"covered":6,"skipped":0,"pct":25}} ,"/app/js/services/authProviders/nip07.js": {"lines":{"total":90,"covered":69,"skipped":0,"pct":76.66},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":90,"covered":69,"skipped":0,"pct":76.66},"branches":{"total":11,"covered":6,"skipped":0,"pct":54.54}} ,"/app/js/services/authProviders/nip46.js": {"lines":{"total":269,"covered":49,"skipped":0,"pct":18.21},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":269,"covered":49,"skipped":0,"pct":18.21},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/services/authProviders/nsec.js": {"lines":{"total":161,"covered":43,"skipped":0,"pct":26.7},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":161,"covered":43,"skipped":0,"pct":26.7},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/state/appState.js": {"lines":{"total":222,"covered":206,"skipped":0,"pct":92.79},"functions":{"total":22,"covered":22,"skipped":0,"pct":100},"statements":{"total":222,"covered":206,"skipped":0,"pct":92.79},"branches":{"total":51,"covered":41,"skipped":0,"pct":80.39}} ,"/app/js/state/cache.js": {"lines":{"total":1828,"covered":985,"skipped":0,"pct":53.88},"functions":{"total":63,"covered":46,"skipped":0,"pct":73.01},"statements":{"total":1828,"covered":985,"skipped":0,"pct":53.88},"branches":{"total":279,"covered":163,"skipped":0,"pct":58.42}} ,"/app/js/state/profileCache.js": {"lines":{"total":423,"covered":379,"skipped":0,"pct":89.59},"functions":{"total":24,"covered":22,"skipped":0,"pct":91.66},"statements":{"total":423,"covered":379,"skipped":0,"pct":89.59},"branches":{"total":113,"covered":94,"skipped":0,"pct":83.18}} ,"/app/js/state/profileSettingsStore.js": {"lines":{"total":74,"covered":67,"skipped":0,"pct":90.54},"functions":{"total":12,"covered":11,"skipped":0,"pct":91.66},"statements":{"total":74,"covered":67,"skipped":0,"pct":90.54},"branches":{"total":21,"covered":19,"skipped":0,"pct":90.47}} ,"/app/js/storage/dmDb.js": {"lines":{"total":591,"covered":423,"skipped":0,"pct":71.57},"functions":{"total":32,"covered":22,"skipped":0,"pct":68.75},"statements":{"total":591,"covered":423,"skipped":0,"pct":71.57},"branches":{"total":113,"covered":73,"skipped":0,"pct":64.6}} ,"/app/js/storage/r2-mgmt.js": {"lines":{"total":293,"covered":45,"skipped":0,"pct":15.35},"functions":{"total":11,"covered":1,"skipped":0,"pct":9.09},"statements":{"total":293,"covered":45,"skipped":0,"pct":15.35},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}} ,"/app/js/storage/r2-s3.js": {"lines":{"total":184,"covered":23,"skipped":0,"pct":12.5},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":184,"covered":23,"skipped":0,"pct":12.5},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/storage/s3-client.js": {"lines":{"total":114,"covered":52,"skipped":0,"pct":45.61},"functions":{"total":7,"covered":1,"skipped":0,"pct":14.28},"statements":{"total":114,"covered":52,"skipped":0,"pct":45.61},"branches":{"total":8,"covered":5,"skipped":0,"pct":62.5}} ,"/app/js/storage/s3-multipart.js": {"lines":{"total":272,"covered":17,"skipped":0,"pct":6.25},"functions":{"total":7,"covered":0,"skipped":0,"pct":0},"statements":{"total":272,"covered":17,"skipped":0,"pct":6.25},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/storage/s3-url.js": {"lines":{"total":74,"covered":52,"skipped":0,"pct":70.27},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":74,"covered":52,"skipped":0,"pct":70.27},"branches":{"total":15,"covered":6,"skipped":0,"pct":40}} ,"/app/js/ui/ModalManager.js": {"lines":{"total":974,"covered":627,"skipped":0,"pct":64.37},"functions":{"total":70,"covered":3,"skipped":0,"pct":4.28},"statements":{"total":974,"covered":627,"skipped":0,"pct":64.37},"branches":{"total":54,"covered":28,"skipped":0,"pct":51.85}} ,"/app/js/ui/ambientBackground.js": {"lines":{"total":321,"covered":106,"skipped":0,"pct":33.02},"functions":{"total":20,"covered":3,"skipped":0,"pct":15},"statements":{"total":321,"covered":106,"skipped":0,"pct":33.02},"branches":{"total":24,"covered":4,"skipped":0,"pct":16.66}} ,"/app/js/ui/appChromeController.js": {"lines":{"total":408,"covered":233,"skipped":0,"pct":57.1},"functions":{"total":26,"covered":14,"skipped":0,"pct":53.84},"statements":{"total":408,"covered":233,"skipped":0,"pct":57.1},"branches":{"total":59,"covered":43,"skipped":0,"pct":72.88}} ,"/app/js/ui/applicationBootstrap.js": {"lines":{"total":1168,"covered":710,"skipped":0,"pct":60.78},"functions":{"total":173,"covered":5,"skipped":0,"pct":2.89},"statements":{"total":1168,"covered":710,"skipped":0,"pct":60.78},"branches":{"total":33,"covered":7,"skipped":0,"pct":21.21}} ,"/app/js/ui/creatorProfileController.js": {"lines":{"total":489,"covered":401,"skipped":0,"pct":82},"functions":{"total":15,"covered":11,"skipped":0,"pct":73.33},"statements":{"total":489,"covered":401,"skipped":0,"pct":82},"branches":{"total":92,"covered":31,"skipped":0,"pct":33.69}} ,"/app/js/ui/editModalController.js": {"lines":{"total":119,"covered":108,"skipped":0,"pct":90.75},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":119,"covered":108,"skipped":0,"pct":90.75},"branches":{"total":24,"covered":17,"skipped":0,"pct":70.83}} ,"/app/js/ui/engagementController.js": {"lines":{"total":427,"covered":317,"skipped":0,"pct":74.23},"functions":{"total":10,"covered":5,"skipped":0,"pct":50},"statements":{"total":427,"covered":317,"skipped":0,"pct":74.23},"branches":{"total":154,"covered":75,"skipped":0,"pct":48.7}} ,"/app/js/ui/initDeleteModal.js": {"lines":{"total":58,"covered":58,"skipped":0,"pct":100},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":58,"covered":58,"skipped":0,"pct":100},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} ,"/app/js/ui/initEditModal.js": {"lines":{"total":68,"covered":68,"skipped":0,"pct":100},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":68,"covered":68,"skipped":0,"pct":100},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} ,"/app/js/ui/initUploadModal.js": {"lines":{"total":76,"covered":73,"skipped":0,"pct":96.05},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":76,"covered":73,"skipped":0,"pct":96.05},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} ,"/app/js/ui/loginModalController.js": {"lines":{"total":2576,"covered":1045,"skipped":0,"pct":40.56},"functions":{"total":80,"covered":38,"skipped":0,"pct":47.5},"statements":{"total":2576,"covered":1045,"skipped":0,"pct":40.56},"branches":{"total":238,"covered":82,"skipped":0,"pct":34.45}} ,"/app/js/ui/moderationCopy.js": {"lines":{"total":162,"covered":135,"skipped":0,"pct":83.33},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":162,"covered":135,"skipped":0,"pct":83.33},"branches":{"total":73,"covered":48,"skipped":0,"pct":65.75}} ,"/app/js/ui/moderationUiHelpers.js": {"lines":{"total":350,"covered":330,"skipped":0,"pct":94.28},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":350,"covered":330,"skipped":0,"pct":94.28},"branches":{"total":154,"covered":130,"skipped":0,"pct":84.41}} ,"/app/js/ui/moreMenuController.js": {"lines":{"total":1600,"covered":466,"skipped":0,"pct":29.12},"functions":{"total":52,"covered":11,"skipped":0,"pct":21.15},"statements":{"total":1600,"covered":466,"skipped":0,"pct":29.12},"branches":{"total":128,"covered":55,"skipped":0,"pct":42.96}} ,"/app/js/ui/notificationController.js": {"lines":{"total":266,"covered":184,"skipped":0,"pct":69.17},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":266,"covered":184,"skipped":0,"pct":69.17},"branches":{"total":49,"covered":13,"skipped":0,"pct":26.53}} ,"/app/js/ui/profileIdentityController.js": {"lines":{"total":179,"covered":18,"skipped":0,"pct":10.05},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":179,"covered":18,"skipped":0,"pct":10.05},"branches":{"total":6,"covered":2,"skipped":0,"pct":33.33}} ,"/app/js/ui/profileModalContract.js": {"lines":{"total":916,"covered":705,"skipped":0,"pct":76.96},"functions":{"total":88,"covered":64,"skipped":0,"pct":72.72},"statements":{"total":916,"covered":705,"skipped":0,"pct":76.96},"branches":{"total":133,"covered":110,"skipped":0,"pct":82.7}} ,"/app/js/ui/profileModalController.js": {"lines":{"total":6257,"covered":3279,"skipped":0,"pct":52.4},"functions":{"total":187,"covered":90,"skipped":0,"pct":48.12},"statements":{"total":6257,"covered":3279,"skipped":0,"pct":52.4},"branches":{"total":723,"covered":448,"skipped":0,"pct":61.96}} ,"/app/js/ui/reactionController.js": {"lines":{"total":371,"covered":280,"skipped":0,"pct":75.47},"functions":{"total":17,"covered":8,"skipped":0,"pct":47.05},"statements":{"total":371,"covered":280,"skipped":0,"pct":75.47},"branches":{"total":65,"covered":18,"skipped":0,"pct":27.69}} ,"/app/js/ui/revertModalController.js": {"lines":{"total":118,"covered":96,"skipped":0,"pct":81.35},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":118,"covered":96,"skipped":0,"pct":81.35},"branches":{"total":23,"covered":11,"skipped":0,"pct":47.82}} ,"/app/js/ui/shareNostrController.js": {"lines":{"total":237,"covered":158,"skipped":0,"pct":66.66},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":237,"covered":158,"skipped":0,"pct":66.66},"branches":{"total":67,"covered":42,"skipped":0,"pct":62.68}} ,"/app/js/ui/similarContentController.js": {"lines":{"total":333,"covered":272,"skipped":0,"pct":81.68},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":333,"covered":272,"skipped":0,"pct":81.68},"branches":{"total":132,"covered":95,"skipped":0,"pct":71.96}} ,"/app/js/ui/subscriptionHistoryController.js": {"lines":{"total":354,"covered":40,"skipped":0,"pct":11.29},"functions":{"total":13,"covered":1,"skipped":0,"pct":7.69},"statements":{"total":354,"covered":40,"skipped":0,"pct":11.29},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/ui/tagPreferenceMenuController.js": {"lines":{"total":347,"covered":219,"skipped":0,"pct":63.11},"functions":{"total":11,"covered":8,"skipped":0,"pct":72.72},"statements":{"total":347,"covered":219,"skipped":0,"pct":63.11},"branches":{"total":59,"covered":33,"skipped":0,"pct":55.93}} ,"/app/js/ui/torrentStatusController.js": {"lines":{"total":127,"covered":100,"skipped":0,"pct":78.74},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":127,"covered":100,"skipped":0,"pct":78.74},"branches":{"total":29,"covered":20,"skipped":0,"pct":68.96}} ,"/app/js/ui/urlHealthController.js": {"lines":{"total":501,"covered":346,"skipped":0,"pct":69.06},"functions":{"total":12,"covered":12,"skipped":0,"pct":100},"statements":{"total":501,"covered":346,"skipped":0,"pct":69.06},"branches":{"total":71,"covered":20,"skipped":0,"pct":28.16}} ,"/app/js/ui/videoListViewController.js": {"lines":{"total":112,"covered":21,"skipped":0,"pct":18.75},"functions":{"total":6,"covered":1,"skipped":0,"pct":16.66},"statements":{"total":112,"covered":21,"skipped":0,"pct":18.75},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} ,"/app/js/ui/videoModalCommentController.js": {"lines":{"total":962,"covered":686,"skipped":0,"pct":71.3},"functions":{"total":49,"covered":28,"skipped":0,"pct":57.14},"statements":{"total":962,"covered":686,"skipped":0,"pct":71.3},"branches":{"total":210,"covered":149,"skipped":0,"pct":70.95}} ,"/app/js/ui/videoModalController.js": {"lines":{"total":392,"covered":289,"skipped":0,"pct":73.72},"functions":{"total":13,"covered":12,"skipped":0,"pct":92.3},"statements":{"total":392,"covered":289,"skipped":0,"pct":73.72},"branches":{"total":79,"covered":30,"skipped":0,"pct":37.97}} ,"/app/js/ui/videoSettingsMenuController.js": {"lines":{"total":171,"covered":123,"skipped":0,"pct":71.92},"functions":{"total":8,"covered":6,"skipped":0,"pct":75},"statements":{"total":171,"covered":123,"skipped":0,"pct":71.92},"branches":{"total":19,"covered":11,"skipped":0,"pct":57.89}} ,"/app/js/ui/watchHistoryController.js": {"lines":{"total":371,"covered":49,"skipped":0,"pct":13.2},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":371,"covered":49,"skipped":0,"pct":13.2},"branches":{"total":8,"covered":2,"skipped":0,"pct":25}} ,"/app/js/ui/zapController.js": {"lines":{"total":1205,"covered":139,"skipped":0,"pct":11.53},"functions":{"total":32,"covered":1,"skipped":0,"pct":3.12},"statements":{"total":1205,"covered":139,"skipped":0,"pct":11.53},"branches":{"total":14,"covered":2,"skipped":0,"pct":14.28}} ,"/app/js/ui/components/DeleteModal.js": {"lines":{"total":453,"covered":93,"skipped":0,"pct":20.52},"functions":{"total":24,"covered":4,"skipped":0,"pct":16.66},"statements":{"total":453,"covered":93,"skipped":0,"pct":20.52},"branches":{"total":10,"covered":5,"skipped":0,"pct":50}} ,"/app/js/ui/components/EditModal.js": {"lines":{"total":1129,"covered":951,"skipped":0,"pct":84.23},"functions":{"total":44,"covered":35,"skipped":0,"pct":79.54},"statements":{"total":1129,"covered":951,"skipped":0,"pct":84.23},"branches":{"total":307,"covered":188,"skipped":0,"pct":61.23}} ,"/app/js/ui/components/EmbedPlayerModal.js": {"lines":{"total":214,"covered":75,"skipped":0,"pct":35.04},"functions":{"total":26,"covered":2,"skipped":0,"pct":7.69},"statements":{"total":214,"covered":75,"skipped":0,"pct":35.04},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} ,"/app/js/ui/components/EmbedVideoModal.js": {"lines":{"total":451,"covered":88,"skipped":0,"pct":19.51},"functions":{"total":23,"covered":2,"skipped":0,"pct":8.69},"statements":{"total":451,"covered":88,"skipped":0,"pct":19.51},"branches":{"total":9,"covered":3,"skipped":0,"pct":33.33}} ,"/app/js/ui/components/EventDetailsModal.js": {"lines":{"total":459,"covered":51,"skipped":0,"pct":11.11},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.66},"statements":{"total":459,"covered":51,"skipped":0,"pct":11.11},"branches":{"total":9,"covered":2,"skipped":0,"pct":22.22}} ,"/app/js/ui/components/FeedInfoPopover.js": {"lines":{"total":44,"covered":12,"skipped":0,"pct":27.27},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":44,"covered":12,"skipped":0,"pct":27.27},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/components/RevertModal.js": {"lines":{"total":1507,"covered":747,"skipped":0,"pct":49.56},"functions":{"total":46,"covered":20,"skipped":0,"pct":43.47},"statements":{"total":1507,"covered":747,"skipped":0,"pct":49.56},"branches":{"total":168,"covered":38,"skipped":0,"pct":22.61}} ,"/app/js/ui/components/ShareNostrModal.js": {"lines":{"total":486,"covered":112,"skipped":0,"pct":23.04},"functions":{"total":32,"covered":2,"skipped":0,"pct":6.25},"statements":{"total":486,"covered":112,"skipped":0,"pct":23.04},"branches":{"total":10,"covered":3,"skipped":0,"pct":30}} ,"/app/js/ui/components/SimilarContentCard.js": {"lines":{"total":1302,"covered":842,"skipped":0,"pct":64.66},"functions":{"total":46,"covered":26,"skipped":0,"pct":56.52},"statements":{"total":1302,"covered":842,"skipped":0,"pct":64.66},"branches":{"total":209,"covered":137,"skipped":0,"pct":65.55}} ,"/app/js/ui/components/UploadModal.js": {"lines":{"total":1319,"covered":796,"skipped":0,"pct":60.34},"functions":{"total":46,"covered":29,"skipped":0,"pct":63.04},"statements":{"total":1319,"covered":796,"skipped":0,"pct":60.34},"branches":{"total":146,"covered":94,"skipped":0,"pct":64.38}} ,"/app/js/ui/components/VideoCard.js": {"lines":{"total":3129,"covered":2030,"skipped":0,"pct":64.87},"functions":{"total":90,"covered":71,"skipped":0,"pct":78.88},"statements":{"total":3129,"covered":2030,"skipped":0,"pct":64.87},"branches":{"total":533,"covered":299,"skipped":0,"pct":56.09}} ,"/app/js/ui/components/VideoModal.js": {"lines":{"total":6044,"covered":3241,"skipped":0,"pct":53.62},"functions":{"total":216,"covered":126,"skipped":0,"pct":58.33},"statements":{"total":6044,"covered":3241,"skipped":0,"pct":53.62},"branches":{"total":749,"covered":338,"skipped":0,"pct":45.12}} ,"/app/js/ui/components/VideoModalSimilarHelpers.js": {"lines":{"total":344,"covered":247,"skipped":0,"pct":71.8},"functions":{"total":7,"covered":6,"skipped":0,"pct":85.71},"statements":{"total":344,"covered":247,"skipped":0,"pct":71.8},"branches":{"total":88,"covered":56,"skipped":0,"pct":63.63}} ,"/app/js/ui/components/hashtagStripHelper.js": {"lines":{"total":395,"covered":301,"skipped":0,"pct":76.2},"functions":{"total":22,"covered":17,"skipped":0,"pct":77.27},"statements":{"total":395,"covered":301,"skipped":0,"pct":76.2},"branches":{"total":103,"covered":69,"skipped":0,"pct":66.99}} ,"/app/js/ui/components/modalAccessibility.js": {"lines":{"total":210,"covered":164,"skipped":0,"pct":78.09},"functions":{"total":15,"covered":9,"skipped":0,"pct":60},"statements":{"total":210,"covered":164,"skipped":0,"pct":78.09},"branches":{"total":62,"covered":45,"skipped":0,"pct":72.58}} ,"/app/js/ui/components/nip71FormManager.js": {"lines":{"total":799,"covered":460,"skipped":0,"pct":57.57},"functions":{"total":28,"covered":22,"skipped":0,"pct":78.57},"statements":{"total":799,"covered":460,"skipped":0,"pct":57.57},"branches":{"total":137,"covered":80,"skipped":0,"pct":58.39}} ,"/app/js/ui/components/revertModalRenderers.js": {"lines":{"total":439,"covered":11,"skipped":0,"pct":2.5},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":439,"covered":11,"skipped":0,"pct":2.5},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/components/staticModalAccessibility.js": {"lines":{"total":141,"covered":105,"skipped":0,"pct":74.46},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":141,"covered":105,"skipped":0,"pct":74.46},"branches":{"total":35,"covered":17,"skipped":0,"pct":48.57}} ,"/app/js/ui/components/tagPillList.js": {"lines":{"total":239,"covered":208,"skipped":0,"pct":87.02},"functions":{"total":13,"covered":12,"skipped":0,"pct":92.3},"statements":{"total":239,"covered":208,"skipped":0,"pct":87.02},"branches":{"total":51,"covered":36,"skipped":0,"pct":70.58}} ,"/app/js/ui/components/tagPreferenceMenu.js": {"lines":{"total":248,"covered":219,"skipped":0,"pct":88.3},"functions":{"total":11,"covered":11,"skipped":0,"pct":100},"statements":{"total":248,"covered":219,"skipped":0,"pct":88.3},"branches":{"total":43,"covered":31,"skipped":0,"pct":72.09}} ,"/app/js/ui/components/videoMenuRenderers.js": {"lines":{"total":494,"covered":463,"skipped":0,"pct":93.72},"functions":{"total":12,"covered":12,"skipped":0,"pct":100},"statements":{"total":494,"covered":463,"skipped":0,"pct":93.72},"branches":{"total":79,"covered":57,"skipped":0,"pct":72.15}} ,"/app/js/ui/components/video-modal/commentsController.js": {"lines":{"total":290,"covered":157,"skipped":0,"pct":54.13},"functions":{"total":7,"covered":3,"skipped":0,"pct":42.85},"statements":{"total":290,"covered":157,"skipped":0,"pct":54.13},"branches":{"total":32,"covered":6,"skipped":0,"pct":18.75}} ,"/app/js/ui/components/video-modal/moderationController.js": {"lines":{"total":117,"covered":80,"skipped":0,"pct":68.37},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":117,"covered":80,"skipped":0,"pct":68.37},"branches":{"total":20,"covered":9,"skipped":0,"pct":45}} ,"/app/js/ui/components/video-modal/reactionsController.js": {"lines":{"total":75,"covered":65,"skipped":0,"pct":86.66},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":75,"covered":65,"skipped":0,"pct":86.66},"branches":{"total":20,"covered":7,"skipped":0,"pct":35}} ,"/app/js/ui/components/video-modal/similarContentController.js": {"lines":{"total":72,"covered":60,"skipped":0,"pct":83.33},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":72,"covered":60,"skipped":0,"pct":83.33},"branches":{"total":20,"covered":5,"skipped":0,"pct":25}} ,"/app/js/ui/components/video-modal/utils/commentAvatar.js": {"lines":{"total":80,"covered":78,"skipped":0,"pct":97.5},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":80,"covered":78,"skipped":0,"pct":97.5},"branches":{"total":33,"covered":30,"skipped":0,"pct":90.9}} ,"/app/js/ui/dm/AppShell.js": {"lines":{"total":296,"covered":108,"skipped":0,"pct":36.48},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":296,"covered":108,"skipped":0,"pct":36.48},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/Avatar.js": {"lines":{"total":57,"covered":4,"skipped":0,"pct":7.01},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":57,"covered":4,"skipped":0,"pct":7.01},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/Composer.js": {"lines":{"total":244,"covered":4,"skipped":0,"pct":1.63},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":244,"covered":4,"skipped":0,"pct":1.63},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/ContactRow.js": {"lines":{"total":95,"covered":5,"skipped":0,"pct":5.26},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":95,"covered":5,"skipped":0,"pct":5.26},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/ConversationList.js": {"lines":{"total":163,"covered":7,"skipped":0,"pct":4.29},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":163,"covered":7,"skipped":0,"pct":4.29},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/DMPrivacySettings.js": {"lines":{"total":72,"covered":1,"skipped":0,"pct":1.38},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":72,"covered":1,"skipped":0,"pct":1.38},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/DMRelaySettings.js": {"lines":{"total":80,"covered":1,"skipped":0,"pct":1.25},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":80,"covered":1,"skipped":0,"pct":1.25},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/DMSettingsModalController.js": {"lines":{"total":261,"covered":45,"skipped":0,"pct":17.24},"functions":{"total":12,"covered":1,"skipped":0,"pct":8.33},"statements":{"total":261,"covered":45,"skipped":0,"pct":17.24},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/ui/dm/DayDivider.js": {"lines":{"total":24,"covered":2,"skipped":0,"pct":8.33},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":24,"covered":2,"skipped":0,"pct":8.33},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/MessageBubble.js": {"lines":{"total":77,"covered":2,"skipped":0,"pct":2.59},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":77,"covered":2,"skipped":0,"pct":2.59},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/MessageThread.js": {"lines":{"total":191,"covered":7,"skipped":0,"pct":3.66},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":191,"covered":7,"skipped":0,"pct":3.66},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/NotificationCenter.js": {"lines":{"total":219,"covered":22,"skipped":0,"pct":10.04},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":219,"covered":22,"skipped":0,"pct":10.04},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/ZapInterface.js": {"lines":{"total":119,"covered":6,"skipped":0,"pct":5.04},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":119,"covered":6,"skipped":0,"pct":5.04},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/ZapReceiptList.js": {"lines":{"total":100,"covered":5,"skipped":0,"pct":5},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":100,"covered":5,"skipped":0,"pct":5},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/index.js": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/ui/dm/zapHelpers.js": {"lines":{"total":58,"covered":58,"skipped":0,"pct":100},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":58,"covered":58,"skipped":0,"pct":100},"branches":{"total":28,"covered":27,"skipped":0,"pct":96.42}} ,"/app/js/ui/overlay/overlayRoot.js": {"lines":{"total":63,"covered":54,"skipped":0,"pct":85.71},"functions":{"total":5,"covered":5,"skipped":0,"pct":100},"statements":{"total":63,"covered":54,"skipped":0,"pct":85.71},"branches":{"total":18,"covered":13,"skipped":0,"pct":72.22}} ,"/app/js/ui/overlay/popoverEngine.js": {"lines":{"total":1069,"covered":915,"skipped":0,"pct":85.59},"functions":{"total":53,"covered":49,"skipped":0,"pct":92.45},"statements":{"total":1069,"covered":915,"skipped":0,"pct":85.59},"branches":{"total":277,"covered":183,"skipped":0,"pct":66.06}} ,"/app/js/ui/profileModal/ProfileAdminController.js": {"lines":{"total":885,"covered":573,"skipped":0,"pct":64.74},"functions":{"total":24,"covered":16,"skipped":0,"pct":66.66},"statements":{"total":885,"covered":573,"skipped":0,"pct":64.74},"branches":{"total":144,"covered":72,"skipped":0,"pct":50}} ,"/app/js/ui/profileModal/ProfileAdminRenderer.js": {"lines":{"total":283,"covered":238,"skipped":0,"pct":84.09},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":283,"covered":238,"skipped":0,"pct":84.09},"branches":{"total":56,"covered":23,"skipped":0,"pct":41.07}} ,"/app/js/ui/profileModal/ProfileDirectMessageActions.js": {"lines":{"total":929,"covered":97,"skipped":0,"pct":10.44},"functions":{"total":26,"covered":5,"skipped":0,"pct":19.23},"statements":{"total":929,"covered":97,"skipped":0,"pct":10.44},"branches":{"total":15,"covered":11,"skipped":0,"pct":73.33}} ,"/app/js/ui/profileModal/ProfileDirectMessageController.js": {"lines":{"total":679,"covered":338,"skipped":0,"pct":49.77},"functions":{"total":49,"covered":19,"skipped":0,"pct":38.77},"statements":{"total":679,"covered":338,"skipped":0,"pct":49.77},"branches":{"total":40,"covered":21,"skipped":0,"pct":52.5}} ,"/app/js/ui/profileModal/ProfileDirectMessageHelper.js": {"lines":{"total":758,"covered":99,"skipped":0,"pct":13.06},"functions":{"total":27,"covered":4,"skipped":0,"pct":14.81},"statements":{"total":758,"covered":99,"skipped":0,"pct":13.06},"branches":{"total":16,"covered":9,"skipped":0,"pct":56.25}} ,"/app/js/ui/profileModal/ProfileDirectMessageRenderer.js": {"lines":{"total":911,"covered":240,"skipped":0,"pct":26.34},"functions":{"total":19,"covered":11,"skipped":0,"pct":57.89},"statements":{"total":911,"covered":240,"skipped":0,"pct":26.34},"branches":{"total":51,"covered":15,"skipped":0,"pct":29.41}} ,"/app/js/ui/profileModal/ProfileHashtagController.js": {"lines":{"total":598,"covered":412,"skipped":0,"pct":68.89},"functions":{"total":19,"covered":16,"skipped":0,"pct":84.21},"statements":{"total":598,"covered":412,"skipped":0,"pct":68.89},"branches":{"total":117,"covered":70,"skipped":0,"pct":59.82}} ,"/app/js/ui/profileModal/ProfileModerationController.js": {"lines":{"total":932,"covered":655,"skipped":0,"pct":70.27},"functions":{"total":28,"covered":21,"skipped":0,"pct":75},"statements":{"total":932,"covered":655,"skipped":0,"pct":70.27},"branches":{"total":133,"covered":94,"skipped":0,"pct":70.67}} ,"/app/js/ui/profileModal/ProfileRelayController.js": {"lines":{"total":466,"covered":156,"skipped":0,"pct":33.47},"functions":{"total":13,"covered":3,"skipped":0,"pct":23.07},"statements":{"total":466,"covered":156,"skipped":0,"pct":33.47},"branches":{"total":25,"covered":16,"skipped":0,"pct":64}} ,"/app/js/ui/profileModal/ProfileStorageController.js": {"lines":{"total":702,"covered":197,"skipped":0,"pct":28.06},"functions":{"total":16,"covered":7,"skipped":0,"pct":43.75},"statements":{"total":702,"covered":197,"skipped":0,"pct":28.06},"branches":{"total":46,"covered":35,"skipped":0,"pct":76.08}} ,"/app/js/ui/profileModal/ProfileWalletController.js": {"lines":{"total":758,"covered":352,"skipped":0,"pct":46.43},"functions":{"total":25,"covered":17,"skipped":0,"pct":68},"statements":{"total":758,"covered":352,"skipped":0,"pct":46.43},"branches":{"total":107,"covered":85,"skipped":0,"pct":79.43}} ,"/app/js/ui/views/VideoListView.js": {"lines":{"total":1391,"covered":743,"skipped":0,"pct":53.41},"functions":{"total":90,"covered":47,"skipped":0,"pct":52.22},"statements":{"total":1391,"covered":743,"skipped":0,"pct":53.41},"branches":{"total":248,"covered":163,"skipped":0,"pct":65.72}} ,"/app/js/utils/asyncUtils.js": {"lines":{"total":105,"covered":87,"skipped":0,"pct":82.85},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":105,"covered":87,"skipped":0,"pct":82.85},"branches":{"total":21,"covered":17,"skipped":0,"pct":80.95}} ,"/app/js/utils/cardSourceVisibility.js": {"lines":{"total":90,"covered":80,"skipped":0,"pct":88.88},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":90,"covered":80,"skipped":0,"pct":88.88},"branches":{"total":40,"covered":31,"skipped":0,"pct":77.5}} ,"/app/js/utils/cryptoUtils.js": {"lines":{"total":69,"covered":12,"skipped":0,"pct":17.39},"functions":{"total":3,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":12,"skipped":0,"pct":17.39},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} ,"/app/js/utils/domUtils.js": {"lines":{"total":35,"covered":35,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":35,"covered":35,"skipped":0,"pct":100},"branches":{"total":12,"covered":11,"skipped":0,"pct":91.66}} ,"/app/js/utils/formatters.js": {"lines":{"total":126,"covered":81,"skipped":0,"pct":64.28},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":126,"covered":81,"skipped":0,"pct":64.28},"branches":{"total":15,"covered":5,"skipped":0,"pct":33.33}} ,"/app/js/utils/hashtagNormalization.js": {"lines":{"total":50,"covered":42,"skipped":0,"pct":84},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":50,"covered":42,"skipped":0,"pct":84},"branches":{"total":7,"covered":3,"skipped":0,"pct":42.85}} ,"/app/js/utils/hex.js": {"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":18,"covered":18,"skipped":0,"pct":100}} ,"/app/js/utils/linkPreviewSettings.js": {"lines":{"total":150,"covered":126,"skipped":0,"pct":84},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":150,"covered":126,"skipped":0,"pct":84},"branches":{"total":40,"covered":27,"skipped":0,"pct":67.5}} ,"/app/js/utils/logger.js": {"lines":{"total":170,"covered":122,"skipped":0,"pct":71.76},"functions":{"total":14,"covered":12,"skipped":0,"pct":85.71},"statements":{"total":170,"covered":122,"skipped":0,"pct":71.76},"branches":{"total":40,"covered":19,"skipped":0,"pct":47.5}} ,"/app/js/utils/lruCache.js": {"lines":{"total":109,"covered":107,"skipped":0,"pct":98.16},"functions":{"total":8,"covered":7,"skipped":0,"pct":87.5},"statements":{"total":109,"covered":107,"skipped":0,"pct":98.16},"branches":{"total":13,"covered":12,"skipped":0,"pct":92.3}} ,"/app/js/utils/magnetValidators.js": {"lines":{"total":59,"covered":16,"skipped":0,"pct":27.11},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":59,"covered":16,"skipped":0,"pct":27.11},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/utils/mediaLoader.js": {"lines":{"total":82,"covered":71,"skipped":0,"pct":86.58},"functions":{"total":5,"covered":3,"skipped":0,"pct":60},"statements":{"total":82,"covered":71,"skipped":0,"pct":86.58},"branches":{"total":24,"covered":17,"skipped":0,"pct":70.83}} ,"/app/js/utils/mime.js": {"lines":{"total":49,"covered":42,"skipped":0,"pct":85.71},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":49,"covered":42,"skipped":0,"pct":85.71},"branches":{"total":10,"covered":3,"skipped":0,"pct":30}} ,"/app/js/utils/nostrHelpers.js": {"lines":{"total":102,"covered":58,"skipped":0,"pct":56.86},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":102,"covered":58,"skipped":0,"pct":56.86},"branches":{"total":16,"covered":10,"skipped":0,"pct":62.5}} ,"/app/js/utils/pointer.js": {"lines":{"total":27,"covered":21,"skipped":0,"pct":77.77},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":27,"covered":21,"skipped":0,"pct":77.77},"branches":{"total":14,"covered":9,"skipped":0,"pct":64.28}} ,"/app/js/utils/pointerNormalization.js": {"lines":{"total":164,"covered":72,"skipped":0,"pct":43.9},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":164,"covered":72,"skipped":0,"pct":43.9},"branches":{"total":48,"covered":26,"skipped":0,"pct":54.16}} ,"/app/js/utils/profileBatchFetcher.js": {"lines":{"total":80,"covered":68,"skipped":0,"pct":85},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":80,"covered":68,"skipped":0,"pct":85},"branches":{"total":20,"covered":12,"skipped":0,"pct":60}} ,"/app/js/utils/profileMedia.js": {"lines":{"total":84,"covered":80,"skipped":0,"pct":95.23},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":84,"covered":80,"skipped":0,"pct":95.23},"branches":{"total":38,"covered":36,"skipped":0,"pct":94.73}} ,"/app/js/utils/qrcode.js": {"lines":{"total":805,"covered":240,"skipped":0,"pct":29.81},"functions":{"total":69,"covered":1,"skipped":0,"pct":1.44},"statements":{"total":805,"covered":240,"skipped":0,"pct":29.81},"branches":{"total":14,"covered":12,"skipped":0,"pct":85.71}} ,"/app/js/utils/safeDecode.js": {"lines":{"total":32,"covered":26,"skipped":0,"pct":81.25},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":32,"covered":26,"skipped":0,"pct":81.25},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}} ,"/app/js/utils/serviceWorkerFallbackMessages.js": {"lines":{"total":58,"covered":48,"skipped":0,"pct":82.75},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":58,"covered":48,"skipped":0,"pct":82.75},"branches":{"total":21,"covered":19,"skipped":0,"pct":90.47}} ,"/app/js/utils/simpleEventEmitter.js": {"lines":{"total":40,"covered":15,"skipped":0,"pct":37.5},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":40,"covered":15,"skipped":0,"pct":37.5},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}} ,"/app/js/utils/storage.js": {"lines":{"total":114,"covered":48,"skipped":0,"pct":42.1},"functions":{"total":8,"covered":4,"skipped":0,"pct":50},"statements":{"total":114,"covered":48,"skipped":0,"pct":42.1},"branches":{"total":12,"covered":5,"skipped":0,"pct":41.66}} ,"/app/js/utils/storagePointer.js": {"lines":{"total":157,"covered":108,"skipped":0,"pct":68.78},"functions":{"total":11,"covered":10,"skipped":0,"pct":90.9},"statements":{"total":157,"covered":108,"skipped":0,"pct":68.78},"branches":{"total":46,"covered":32,"skipped":0,"pct":69.56}} ,"/app/js/utils/torrentHash.js": {"lines":{"total":72,"covered":58,"skipped":0,"pct":80.55},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":72,"covered":58,"skipped":0,"pct":80.55},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} ,"/app/js/utils/videoDeduper.js": {"lines":{"total":37,"covered":33,"skipped":0,"pct":89.18},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":37,"covered":33,"skipped":0,"pct":89.18},"branches":{"total":11,"covered":8,"skipped":0,"pct":72.72}} ,"/app/js/utils/videoPointer.js": {"lines":{"total":126,"covered":107,"skipped":0,"pct":84.92},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":126,"covered":107,"skipped":0,"pct":84.92},"branches":{"total":44,"covered":37,"skipped":0,"pct":84.09}} ,"/app/js/utils/videoTags.js": {"lines":{"total":136,"covered":128,"skipped":0,"pct":94.11},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":136,"covered":128,"skipped":0,"pct":94.11},"branches":{"total":40,"covered":36,"skipped":0,"pct":90}} ,"/app/js/utils/videoTimestamps.js": {"lines":{"total":106,"covered":104,"skipped":0,"pct":98.11},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":106,"covered":104,"skipped":0,"pct":98.11},"branches":{"total":48,"covered":46,"skipped":0,"pct":95.83}} ,"/app/js/webtorrent/index.js": {"lines":{"total":577,"covered":426,"skipped":0,"pct":73.83},"functions":{"total":26,"covered":15,"skipped":0,"pct":57.69},"statements":{"total":577,"covered":426,"skipped":0,"pct":73.83},"branches":{"total":74,"covered":28,"skipped":0,"pct":37.83}} ,"/app/js/webtorrent/version.cjs": {"lines":{"total":2,"covered":2,"skipped":0,"pct":100},"functions":{"total":22,"covered":22,"skipped":0,"pct":100},"statements":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":22,"covered":22,"skipped":0,"pct":100}} ,"/app/js/webtorrent/lib/file-iterator.js": {"lines":{"total":96,"covered":26,"skipped":0,"pct":27.08},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":96,"covered":26,"skipped":0,"pct":27.08},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/lib/file.js": {"lines":{"total":196,"covered":76,"skipped":0,"pct":38.77},"functions":{"total":13,"covered":2,"skipped":0,"pct":15.38},"statements":{"total":196,"covered":76,"skipped":0,"pct":38.77},"branches":{"total":5,"covered":2,"skipped":0,"pct":40}} ,"/app/js/webtorrent/lib/peer.js": {"lines":{"total":422,"covered":147,"skipped":0,"pct":34.83},"functions":{"total":28,"covered":0,"skipped":0,"pct":0},"statements":{"total":422,"covered":147,"skipped":0,"pct":34.83},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/lib/rarity-map.js": {"lines":{"total":105,"covered":60,"skipped":0,"pct":57.14},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":105,"covered":60,"skipped":0,"pct":57.14},"branches":{"total":4,"covered":3,"skipped":0,"pct":75}} ,"/app/js/webtorrent/lib/selections.js": {"lines":{"total":185,"covered":96,"skipped":0,"pct":51.89},"functions":{"total":14,"covered":3,"skipped":0,"pct":21.42},"statements":{"total":185,"covered":96,"skipped":0,"pct":51.89},"branches":{"total":5,"covered":4,"skipped":0,"pct":80}} ,"/app/js/webtorrent/lib/server.js": {"lines":{"total":452,"covered":69,"skipped":0,"pct":15.26},"functions":{"total":26,"covered":0,"skipped":0,"pct":0},"statements":{"total":452,"covered":69,"skipped":0,"pct":15.26},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/lib/torrent.js": {"lines":{"total":2002,"covered":722,"skipped":0,"pct":36.06},"functions":{"total":66,"covered":20,"skipped":0,"pct":30.3},"statements":{"total":2002,"covered":722,"skipped":0,"pct":36.06},"branches":{"total":87,"covered":35,"skipped":0,"pct":40.22}} ,"/app/js/webtorrent/lib/webconn.js": {"lines":{"total":153,"covered":29,"skipped":0,"pct":18.95},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":153,"covered":29,"skipped":0,"pct":18.95},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/@thaunknown/simple-peer/lite.js": {"lines":{"total":868,"covered":49,"skipped":0,"pct":5.64},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":868,"covered":49,"skipped":0,"pct":5.64},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/@thaunknown/simple-websocket/index.js": {"lines":{"total":250,"covered":54,"skipped":0,"pct":21.6},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":250,"covered":54,"skipped":0,"pct":21.6},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/@thaunknown/thirty-two/lib/thirty-two/index.js": {"lines":{"total":121,"covered":78,"skipped":0,"pct":64.46},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":121,"covered":78,"skipped":0,"pct":64.46},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/addr-to-ip-port/index.js": {"lines":{"total":15,"covered":7,"skipped":0,"pct":46.66},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":15,"covered":7,"skipped":0,"pct":46.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js": {"lines":{"total":50,"covered":48,"skipped":0,"pct":96},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":50,"covered":48,"skipped":0,"pct":96},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/bencode/index.js": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bencode/lib/decode.js": {"lines":{"total":173,"covered":162,"skipped":0,"pct":93.64},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":173,"covered":162,"skipped":0,"pct":93.64},"branches":{"total":23,"covered":17,"skipped":0,"pct":73.91}} ,"/app/js/webtorrent/node_modules/bencode/lib/encode.js": {"lines":{"total":136,"covered":97,"skipped":0,"pct":71.32},"functions":{"total":9,"covered":7,"skipped":0,"pct":77.77},"statements":{"total":136,"covered":97,"skipped":0,"pct":71.32},"branches":{"total":19,"covered":13,"skipped":0,"pct":68.42}} ,"/app/js/webtorrent/node_modules/bencode/lib/encoding-length.js": {"lines":{"total":69,"covered":50,"skipped":0,"pct":72.46},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":50,"skipped":0,"pct":72.46},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bencode/lib/util.js": {"lines":{"total":20,"covered":13,"skipped":0,"pct":65},"functions":{"total":3,"covered":2,"skipped":0,"pct":66.66},"statements":{"total":20,"covered":13,"skipped":0,"pct":65},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/bep53-range/index.js": {"lines":{"total":28,"covered":15,"skipped":0,"pct":53.57},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":15,"skipped":0,"pct":53.57},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bitfield/lib/esm/index.js": {"lines":{"total":136,"covered":64,"skipped":0,"pct":47.05},"functions":{"total":9,"covered":3,"skipped":0,"pct":33.33},"statements":{"total":136,"covered":64,"skipped":0,"pct":47.05},"branches":{"total":6,"covered":3,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/bittorrent-protocol/index.js": {"lines":{"total":1348,"covered":355,"skipped":0,"pct":26.33},"functions":{"total":85,"covered":1,"skipped":0,"pct":1.17},"statements":{"total":1348,"covered":355,"skipped":0,"pct":26.33},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bittorrent-tracker/client.js": {"lines":{"total":292,"covered":101,"skipped":0,"pct":34.58},"functions":{"total":11,"covered":0,"skipped":0,"pct":0},"statements":{"total":292,"covered":101,"skipped":0,"pct":34.58},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bittorrent-tracker/lib/common.js": {"lines":{"total":41,"covered":30,"skipped":0,"pct":73.17},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":41,"covered":30,"skipped":0,"pct":73.17},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bittorrent-tracker/lib/client/tracker.js": {"lines":{"total":28,"covered":9,"skipped":0,"pct":32.14},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":28,"covered":9,"skipped":0,"pct":32.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/bittorrent-tracker/lib/client/websocket-tracker.js": {"lines":{"total":442,"covered":58,"skipped":0,"pct":13.12},"functions":{"total":16,"covered":0,"skipped":0,"pct":0},"statements":{"total":442,"covered":58,"skipped":0,"pct":13.12},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/block-iterator/index.js": {"lines":{"total":45,"covered":19,"skipped":0,"pct":42.22},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":45,"covered":19,"skipped":0,"pct":42.22},"branches":{"total":5,"covered":1,"skipped":0,"pct":20}} ,"/app/js/webtorrent/node_modules/cache-chunk-store/index.js": {"lines":{"total":102,"covered":17,"skipped":0,"pct":16.66},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":102,"covered":17,"skipped":0,"pct":16.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/chunk-store-iterator/index.js": {"lines":{"total":69,"covered":25,"skipped":0,"pct":36.23},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":69,"covered":25,"skipped":0,"pct":36.23},"branches":{"total":6,"covered":1,"skipped":0,"pct":16.66}} ,"/app/js/webtorrent/node_modules/cpus/browser.js": {"lines":{"total":12,"covered":12,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":12,"covered":12,"skipped":0,"pct":100},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}} ,"/app/js/webtorrent/node_modules/create-torrent/index.js": {"lines":{"total":401,"covered":319,"skipped":0,"pct":79.55},"functions":{"total":6,"covered":5,"skipped":0,"pct":83.33},"statements":{"total":401,"covered":319,"skipped":0,"pct":79.55},"branches":{"total":59,"covered":21,"skipped":0,"pct":35.59}} ,"/app/js/webtorrent/node_modules/cross-fetch-ponyfill/browser.js": {"lines":{"total":11,"covered":11,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":11,"covered":11,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/debug/src/browser.js": {"lines":{"total":272,"covered":218,"skipped":0,"pct":80.14},"functions":{"total":6,"covered":3,"skipped":0,"pct":50},"statements":{"total":272,"covered":218,"skipped":0,"pct":80.14},"branches":{"total":17,"covered":7,"skipped":0,"pct":41.17}} ,"/app/js/webtorrent/node_modules/debug/src/common.js": {"lines":{"total":292,"covered":198,"skipped":0,"pct":67.8},"functions":{"total":13,"covered":6,"skipped":0,"pct":46.15},"statements":{"total":292,"covered":198,"skipped":0,"pct":67.8},"branches":{"total":16,"covered":8,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/end-of-stream/index.js": {"lines":{"total":94,"covered":15,"skipped":0,"pct":15.95},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":94,"covered":15,"skipped":0,"pct":15.95},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/err-code/index.js": {"lines":{"total":69,"covered":24,"skipped":0,"pct":34.78},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":69,"covered":24,"skipped":0,"pct":34.78},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/escape-html/index.js": {"lines":{"total":78,"covered":32,"skipped":0,"pct":41.02},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":78,"covered":32,"skipped":0,"pct":41.02},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/events/events.js": {"lines":{"total":523,"covered":145,"skipped":0,"pct":27.72},"functions":{"total":26,"covered":8,"skipped":0,"pct":30.76},"statements":{"total":523,"covered":145,"skipped":0,"pct":27.72},"branches":{"total":48,"covered":23,"skipped":0,"pct":47.91}} ,"/app/js/webtorrent/node_modules/fast-fifo/fixed-size.js": {"lines":{"total":39,"covered":13,"skipped":0,"pct":33.33},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":39,"covered":13,"skipped":0,"pct":33.33},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/fast-fifo/index.js": {"lines":{"total":48,"covered":15,"skipped":0,"pct":31.25},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":48,"covered":15,"skipped":0,"pct":31.25},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/fast-readable-async-iterator/index.js": {"lines":{"total":34,"covered":7,"skipped":0,"pct":20.58},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":7,"skipped":0,"pct":20.58},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/filename-reserved-regex/index.js": {"lines":{"total":9,"covered":9,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":9,"covered":9,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/fsa-chunk-store/createWritable.js": {"lines":{"total":243,"covered":42,"skipped":0,"pct":17.28},"functions":{"total":9,"covered":0,"skipped":0,"pct":0},"statements":{"total":243,"covered":42,"skipped":0,"pct":17.28},"branches":{"total":3,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/fsa-chunk-store/index.js": {"lines":{"total":323,"covered":14,"skipped":0,"pct":4.33},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":323,"covered":14,"skipped":0,"pct":4.33},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/immediate-chunk-store/index.js": {"lines":{"total":55,"covered":28,"skipped":0,"pct":50.9},"functions":{"total":6,"covered":2,"skipped":0,"pct":33.33},"statements":{"total":55,"covered":28,"skipped":0,"pct":50.9},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}} ,"/app/js/webtorrent/node_modules/inherits/inherits_browser.js": {"lines":{"total":27,"covered":16,"skipped":0,"pct":59.25},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":27,"covered":16,"skipped":0,"pct":59.25},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/join-async-iterator/index.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/junk/index.js": {"lines":{"total":34,"covered":32,"skipped":0,"pct":94.11},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":34,"covered":32,"skipped":0,"pct":94.11},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/limiter/index.js": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/limiter/lib/clock.js": {"lines":{"total":13,"covered":3,"skipped":0,"pct":23.07},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":13,"covered":3,"skipped":0,"pct":23.07},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/limiter/lib/rateLimiter.js": {"lines":{"total":137,"covered":54,"skipped":0,"pct":39.41},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":137,"covered":54,"skipped":0,"pct":39.41},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/limiter/lib/tokenBucket.js": {"lines":{"total":167,"covered":69,"skipped":0,"pct":41.31},"functions":{"total":4,"covered":1,"skipped":0,"pct":25},"statements":{"total":167,"covered":69,"skipped":0,"pct":41.31},"branches":{"total":4,"covered":1,"skipped":0,"pct":25}} ,"/app/js/webtorrent/node_modules/lru/index.js": {"lines":{"total":145,"covered":27,"skipped":0,"pct":18.62},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":145,"covered":27,"skipped":0,"pct":18.62},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/lt_donthave/index.js": {"lines":{"total":67,"covered":7,"skipped":0,"pct":10.44},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":67,"covered":7,"skipped":0,"pct":10.44},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/magnet-uri/index.js": {"lines":{"total":176,"covered":69,"skipped":0,"pct":39.2},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":176,"covered":69,"skipped":0,"pct":39.2},"branches":{"total":23,"covered":9,"skipped":0,"pct":39.13}} ,"/app/js/webtorrent/node_modules/memory-chunk-store/index.js": {"lines":{"total":65,"covered":29,"skipped":0,"pct":44.61},"functions":{"total":5,"covered":2,"skipped":0,"pct":40},"statements":{"total":65,"covered":29,"skipped":0,"pct":44.61},"branches":{"total":8,"covered":3,"skipped":0,"pct":37.5}} ,"/app/js/webtorrent/node_modules/mime/Mime.js": {"lines":{"total":97,"covered":89,"skipped":0,"pct":91.75},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":97,"covered":89,"skipped":0,"pct":91.75},"branches":{"total":12,"covered":9,"skipped":0,"pct":75}} ,"/app/js/webtorrent/node_modules/mime/lite.js": {"lines":{"total":4,"covered":4,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":4,"covered":4,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/mime/types/standard.js": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/ms/index.js": {"lines":{"total":162,"covered":146,"skipped":0,"pct":90.12},"functions":{"total":2,"covered":0,"skipped":0,"pct":0},"statements":{"total":162,"covered":146,"skipped":0,"pct":90.12},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/once/once.js": {"lines":{"total":42,"covered":12,"skipped":0,"pct":28.57},"functions":{"total":3,"covered":1,"skipped":0,"pct":33.33},"statements":{"total":42,"covered":12,"skipped":0,"pct":28.57},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/parse-torrent/index.js": {"lines":{"total":264,"covered":180,"skipped":0,"pct":68.18},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":264,"covered":180,"skipped":0,"pct":68.18},"branches":{"total":29,"covered":8,"skipped":0,"pct":27.58}} ,"/app/js/webtorrent/node_modules/path-esm/index.js": {"lines":{"total":18,"covered":18,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":18,"covered":18,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/path-esm/lib/basename.js": {"lines":{"total":72,"covered":72,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":72,"covered":72,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/path-esm/lib/dirname.js": {"lines":{"total":26,"covered":3,"skipped":0,"pct":11.53},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":3,"skipped":0,"pct":11.53},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/path-esm/lib/join.js": {"lines":{"total":16,"covered":16,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":16,"covered":16,"skipped":0,"pct":100},"branches":{"total":5,"covered":3,"skipped":0,"pct":60}} ,"/app/js/webtorrent/node_modules/path-esm/lib/normalize.js": {"lines":{"total":19,"covered":18,"skipped":0,"pct":94.73},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":19,"covered":18,"skipped":0,"pct":94.73},"branches":{"total":5,"covered":1,"skipped":0,"pct":20}} ,"/app/js/webtorrent/node_modules/path-esm/lib/util.js": {"lines":{"total":72,"covered":43,"skipped":0,"pct":59.72},"functions":{"total":3,"covered":3,"skipped":0,"pct":100},"statements":{"total":72,"covered":43,"skipped":0,"pct":59.72},"branches":{"total":18,"covered":13,"skipped":0,"pct":72.22}} ,"/app/js/webtorrent/node_modules/piece-length/index.js": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":5,"covered":5,"skipped":0,"pct":100},"branches":{"total":2,"covered":1,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/pump/index.js": {"lines":{"total":86,"covered":32,"skipped":0,"pct":37.2},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":86,"covered":32,"skipped":0,"pct":37.2},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/queue-microtask/index.js": {"lines":{"total":9,"covered":5,"skipped":0,"pct":55.55},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":9,"covered":5,"skipped":0,"pct":55.55},"branches":{"total":2,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/queue-tick/queue-microtask.js": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/random-iterate/index.js": {"lines":{"total":19,"covered":10,"skipped":0,"pct":52.63},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":19,"covered":10,"skipped":0,"pct":52.63},"branches":{"total":3,"covered":2,"skipped":0,"pct":66.66}} ,"/app/js/webtorrent/node_modules/range-parser/index.js": {"lines":{"total":162,"covered":84,"skipped":0,"pct":51.85},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":162,"covered":84,"skipped":0,"pct":51.85},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/rc4/rc4.js": {"lines":{"total":204,"covered":55,"skipped":0,"pct":26.96},"functions":{"total":15,"covered":1,"skipped":0,"pct":6.66},"statements":{"total":204,"covered":55,"skipped":0,"pct":26.96},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/run-parallel/index.js": {"lines":{"total":51,"covered":43,"skipped":0,"pct":84.31},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":51,"covered":43,"skipped":0,"pct":84.31},"branches":{"total":14,"covered":11,"skipped":0,"pct":78.57}} ,"/app/js/webtorrent/node_modules/run-parallel-limit/index.js": {"lines":{"total":70,"covered":5,"skipped":0,"pct":7.14},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":70,"covered":5,"skipped":0,"pct":7.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/speed-limiter/index.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/speed-limiter/lib/throttle-group.js": {"lines":{"total":91,"covered":62,"skipped":0,"pct":68.13},"functions":{"total":11,"covered":4,"skipped":0,"pct":36.36},"statements":{"total":91,"covered":62,"skipped":0,"pct":68.13},"branches":{"total":13,"covered":4,"skipped":0,"pct":30.76}} ,"/app/js/webtorrent/node_modules/speed-limiter/lib/throttle.js": {"lines":{"total":143,"covered":47,"skipped":0,"pct":32.86},"functions":{"total":10,"covered":0,"skipped":0,"pct":0},"statements":{"total":143,"covered":47,"skipped":0,"pct":32.86},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/speed-limiter/lib/utils.js": {"lines":{"total":7,"covered":4,"skipped":0,"pct":57.14},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":7,"covered":4,"skipped":0,"pct":57.14},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/streamx/index.js": {"lines":{"total":1170,"covered":348,"skipped":0,"pct":29.74},"functions":{"total":97,"covered":0,"skipped":0,"pct":0},"statements":{"total":1170,"covered":348,"skipped":0,"pct":29.74},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/text-decoder/index.js": {"lines":{"total":64,"covered":39,"skipped":0,"pct":60.93},"functions":{"total":5,"covered":0,"skipped":0,"pct":0},"statements":{"total":64,"covered":39,"skipped":0,"pct":60.93},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/text-decoder/lib/browser-decoder.js": {"lines":{"total":17,"covered":9,"skipped":0,"pct":52.94},"functions":{"total":4,"covered":0,"skipped":0,"pct":0},"statements":{"total":17,"covered":9,"skipped":0,"pct":52.94},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/throughput/index.js": {"lines":{"total":35,"covered":17,"skipped":0,"pct":48.57},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":35,"covered":17,"skipped":0,"pct":48.57},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/torrent-discovery/index.js": {"lines":{"total":224,"covered":110,"skipped":0,"pct":49.1},"functions":{"total":14,"covered":2,"skipped":0,"pct":14.28},"statements":{"total":224,"covered":110,"skipped":0,"pct":49.1},"branches":{"total":20,"covered":2,"skipped":0,"pct":10}} ,"/app/js/webtorrent/node_modules/torrent-piece/index.js": {"lines":{"total":107,"covered":32,"skipped":0,"pct":29.9},"functions":{"total":12,"covered":0,"skipped":0,"pct":0},"statements":{"total":107,"covered":32,"skipped":0,"pct":29.9},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/uint8-util/browser.js": {"lines":{"total":68,"covered":48,"skipped":0,"pct":70.58},"functions":{"total":7,"covered":5,"skipped":0,"pct":71.42},"statements":{"total":68,"covered":48,"skipped":0,"pct":70.58},"branches":{"total":12,"covered":6,"skipped":0,"pct":50}} ,"/app/js/webtorrent/node_modules/uint8-util/util.js": {"lines":{"total":66,"covered":61,"skipped":0,"pct":92.42},"functions":{"total":15,"covered":11,"skipped":0,"pct":73.33},"statements":{"total":66,"covered":61,"skipped":0,"pct":92.42},"branches":{"total":20,"covered":19,"skipped":0,"pct":95}} ,"/app/js/webtorrent/node_modules/unordered-array-remove/index.js": {"lines":{"total":12,"covered":2,"skipped":0,"pct":16.66},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":12,"covered":2,"skipped":0,"pct":16.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/ut_metadata/index.js": {"lines":{"total":246,"covered":14,"skipped":0,"pct":5.69},"functions":{"total":1,"covered":0,"skipped":0,"pct":0},"statements":{"total":246,"covered":14,"skipped":0,"pct":5.69},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}} ,"/app/js/webtorrent/node_modules/webrtc-polyfill/browser.js": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":0,"covered":0,"skipped":0,"pct":100},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":1,"covered":0,"skipped":0,"pct":0}} ,"/app/js/webtorrent/node_modules/wrappy/wrappy.js": {"lines":{"total":33,"covered":18,"skipped":0,"pct":54.54},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":33,"covered":18,"skipped":0,"pct":54.54},"branches":{"total":3,"covered":1,"skipped":0,"pct":33.33}} ,"/app/js/webtorrent/polyfills/process-fast.js": {"lines":{"total":40,"covered":39,"skipped":0,"pct":97.5},"functions":{"total":28,"covered":3,"skipped":0,"pct":10.71},"statements":{"total":40,"covered":39,"skipped":0,"pct":97.5},"branches":{"total":3,"covered":3,"skipped":0,"pct":100}} ,"/app/js/webtorrent/webpack/bootstrap": {"lines":{"total":23,"covered":23,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":23,"covered":23,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} ,"/app/js/webtorrent/webpack/runtime/create%20fake%20namespace%20object": {"lines":{"total":26,"covered":26,"skipped":0,"pct":100},"functions":{"total":4,"covered":3,"skipped":0,"pct":75},"statements":{"total":26,"covered":26,"skipped":0,"pct":100},"branches":{"total":11,"covered":4,"skipped":0,"pct":36.36}} ,"/app/js/webtorrent/webpack/runtime/define%20property%20getters": {"lines":{"total":8,"covered":8,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":8,"covered":8,"skipped":0,"pct":100},"branches":{"total":2,"covered":2,"skipped":0,"pct":100}} ,"/app/js/webtorrent/webpack/runtime/hasOwnProperty%20shorthand": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/js/webtorrent/webpack/runtime/make%20namespace%20object": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":1,"covered":1,"skipped":0,"pct":100}} ,"/app/scripts/run-unit-tests.mjs": {"lines":{"total":205,"covered":134,"skipped":0,"pct":65.36},"functions":{"total":4,"covered":4,"skipped":0,"pct":100},"statements":{"total":205,"covered":134,"skipped":0,"pct":65.36},"branches":{"total":38,"covered":17,"skipped":0,"pct":44.73}} ,"/app/scripts/agent/setup-test-env.js": {"lines":{"total":42,"covered":20,"skipped":0,"pct":47.61},"functions":{"total":6,"covered":0,"skipped":0,"pct":0},"statements":{"total":42,"covered":20,"skipped":0,"pct":47.61},"branches":{"total":8,"covered":1,"skipped":0,"pct":12.5}} ,"/app/torrent/ui/styleHelpers.js": {"lines":{"total":7,"covered":7,"skipped":0,"pct":100},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":7,"covered":7,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}} ,"/app/torrent/ui/toastService.js": {"lines":{"total":191,"covered":163,"skipped":0,"pct":85.34},"functions":{"total":15,"covered":8,"skipped":0,"pct":53.33},"statements":{"total":191,"covered":163,"skipped":0,"pct":85.34},"branches":{"total":21,"covered":11,"skipped":0,"pct":52.38}} ,"/app/vendor/crypto-helpers.bundle.min.js": {"lines":{"total":10,"covered":10,"skipped":0,"pct":100},"functions":{"total":68,"covered":38,"skipped":0,"pct":55.88},"statements":{"total":10,"covered":10,"skipped":0,"pct":100},"branches":{"total":82,"covered":57,"skipped":0,"pct":69.51}} ,"/app/vendor/floating-ui.dom.bundle.min.js": {"lines":{"total":1,"covered":1,"skipped":0,"pct":100},"functions":{"total":83,"covered":60,"skipped":0,"pct":72.28},"statements":{"total":1,"covered":1,"skipped":0,"pct":100},"branches":{"total":205,"covered":96,"skipped":0,"pct":46.82}} }