diff --git a/.gitignore b/.gitignore index 14174149..40ca6124 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,9 @@ nbactions.xml */.classpath */.settings/* */.tscache/* + +openvidu-components-angular/node_modules/ + +openvidu-components-angular/.angular/ + +openvidu-components-angular/dist/ diff --git a/openvidu-components-angular/LICENSE b/openvidu-components-angular/LICENSE new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/openvidu-components-angular/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/openvidu-components-angular/README.md b/openvidu-components-angular/README.md new file mode 100644 index 00000000..6fda1961 --- /dev/null +++ b/openvidu-components-angular/README.md @@ -0,0 +1,33 @@ +# OpenviduComponents + + +## Architechture + +``` +openvidu-components-angular +│ +└─── src (openvidu-components-testapp) +│ +└───projects + │ + └─── openvidu-components-angular +``` + +## Development server + +Run `ng serve` for a dev server. + +Run, in a new terminal, `npm run lib:serve` for serving the openvidu-components-angular library with live reload + +## Code scaffolding + +For generate new components in openvidu-components-angular: + +```bash +ng g component components/component-name --project=openvidu-components-angular +``` + + +## Build + +Run `npm run lib:build` to build the library.See more [here](projects/openvidu-components-angular/README.md) diff --git a/openvidu-components-angular/angular.json b/openvidu-components-angular/angular.json new file mode 100644 index 00000000..f3c0dfb5 --- /dev/null +++ b/openvidu-components-angular/angular.json @@ -0,0 +1,172 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "openvidu-components-testapp": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/openvidu-components-testapp", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "development": { + "optimization": false, + "outputHashing": "all", + "sourceMap": true, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": false + }, + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "openvidu-components-testapp:build", + "proxyConfig": "src/proxy.config.json" + }, + "configurations": { + "development": { + "browserTarget": "openvidu-components-testapp:build:development" + }, + "production": { + "browserTarget": "openvidu-components-testapp:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "openvidu-components-testapp:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "tsconfig.app.json", + "tsconfig.spec.json", + "e2e/tsconfig.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "openvidu-components-testapp:serve" + }, + "configurations": { + "production": { + "devServerTarget": "openvidu-components-testapp:serve:production" + } + } + } + } + }, + "openvidu-components-angular": { + "projectType": "library", + "root": "projects/openvidu-components-angular", + "sourceRoot": "projects/openvidu-components-angular/src", + "prefix": "ov", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:ng-packagr", + "options": { + "project": "projects/openvidu-components-angular/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/openvidu-components-angular/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "projects/openvidu-components-angular/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/openvidu-components-angular/src/test.ts", + "tsConfig": "projects/openvidu-components-angular/tsconfig.spec.json", + "karmaConfig": "projects/openvidu-components-angular/karma.conf.js" + } + } + } + }}, + "defaultProject": "openvidu-components-testapp" +} diff --git a/openvidu-components-angular/coverage/openvidu-components/base.css b/openvidu-components-angular/coverage/openvidu-components/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/openvidu-components-angular/coverage/openvidu-components/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/openvidu-components-angular/coverage/openvidu-components/block-navigation.js b/openvidu-components-angular/coverage/openvidu-components/block-navigation.js new file mode 100644 index 00000000..c7ff5a5c --- /dev/null +++ b/openvidu-components-angular/coverage/openvidu-components/block-navigation.js @@ -0,0 +1,79 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/openvidu-components-angular/coverage/openvidu-components/favicon.png b/openvidu-components-angular/coverage/openvidu-components/favicon.png new file mode 100644 index 00000000..66918178 Binary files /dev/null and b/openvidu-components-angular/coverage/openvidu-components/favicon.png differ diff --git a/openvidu-components-angular/coverage/openvidu-components/index.html b/openvidu-components-angular/coverage/openvidu-components/index.html new file mode 100644 index 00000000..5ced8b94 --- /dev/null +++ b/openvidu-components-angular/coverage/openvidu-components/index.html @@ -0,0 +1,531 @@ + + + + +
++ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+File | ++ | Statements | ++ | Branches | ++ | Functions | ++ | Lines | ++ |
---|---|---|---|---|---|---|---|---|---|
src | +
+
+ |
+ 0% | +0/0 | +0% | +0/0 | +0% | +0/0 | +0% | +0/0 | +
src/lib | +
+
+ |
+ 84.09% | +37/44 | +45.45% | +30/66 | +77.77% | +7/9 | +85.18% | +23/27 | +
src/lib/components/chat | +
+
+ |
+ 65.11% | +28/43 | +38.88% | +14/36 | +56.25% | +9/16 | +62.16% | +23/37 | +
src/lib/components/footer | +
+
+ |
+ 88% | +22/25 | +42.3% | +11/26 | +87.5% | +7/8 | +89.47% | +17/19 | +
src/lib/components/layout | +
+
+ |
+ 91.66% | +44/48 | +44.11% | +15/34 | +84.61% | +11/13 | +92.85% | +39/42 | +
src/lib/components/material | +
+
+ |
+ 66.66% | +12/18 | +45.45% | +10/22 | +25% | +1/4 | +66.66% | +8/12 | +
src/lib/components/participant | +
+
+ |
+ 42.25% | +30/71 | +22.8% | +13/57 | +35% | +7/20 | +38.46% | +25/65 | +
src/lib/components/room | +
+
+ |
+ 30.71% | +43/140 | +20% | +19/95 | +25% | +9/36 | +29.45% | +38/129 | +
src/lib/components/toolbar | +
+
+ |
+ 38.78% | +64/165 | +25.8% | +24/93 | +41.46% | +17/41 | +37.25% | +57/153 | +
src/lib/components/user-settings | +
+
+ |
+ 42.7% | +79/185 | +24.39% | +40/164 | +44.44% | +20/45 | +41.04% | +71/173 | +
src/lib/components/video | +
+
+ |
+ 55.17% | +16/29 | +37.5% | +12/32 | +55.55% | +5/9 | +50% | +12/24 | +
src/lib/config | +
+
+ |
+ 40.74% | +11/27 | +31.25% | +10/32 | +20% | +1/5 | +31.81% | +7/22 | +
src/lib/matchers | +
+
+ |
+ 0% | +0/2 | +0% | +0/7 | +0% | +0/1 | +0% | +0/2 | +
src/lib/models | +
+
+ |
+ 17.56% | +39/222 | +18.32% | +35/191 | +26.53% | +13/49 | +18.13% | +39/215 | +
src/lib/pipes | +
+
+ |
+ 81.25% | +26/32 | +43.47% | +20/46 | +42.85% | +3/7 | +85.71% | +18/21 | +
src/lib/services/action | +
+
+ |
+ 65.11% | +28/43 | +40% | +20/50 | +42.85% | +6/14 | +58.06% | +18/31 | +
src/lib/services/cdk-overlay | +
+
+ |
+ 90% | +27/30 | +45.45% | +20/44 | +87.5% | +7/8 | +94.44% | +17/18 | +
src/lib/services/chat | +
+
+ |
+ 68.25% | +43/63 | +40% | +20/50 | +40% | +6/15 | +64.7% | +33/51 | +
src/lib/services/device | +
+
+ |
+ 79.61% | +125/157 | +71.77% | +89/124 | +79.72% | +59/74 | +83.33% | +105/126 | +
src/lib/services/document | +
+
+ |
+ 48.38% | +30/62 | +28.57% | +24/84 | +38.88% | +7/18 | +40% | +20/50 | +
src/lib/services/layout | +
+
+ |
+ 74.54% | +41/55 | +42.3% | +22/52 | +50% | +11/22 | +72.09% | +31/43 | +
src/lib/services/library-config | +
+
+ |
+ 85.71% | +30/35 | +43.33% | +26/60 | +70% | +7/10 | +86.95% | +20/23 | +
src/lib/services/local-user | +
+
+ |
+ 47.11% | +49/104 | +21.27% | +20/94 | +16.66% | +9/54 | +42.39% | +39/92 | +
src/lib/services/logger | +
+
+ |
+ 68.18% | +30/44 | +43.47% | +20/46 | +56.25% | +9/16 | +62.5% | +20/32 | +
src/lib/services/platform | +
+
+ |
+ 62.79% | +27/43 | +29.85% | +20/67 | +38.88% | +7/18 | +54.83% | +17/31 | +
src/lib/services/remote-user | +
+
+ |
+ 38.77% | +38/98 | +19.6% | +20/102 | +19.44% | +7/36 | +34.14% | +28/82 | +
src/lib/services/storage | +
+
+ |
+ 92.68% | +38/41 | +51.92% | +27/52 | +91.66% | +11/12 | +96.55% | +28/29 | +
src/lib/services/token | +
+
+ |
+ 79.48% | +31/39 | +45.45% | +20/44 | +42.85% | +6/14 | +77.77% | +21/27 | +
src/lib/services/webrtc | +
+
+ |
+ 27.14% | +60/221 | +13.36% | +27/202 | +9.8% | +10/102 | +25.12% | +50/199 | +