diff --git a/.dockerignore b/.dockerignore index c4b1a684d..cbf42b71f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,7 +18,6 @@ **/Dockerfile* **/node_modules **/npm-debug.log -**/www **/secrets.dev.yaml **/values.dev.yaml LICENSE diff --git a/__bitbucket-pipelines.yml b/bitbucket-pipelines.yml similarity index 100% rename from __bitbucket-pipelines.yml rename to bitbucket-pipelines.yml diff --git a/dockerfile b/dockerfile index 50b0ed4d3..3bd1f9a6d 100644 --- a/dockerfile +++ b/dockerfile @@ -4,6 +4,7 @@ COPY ./package*.json /app/ RUN npm config set unsafe-perm true RUN npm install -g ionic RUN npm config set legacy-peer-deps true +RUN npm i -D typescript@4.3.5 RUN npm install --save --legacy-peer-deps COPY ./ /app/ RUN ionic build --prod @@ -11,4 +12,4 @@ RUN ionic build --prod FROM nginx:alpine COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf RUN rm -rf /usr/share/nginx/html/* -COPY --from=build /app/www/ /usr/share/nginx/html/ \ No newline at end of file +COPY /www/ /usr/share/nginx/html/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2e1287c84..d8a39cb45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,9 @@ { "name": "gabinete-digital", "version": "0.0.1", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, +<<<<<<< HEAD "packages": { "": { "name": "gabinete-digital", @@ -31966,6 +31967,8 @@ } } }, +======= +>>>>>>> b1b28d97e5e154d67ee3e1041a51f1669de00b65 "dependencies": { "@ampproject/remapping": { "version": "1.0.1", @@ -32597,6 +32600,7 @@ "version": "12.2.8", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.8.tgz", "integrity": "sha512-11AswnrVeipKibK0Ra4n3TjZfr6QYpiNGPvT6XQB9NLgSthAPTa9T1Bige2yQhgyWNaZsOPko/jhhNS8ufSZCg==", + "dev": true, "requires": { "tslib": "^2.2.0" } @@ -32605,6 +32609,7 @@ "version": "12.2.8", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.8.tgz", "integrity": "sha512-KFGYsDATUCEoY4KEVcpxyT5S0k2T14hIlmBxzmzRhsCVi2ZLti5E2tnqQi2klKCFxmsk7VYd3kqWRJWBZieQtA==", + "dev": true, "requires": { "@babel/core": "^7.8.6", "@babel/types": "^7.8.6", @@ -32626,6 +32631,7 @@ "version": "7.15.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -32647,19 +32653,22 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -32761,7 +32770,7 @@ "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/core/-/core-5.40.0.tgz", "integrity": "sha512-tk5QlnXfSE2Zu3mJVC3f11Guu5iqnLtNkvvClNHjz/e4FsJEmprfXWCv/QImWs5fLsismHcn31LKYBfWIhOv9g==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -32776,7 +32785,7 @@ "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/document-viewer/-/document-viewer-5.41.0.tgz", "integrity": "sha512-90zZvtYuCHTvK55LDoESd7F3OtuDj8AJ0C0Owz+PqZq2J2fUP4fzd7lJE89Cp6vZet7rjiOz7d/8hbTxKMWsdg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -32791,7 +32800,7 @@ "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/file/-/file-5.41.0.tgz", "integrity": "sha512-1UrtbRdHIDZEFD6UnKFeBpITK+UqrAhr/saJmMsXLjCtsdJFB05abNHzcfdBO+z3mQFK/DnMQ0YdYJtR5x6zYw==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -32806,7 +32815,7 @@ "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/file-opener/-/file-opener-5.41.0.tgz", "integrity": "sha512-CFdAum1EOxSdi+yMzEkOribU/joaDiqs1lL/ddxj7I78ryzlU+dj7rg6HZKvAN7aTjbWTX6A3p628eNpQoopgg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -32821,7 +32830,7 @@ "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/multiple-document-picker/-/multiple-document-picker-5.40.0.tgz", "integrity": "sha512-7mYRo2yulfgStK0XsPaTUJigFbYwlQy/qWjLRbNHMbEUOk372a/HnjTUwFBFT+oWX8k0Rn9hjX50Xsqoz46hyQ==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -32842,7 +32851,8 @@ "@babel/compat-data": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true }, "@babel/core": { "version": "7.8.3", @@ -32918,6 +32928,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "dev": true, "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", @@ -32928,7 +32939,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -33030,6 +33042,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -33038,6 +33051,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -33046,6 +33060,7 @@ "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", @@ -33061,6 +33076,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -33068,7 +33084,8 @@ "@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true }, "@babel/helper-remap-async-to-generator": { "version": "7.15.4", @@ -33096,6 +33113,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", @@ -33107,6 +33125,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -33136,7 +33155,8 @@ "@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true }, "@babel/helper-wrap-function": { "version": "7.15.4", @@ -33405,6 +33425,7 @@ "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33413,6 +33434,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33421,6 +33443,7 @@ "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" } @@ -33456,6 +33479,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -33464,6 +33488,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33472,6 +33497,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -33480,6 +33506,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33488,6 +33515,7 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -33496,6 +33524,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33504,6 +33533,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33512,6 +33542,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -33529,6 +33560,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -33537,6 +33569,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -34035,7 +34068,8 @@ "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "@byteowls/capacitor-filesharer": { "version": "3.0.0", @@ -34050,7 +34084,7 @@ "resolved": "https://registry.npmjs.org/@capacitor-community/camera-preview/-/camera-preview-1.2.1.tgz", "integrity": "sha512-rskj/12TR4X8cUzvkWvygf7A/4TFUld9BU5nAc1gc3LXU06FGP0R/6MxZKQdf20qqRaTRLPrF3HFAlkz7xb6yg==", "requires": { - "@capacitor/core": "latest" + "@capacitor/core": "^3.6.0" }, "dependencies": { "@capacitor/core": { @@ -34066,26 +34100,22 @@ "@capacitor/android": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-3.6.0.tgz", - "integrity": "sha512-X6n0OLy7BE3c6qfVuL7UYyq/aIwEsqIAqtyDOwMdj5k+P1rLQVsGaWERXUtC0BGeoKBD5YgbWiyKwAwg5Spjdg==", - "requires": {} + "integrity": "sha512-X6n0OLy7BE3c6qfVuL7UYyq/aIwEsqIAqtyDOwMdj5k+P1rLQVsGaWERXUtC0BGeoKBD5YgbWiyKwAwg5Spjdg==" }, "@capacitor/app": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@capacitor/app/-/app-1.0.5.tgz", - "integrity": "sha512-U0dAw1CAjKyguSRxKDabszsQ4dj679RnxaUZrSHDR5Jnt5x308oQuKXFP++wnMBbw72D02iqjG0a+/Ujye7C9g==", - "requires": {} + "integrity": "sha512-U0dAw1CAjKyguSRxKDabszsQ4dj679RnxaUZrSHDR5Jnt5x308oQuKXFP++wnMBbw72D02iqjG0a+/Ujye7C9g==" }, "@capacitor/browser": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@capacitor/browser/-/browser-1.0.6.tgz", - "integrity": "sha512-ZDx+HNPRQZKHpWxbYEyDz34Ge4fwhiiGg2UEnA+ol+pmdvHyYxw/c8HafCEVRJutHrXcVdSNoBNAeEPkQeabrQ==", - "requires": {} + "integrity": "sha512-ZDx+HNPRQZKHpWxbYEyDz34Ge4fwhiiGg2UEnA+ol+pmdvHyYxw/c8HafCEVRJutHrXcVdSNoBNAeEPkQeabrQ==" }, "@capacitor/camera": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-1.2.0.tgz", - "integrity": "sha512-NAIGWnyHBGQ/dgla/D4KDkAeQ2f3fzw+D+DIkGNH3f1ciX4bXC7lNbDVU67SMOuNt+CmcTJF64q3nVXcpv5JvQ==", - "requires": {} + "integrity": "sha512-NAIGWnyHBGQ/dgla/D4KDkAeQ2f3fzw+D+DIkGNH3f1ciX4bXC7lNbDVU67SMOuNt+CmcTJF64q3nVXcpv5JvQ==" }, "@capacitor/cli": { "version": "3.3.2", @@ -34202,62 +34232,52 @@ "@capacitor/device": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@capacitor/device/-/device-1.1.0.tgz", - "integrity": "sha512-HCFwOxmK7igEgNm20y+zYi+XQ0OlZYnE4oCaI82TGmA7sehlDpBBKbjmI2Bd8aM09+BXFbAAtq7JCxkEfY8nIg==", - "requires": {} + "integrity": "sha512-HCFwOxmK7igEgNm20y+zYi+XQ0OlZYnE4oCaI82TGmA7sehlDpBBKbjmI2Bd8aM09+BXFbAAtq7JCxkEfY8nIg==" }, "@capacitor/filesystem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@capacitor/filesystem/-/filesystem-1.1.0.tgz", - "integrity": "sha512-8O3UuvL8HNUEJvZnmn8yUmvgB1evtXfcF0oxIo3YbSlylqywJwS3JTiuhKmsvSxCdpbTy8IaTsutVh3gZgWbKg==", - "requires": {} + "integrity": "sha512-8O3UuvL8HNUEJvZnmn8yUmvgB1evtXfcF0oxIo3YbSlylqywJwS3JTiuhKmsvSxCdpbTy8IaTsutVh3gZgWbKg==" }, "@capacitor/haptics": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-1.1.4.tgz", - "integrity": "sha512-+pJIb5X7xAcbrWj6rJaV+cwBlv8aFwB1/Ob6EV4atydThuuVSSsAL4hI4ZYlPNOxM6H5s+ZDLj7Pa2os4eFmtg==", - "requires": {} + "integrity": "sha512-+pJIb5X7xAcbrWj6rJaV+cwBlv8aFwB1/Ob6EV4atydThuuVSSsAL4hI4ZYlPNOxM6H5s+ZDLj7Pa2os4eFmtg==" }, "@capacitor/ios": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-3.4.1.tgz", - "integrity": "sha512-ycFCyKI8DsgedVg7PW5MpCVgqFuD0PMHQGVfC5ichXc2C/jAATX32EVdEMCB0N3guKoH2k6T3Efwg59+Fcdx2w==", - "requires": {} + "integrity": "sha512-ycFCyKI8DsgedVg7PW5MpCVgqFuD0PMHQGVfC5ichXc2C/jAATX32EVdEMCB0N3guKoH2k6T3Efwg59+Fcdx2w==" }, "@capacitor/keyboard": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@capacitor/keyboard/-/keyboard-1.1.3.tgz", - "integrity": "sha512-WpD1f/3HH6IpADiRaFTDGdhrqYhZDikybXXhUdGAEEwHbErHt9zS5RQgbeROjGmkXcurVvQsalQ59YuKU0VzwA==", - "requires": {} + "integrity": "sha512-WpD1f/3HH6IpADiRaFTDGdhrqYhZDikybXXhUdGAEEwHbErHt9zS5RQgbeROjGmkXcurVvQsalQ59YuKU0VzwA==" }, "@capacitor/local-notifications": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@capacitor/local-notifications/-/local-notifications-1.1.0.tgz", - "integrity": "sha512-l6S9rBylxGPq/U+xpJzZcOL4l2s8I2Igq7uDTidR4imIxxX3bLRz9nDSQREWsbQkFx7ALFm/5Y8PJGz2C6qKPw==", - "requires": {} + "integrity": "sha512-l6S9rBylxGPq/U+xpJzZcOL4l2s8I2Igq7uDTidR4imIxxX3bLRz9nDSQREWsbQkFx7ALFm/5Y8PJGz2C6qKPw==" }, "@capacitor/network": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@capacitor/network/-/network-1.0.6.tgz", - "integrity": "sha512-xkkmRLlFcg1dM0WfblxKwcKFjcfBQ04yWYX0ubD/n5QfQjLCCb8GbAHlorqIyt2j4PUvSAb0ERLyL89hpKlh2w==", - "requires": {} + "integrity": "sha512-xkkmRLlFcg1dM0WfblxKwcKFjcfBQ04yWYX0ubD/n5QfQjLCCb8GbAHlorqIyt2j4PUvSAb0ERLyL89hpKlh2w==" }, "@capacitor/push-notifications": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@capacitor/push-notifications/-/push-notifications-1.0.9.tgz", - "integrity": "sha512-NaH+drTYjOGgFMHl/2Jn1/+2rlgomtwP2NfK20E0i7+QoRze1ArcSThJ4vSF0m7VkYBsH3MgbXkWfNSSPaYrtw==", - "requires": {} + "integrity": "sha512-NaH+drTYjOGgFMHl/2Jn1/+2rlgomtwP2NfK20E0i7+QoRze1ArcSThJ4vSF0m7VkYBsH3MgbXkWfNSSPaYrtw==" }, "@capacitor/share": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@capacitor/share/-/share-1.0.7.tgz", - "integrity": "sha512-v7FRld2SdV64YjrZrKGoDyfYqcoEC2I4tk6nkhbOI8ZOaqm6XNiqCWEeTdeb6XPwDftozmfILSzhCxbASrXKMg==", - "requires": {} + "integrity": "sha512-v7FRld2SdV64YjrZrKGoDyfYqcoEC2I4tk6nkhbOI8ZOaqm6XNiqCWEeTdeb6XPwDftozmfILSzhCxbASrXKMg==" }, "@capacitor/storage": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@capacitor/storage/-/storage-1.2.3.tgz", - "integrity": "sha512-Rc5CKS53sfxokF5dxzNQDhig4lnZonky6VqskHZKTe3Ltl37FKmrG+I8ttZCinFZ5MPWfGSuP44m93hsQqitjQ==", - "requires": {} + "integrity": "sha512-Rc5CKS53sfxokF5dxzNQDhig4lnZonky6VqskHZKTe3Ltl37FKmrG+I8ttZCinFZ5MPWfGSuP44m93hsQqitjQ==" }, "@cnakazawa/watch": { "version": "1.0.4", @@ -34443,14 +34463,12 @@ "@firebase/auth-interop-types": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz", - "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==", - "requires": {} + "integrity": "sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==" }, "@firebase/auth-types": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.11.0.tgz", - "integrity": "sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==", - "requires": {} + "integrity": "sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==" }, "@firebase/component": { "version": "0.5.16", @@ -34526,8 +34544,7 @@ "@firebase/firestore-types": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.0.tgz", - "integrity": "sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==", - "requires": {} + "integrity": "sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==" }, "@firebase/functions": { "version": "0.8.3", @@ -34711,8 +34728,7 @@ "@firebase/storage-types": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.6.0.tgz", - "integrity": "sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==", - "requires": {} + "integrity": "sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==" }, "@firebase/util": { "version": "1.6.2", @@ -34883,7 +34899,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/camera/-/camera-5.36.0.tgz", "integrity": "sha512-68hdPn0hA7yn4YNTgmLF32x/l7arFulboGhNiyFQ35/QxqrOmppf77p4xaPOyJtNyICKHLaiStC6w1eEAtl9MA==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34898,7 +34914,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.36.0.tgz", "integrity": "sha512-lOrkktadlKYbYf1LrDyAtsu1JnQ0oCCdkOU7iHQ8oXnNOkMwobFfD2m62F1CoOr0u9LIkpYnZSPjng8lZbmbNw==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34913,7 +34929,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/document-viewer/-/document-viewer-5.36.0.tgz", "integrity": "sha512-4AuQ7yDyN4coetNNDDkk5hf9ptoj+FvzBcOPH30ZVNnhlzvqtTT5t4coksDqzUlz5vqJuAGQwawpwqdYdTx0rA==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34928,7 +34944,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/fcm/-/fcm-5.36.0.tgz", "integrity": "sha512-hToPT/4lqdaCc99sUYgnHM+DSFTe4WphF7Ia00QtwsNGW5/pS8w9iZSgppij5OJtwe67dNsuf2+PkxS4r7av/g==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34943,7 +34959,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/file/-/file-5.36.0.tgz", "integrity": "sha512-x7yZ4VdC8n8FNlpRmUFtohNlOZnExvoxZ/6oCvGsV+ec8TJXUsDK/BYi1g+lkPTCUY3EmQIeBOe4PLO6fRJ7qg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34958,7 +34974,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/file-opener/-/file-opener-5.36.0.tgz", "integrity": "sha512-UKp3pbqvQXsAtLMJ5JE+KcTMxpjSZMFebf6nvy/KJvwy85JGIaCV4ZVM/H9CFUrHJMWBH6wDbY+WPygnsrl4Yg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34973,7 +34989,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/file-path/-/file-path-5.36.0.tgz", "integrity": "sha512-zm7w8h15H9e210z7ZpfP07OD+9wl2B/0Sz87YJutkVAc1clVop3vElcy4IxGd6vqjMz5Xiw9k9AplbGdMPJIYQ==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -34986,15 +35002,14 @@ "@ionic-native/fingerprint-aio": { "version": "4.20.0", "resolved": "https://registry.npmjs.org/@ionic-native/fingerprint-aio/-/fingerprint-aio-4.20.0.tgz", - "integrity": "sha512-DhdXVG7gdBtCwYHDAsNazIcMlyt6X968ilA/5Rt8uFd+xN4Un5gZteOJCVn9xWDC/ZqhO/QAq2M0BIGyEhzW0g==", - "requires": {} + "integrity": "sha512-DhdXVG7gdBtCwYHDAsNazIcMlyt6X968ilA/5Rt8uFd+xN4Un5gZteOJCVn9xWDC/ZqhO/QAq2M0BIGyEhzW0g==" }, "@ionic-native/http": { "version": "5.36.0", "resolved": "https://registry.npmjs.org/@ionic-native/http/-/http-5.36.0.tgz", "integrity": "sha512-3t7UhcqNxZuIX+HXuydlaDfA9AwDXiRFGs9GsHpJnXMTfbeKUcwzp0amqblrLslDA9tNfqSmJyFZFaMX6CRrog==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35009,7 +35024,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/image-picker/-/image-picker-5.36.0.tgz", "integrity": "sha512-6RzK9x3/lnYvCYHeAzZuYejUKIifSnFt79iP2DvSZZ+4bu+a72yvPXx3xtHZZZT4sp4+vgZZNRfBYAJAikx6uw==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35024,7 +35039,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-5.36.0.tgz", "integrity": "sha512-tX/FBT0jpkgEefZ8iorv5eDKfgP/ExbYr1AWg6okORQ0dwLfXsD5KDJgKHN9GFZvyuLNeaLpC1mN7CvwvLvmgA==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35039,7 +35054,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/ionic-webview/-/ionic-webview-5.36.0.tgz", "integrity": "sha512-Xeabtfjw/OCa8tZUh3yVqomVNMztwmg0hXYrcX18r3+Zq0XYRSgNtsBHrye1rBgNkXYqblWQHZQErwrAC2UNxQ==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35052,15 +35067,14 @@ "@ionic-native/local-notifications": { "version": "4.20.0", "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-4.20.0.tgz", - "integrity": "sha512-Ht/0zau8/2+G/bH/okXXhhWB6YrkCNL2QxVJHQ2dophXFGxQPOZAN3CKWhuQSjfbr76fa2nvQXF6jsXLpIR/ng==", - "requires": {} + "integrity": "sha512-Ht/0zau8/2+G/bH/okXXhhWB6YrkCNL2QxVJHQ2dophXFGxQPOZAN3CKWhuQSjfbr76fa2nvQXF6jsXLpIR/ng==" }, "@ionic-native/media": { "version": "5.36.0", "resolved": "https://registry.npmjs.org/@ionic-native/media/-/media-5.36.0.tgz", "integrity": "sha512-WIDCeUlX7bCbse/x2Rr7mAIQJnLo18ZWcmsVgSTTBVS7ObU2DBl4ieqRx6y9PAAV+3tNZqMV4JAWDfMiFokpJg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35075,7 +35089,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/media-capture/-/media-capture-5.36.0.tgz", "integrity": "sha512-JBXZYsiIYO95bycF6EU8JBEai6UXdEx3dLnkXzJSYgYt8ynWceSr7Z/nPeuYfScEiKI3JA5FmaUGUsTkyHXOnw==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35090,7 +35104,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/network/-/network-5.22.0-beta-1.tgz", "integrity": "sha512-reOgFhHkyzCujqoGc1x8U9AZ40SBzdYT4HCFA6L2RwQT1NMyv+sDsp5er64p419Rfxg1k2QVTaDlEh+xPwhEqQ==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35105,7 +35119,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/photo-viewer/-/photo-viewer-5.36.0.tgz", "integrity": "sha512-VVCeDVRHTFLNVZUdvk3P+G4DhL54TGi3My2VBw4E8Kp11Clg4jdNPtMFRcwRoLk40LVB3Qaoq0avf1d5yKIZLw==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35120,7 +35134,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/screen-orientation/-/screen-orientation-5.36.0.tgz", "integrity": "sha512-+VILGrCJO76Ta6Mudd6IKc66xDek1uw5OEovFWjGCqkg0OYHFIiJFZNx4NLhF5hA1UKN2fWE6qDJaSXR+1w1Rg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35135,7 +35149,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/social-sharing/-/social-sharing-5.36.0.tgz", "integrity": "sha512-DTgEpSYJxgLri0Hry3PpohtVIyi5srMqfPhhGfqVHh20xtvC56sHMvm9xpRg9cH6xtfBCzJbB0S+aGBtrU9m8g==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35150,7 +35164,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.36.0.tgz", "integrity": "sha512-BfNknY1rrGE8JRnCdKfL5wz8yFLhpPU5FRr8/LA3L+EncvPvcb9LGidePoeH3gVLMkolm2DI2a/rCelNrJ1Sxw==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35165,7 +35179,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/sqlite/-/sqlite-5.36.0.tgz", "integrity": "sha512-+1nXUqBucwG6MYoEvqKlZecvI3xVGWeKIzdZf8Nc4vQx4JFDUYdluiEw3mfzptCC1S/4l6skBsL8eZLFfpzUKA==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35178,15 +35192,14 @@ "@ionic-native/sqlite-porter": { "version": "4.20.0", "resolved": "https://registry.npmjs.org/@ionic-native/sqlite-porter/-/sqlite-porter-4.20.0.tgz", - "integrity": "sha512-x0oeBrqRoXkLD2HOIye4EtPLXtxWWhCfiNlollm5tFpujCYBUNqAip+UDInXI0xAD2Lc5cNVEoJ4gMDGBm9C6g==", - "requires": {} + "integrity": "sha512-x0oeBrqRoXkLD2HOIye4EtPLXtxWWhCfiNlollm5tFpujCYBUNqAip+UDInXI0xAD2Lc5cNVEoJ4gMDGBm9C6g==" }, "@ionic-native/status-bar": { "version": "5.36.0", "resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-5.36.0.tgz", "integrity": "sha512-OXC1z+4Iba4lo1dc2+0h4Gvpud3z0XQmEbw0ny9UflCuSkLqBxvmiNRU7CRQwPnT1KaGVXkaSokdwxO8H9IlNg==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35201,7 +35214,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/streaming-media/-/streaming-media-5.36.0.tgz", "integrity": "sha512-l4+r3O2VRfEw4if3BLdawNx+tApH+czpVlkz14szAmIvsIVUqKoz6n2xq9hTX5z4uZdKVYLn8l8OnLuuNbCM2A==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35216,7 +35229,7 @@ "resolved": "https://registry.npmjs.org/@ionic-native/wheel-selector/-/wheel-selector-5.36.0.tgz", "integrity": "sha512-Ovx2KEfYCbkTsBF+xXYoSTbgebg01PJg9+S/4myCfWhNQecF59qxhjeCUiGA29T38u83nqZuZ4H0Jh9w16w0rA==", "requires": { - "@types/cordova": "latest" + "@types/cordova": "^0.0.34" }, "dependencies": { "@types/cordova": { @@ -35668,6 +35681,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "requires": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -35680,6 +35694,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -35689,6 +35704,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -35698,6 +35714,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -35706,6 +35723,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -35714,6 +35732,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -35721,24 +35740,28 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true }, "@jest/console": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.4.tgz", "integrity": "sha512-94znCKynPZpDpYHQ6esRJSc11AmONrVkBOBZiD7S+bSubHhrUfbS95EY5HIOxhm4PQO7cnvZkL3oJcY0oMA+Wg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -35752,6 +35775,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -35764,6 +35788,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -35771,17 +35796,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -35790,6 +35818,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -35806,6 +35835,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -35819,6 +35849,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -35832,6 +35863,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.4.tgz", "integrity": "sha512-UNQLyy+rXoojNm2MGlapgzWhZD1CT1zcHZQYeiD0xE7MtJfC19Q6J5D/Lm2l7i4V97T30usKDoEtjI8vKwWcLg==", + "dev": true, "requires": { "@jest/console": "^27.2.4", "@jest/reporters": "^27.2.4", @@ -35867,6 +35899,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -35879,6 +35912,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -35887,6 +35921,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "requires": { "type-fest": "^0.21.3" } @@ -35894,17 +35929,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -35913,6 +35951,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -35929,6 +35968,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -35942,6 +35982,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -35952,7 +35993,8 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true } } }, @@ -35998,6 +36040,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.4.tgz", "integrity": "sha512-DRsRs5dh0i+fA9mGHylTU19+8fhzNJoEzrgsu+zgJoZth3x8/0juCQ8nVVdW1er4Cqifb/ET7/hACYVPD0dBEA==", + "dev": true, "requires": { "@jest/environment": "^27.2.4", "@jest/types": "^27.2.4", @@ -36008,6 +36051,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -36019,6 +36063,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -36032,6 +36077,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -36044,6 +36090,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -36052,6 +36099,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -36059,17 +36107,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -36078,6 +36129,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -36094,6 +36146,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -36103,6 +36156,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -36116,6 +36170,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -36129,6 +36184,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.4.tgz", "integrity": "sha512-LHeSdDnDZkDnJ8kvnjcqV8P1Yv/32yL4d4XfR5gBiy3xGO0onwll1QEbvtW96fIwhx2nejug0GTaEdNDoyr3fQ==", + "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^27.2.4", @@ -36160,6 +36216,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -36172,6 +36229,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -36179,12 +36237,14 @@ "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -36193,6 +36253,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -36205,7 +36266,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -36213,6 +36275,7 @@ "version": "27.0.6", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.0.6.tgz", "integrity": "sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g==", + "dev": true, "requires": { "callsites": "^3.0.0", "graceful-fs": "^4.2.4", @@ -36222,7 +36285,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -36230,6 +36294,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.4.tgz", "integrity": "sha512-eU+PRo0+lIS01b0dTmMdVZ0TtcRSxEaYquZTRFMQz6CvsehGhx9bRzi9Zdw6VROviJyv7rstU+qAMX5pNBmnfQ==", + "dev": true, "requires": { "@jest/console": "^27.2.4", "@jest/types": "^27.2.4", @@ -36241,6 +36306,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -36253,6 +36319,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -36263,6 +36330,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.4.tgz", "integrity": "sha512-fpk5eknU3/DXE2QCCG1wv/a468+cfPo3Asu6d6yUtM9LOPh709ubZqrhuUOYfM8hXMrIpIdrv1CdCrWWabX0rQ==", + "dev": true, "requires": { "@jest/test-result": "^27.2.4", "graceful-fs": "^4.2.4", @@ -36274,6 +36342,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.4.tgz", "integrity": "sha512-n5FlX2TH0oQGwyVDKPxdJ5nI2sO7TJBFe3u3KaAtt7TOiV4yL+Y+rSFDl+Ic5MpbiA/eqXmLAQxjnBmWgS2rEA==", + "dev": true, "requires": { "@babel/core": "^7.1.0", "@jest/types": "^27.2.4", @@ -36296,6 +36365,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -36308,6 +36378,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -36315,12 +36386,14 @@ "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -36329,6 +36402,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -36341,7 +36415,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -36425,8 +36500,7 @@ "version": "12.2.7", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.7.tgz", "integrity": "sha512-RX5UQA9Bwp/J5GPGtJiwEOQUdf/0UqdeIZtktOZJ4x3K676l//PCFxxxgGqi2qUR2eu/wLAyiDhvDwqDixsngQ==", - "dev": true, - "requires": {} + "dev": true }, "@ngx-translate/core": { "version": "13.0.0", @@ -36702,6 +36776,7 @@ "version": "7.1.16", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -36714,6 +36789,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, "requires": { "@babel/types": "^7.0.0" } @@ -36722,6 +36798,7 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -36731,6 +36808,7 @@ "version": "7.14.2", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, "requires": { "@babel/types": "^7.3.0" } @@ -36757,6 +36835,7 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -36766,6 +36845,7 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -36774,7 +36854,8 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true }, "@types/expect-puppeteer": { "version": "4.4.0", @@ -36800,6 +36881,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, "requires": { "@types/node": "*" } @@ -36849,7 +36931,7 @@ "version": "26.0.24", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", - "devOptional": true, + "dev": true, "requires": { "jest-diff": "^26.0.0", "pretty-format": "^26.0.0" @@ -36868,7 +36950,8 @@ "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true }, "@types/lodash": { "version": "4.14.175", @@ -36905,7 +36988,8 @@ "@types/prettier": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==" + "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "dev": true }, "@types/puppeteer": { "version": "5.4.4", @@ -36995,6 +37079,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -37003,22 +37088,26 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -37028,12 +37117,14 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -37045,6 +37136,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -37053,6 +37145,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -37060,12 +37153,14 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -37081,6 +37176,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -37093,6 +37189,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -37104,6 +37201,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -37117,6 +37215,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -37125,12 +37224,14 @@ "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "@yarnpkg/lockfile": { "version": "1.1.0", @@ -37141,7 +37242,8 @@ "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true }, "abbrev": { "version": "1.1.1", @@ -37160,12 +37262,14 @@ "acorn": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true }, "acorn-globals": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -37174,7 +37278,8 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true } } }, @@ -37182,12 +37287,13 @@ "version": "1.7.6", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz", "integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==", - "requires": {} + "dev": true }, "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true }, "adjust-sourcemap-loader": { "version": "4.0.0", @@ -37268,8 +37374,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true, - "requires": {} + "dev": true }, "ajv-formats": { "version": "2.1.0", @@ -37283,7 +37388,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} + "dev": true }, "alasql": { "version": "1.7.3", @@ -37517,6 +37622,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" }, @@ -37524,7 +37630,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true } } }, @@ -37548,7 +37655,7 @@ "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==" }, "array-flatten": { "version": "1.1.1", @@ -37706,6 +37813,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.4.tgz", "integrity": "sha512-f24OmxyWymk5jfgLdlCMu4fTs4ldxFBIdn5sJdhvGC1m08rSkJ5hYbWkNmfBSvE/DjhCVNSHXepxsI6THGfGsg==", + "dev": true, "requires": { "@jest/transform": "^27.2.4", "@jest/types": "^27.2.4", @@ -37721,6 +37829,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -37733,6 +37842,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -37786,6 +37896,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -37798,6 +37909,7 @@ "version": "27.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz", "integrity": "sha512-TOux9khNKdi64mW+0OIhcmbAn75tTlzKhxmiNXevQaPbrBYK7YKjP1jl6NHTJ6XR5UgUrJbCnWlKVnJn29dfjw==", + "dev": true, "requires": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -37847,6 +37959,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, "requires": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -37866,6 +37979,7 @@ "version": "27.2.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.2.0.tgz", "integrity": "sha512-z7MgQ3peBwN5L5aCqBKnF6iqdlvZvFUQynEhu0J+X9nHLU72jO3iY331lcYrg+AssJ8q7xsv5/3AICzVmJ/wvg==", + "dev": true, "requires": { "babel-plugin-jest-hoist": "^27.2.0", "babel-preset-current-node-syntax": "^1.0.0" @@ -38131,8 +38245,7 @@ "bootstrap": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", - "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==", - "requires": {} + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" }, "boxen": { "version": "5.1.2", @@ -38184,7 +38297,8 @@ "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true }, "browser-sync": { "version": "2.27.7", @@ -38466,6 +38580,7 @@ "version": "4.17.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.2.tgz", "integrity": "sha512-jSDZyqJmkKMEMi7SZAgX5UltFdR5NAO43vY0AwTpu4X3sGH7GLLQ83KiUomgrnvZRCeW0yPPnKqnxPqQOER9zQ==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001261", "electron-to-chromium": "^1.3.854", @@ -38535,6 +38650,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, "requires": { "node-int64": "^0.4.0" } @@ -38556,7 +38672,8 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", @@ -38716,12 +38833,14 @@ "caniuse-lite": { "version": "1.0.30001263", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001263.tgz", - "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==" + "integrity": "sha512-doiV5dft6yzWO1WwU19kt8Qz8R0/8DgEziz6/9n2FxUasteZNwNNYSmJO3GLBH8lCVE73AB1RPDPAeYbcO5Cvw==", + "dev": true }, "canonical-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", - "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==" + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true }, "capacitor-voice-recorder": { "version": "2.1.0", @@ -38812,7 +38931,8 @@ "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true }, "chardet": { "version": "0.7.0", @@ -38842,7 +38962,8 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "ci": { "version": "2.1.1", @@ -38858,13 +38979,13 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} + "dev": true }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true }, "class-utils": { "version": "0.3.6", @@ -38953,7 +39074,7 @@ "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "requires": { "mimic-response": "^1.0.0" } @@ -38996,7 +39117,8 @@ "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true }, "collection-visit": { "version": "1.0.0", @@ -40074,7 +40196,7 @@ "corser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=" + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" }, "cosmiconfig": { "version": "7.0.1", @@ -40526,8 +40648,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true, - "requires": {} + "dev": true }, "csso": { "version": "4.2.0", @@ -40541,12 +40662,14 @@ "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true }, "cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, "requires": { "cssom": "~0.3.6" }, @@ -40554,14 +40677,15 @@ "cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true } } }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", "requires": { "array-find-index": "^1.0.1" } @@ -40602,6 +40726,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, "requires": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -40650,7 +40775,8 @@ "decimal.js": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==" + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -40661,7 +40787,7 @@ "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "requires": { "mimic-response": "^1.0.0" } @@ -40693,12 +40819,14 @@ "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true }, "default-gateway": { "version": "4.2.0", @@ -40956,7 +41084,7 @@ "dep-graph": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/dep-graph/-/dep-graph-1.1.0.tgz", - "integrity": "sha1-+t6GqSeZqBPptCURzfPfpsyNvv4=", + "integrity": "sha512-/6yUWlSH0Uevjj6HWvO86rDeFzuYfzbaKDqifTEemwfwEPyBrODTb3ox/jFzqmc2+UmgJ3IDMS88BKEBh1Nm2Q==", "requires": { "underscore": "1.2.1" }, @@ -40964,7 +41092,7 @@ "underscore": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.2.1.tgz", - "integrity": "sha1-/FxrB2VnPZKi1KyLTcCqiHAuK9Q=" + "integrity": "sha512-HRhh6FYh5I5/zTt7L9MnHRA/nlSFPiwymMCXEremmzT7tHR+8CNP0FXHPaUpafAPwvAlNrvZiH91kQwoo/CqUA==" } } }, @@ -40976,7 +41104,8 @@ "dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==" + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true }, "destroy": { "version": "1.0.4", @@ -41030,7 +41159,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "devOptional": true + "dev": true }, "dir-glob": { "version": "3.0.1", @@ -41113,6 +41242,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, "requires": { "webidl-conversions": "^5.0.0" }, @@ -41120,7 +41250,8 @@ "webidl-conversions": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true } } }, @@ -41160,7 +41291,7 @@ "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, "duration": { "version": "0.2.2", @@ -41199,7 +41330,7 @@ "editor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz", - "integrity": "sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=" + "integrity": "sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw==" }, "ee-first": { "version": "1.1.1", @@ -41209,7 +41340,8 @@ "electron-to-chromium": { "version": "1.3.856", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.856.tgz", - "integrity": "sha512-lSezYIe1/p5qkEswAfaQUseOBiwGwuCvRl/MKzOEVe++DcmQ92+43dznDl4rFJ4Zpu+kevhwyIf7KjJevyDA/A==" + "integrity": "sha512-lSezYIe1/p5qkEswAfaQUseOBiwGwuCvRl/MKzOEVe++DcmQ92+43dznDl4rFJ4Zpu+kevhwyIf7KjJevyDA/A==", + "dev": true }, "elementtree": { "version": "0.1.7", @@ -41222,7 +41354,8 @@ "emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true }, "emoji-regex": { "version": "8.0.0", @@ -41300,8 +41433,7 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" } } }, @@ -41339,8 +41471,7 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" } } }, @@ -41360,6 +41491,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -41444,7 +41576,8 @@ "es-module-lexer": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", - "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==" + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true }, "es-to-primitive": { "version": "1.2.1", @@ -41536,6 +41669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -41547,7 +41681,8 @@ "estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true }, "source-map": { "version": "0.6.1", @@ -41562,6 +41697,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -41570,12 +41706,14 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -41583,19 +41721,22 @@ "estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", @@ -41616,7 +41757,8 @@ "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "eventsource": { "version": "1.1.0", @@ -41726,6 +41868,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.4.tgz", "integrity": "sha512-gOtuonQ8TCnbNNCSw2fhVzRf8EFYDII4nB5NmG4IEV0rbUnW1I5zXvoTntU4iicB/Uh0oZr20NGlOLdJiwsOZA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-styles": "^5.0.0", @@ -41739,6 +41882,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -41751,6 +41895,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -41758,17 +41903,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "jest-message-util": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -41785,6 +41933,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -42067,7 +42216,8 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "fastq": { "version": "1.13.0", @@ -42089,6 +42239,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, "requires": { "bser": "2.1.1" } @@ -42114,7 +42265,7 @@ "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "requires": { "escape-string-regexp": "^1.0.5" } @@ -42476,7 +42627,8 @@ "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true }, "get-stream": { "version": "6.0.1", @@ -42536,7 +42688,8 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "global": { "version": "4.4.0", @@ -42924,6 +43077,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, "requires": { "whatwg-encoding": "^1.0.5" } @@ -42937,7 +43091,8 @@ "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "http-cache-semantics": { "version": "4.1.0", @@ -43220,8 +43375,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} + "dev": true }, "idb": { "version": "7.0.1", @@ -43275,7 +43429,7 @@ "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" }, "import-local": { "version": "2.0.0", @@ -43440,7 +43594,7 @@ "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "requires": { "restore-cursor": "^2.0.0" } @@ -43456,17 +43610,17 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" }, "mimic-fn": { "version": "1.2.0", @@ -43476,12 +43630,12 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==" }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "requires": { "mimic-fn": "^1.0.0" } @@ -43489,7 +43643,7 @@ "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "requires": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -43507,7 +43661,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "requires": { "ansi-regex": "^3.0.0" } @@ -43623,8 +43777,7 @@ "ionic-image-loader": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/ionic-image-loader/-/ionic-image-loader-6.3.3.tgz", - "integrity": "sha512-X7AbaY3Yt3q0+kOjodjqYwTkXNhRTs3/P/afffaWLBPk5frsd7JCNaFae9U8iErwfOIbJ7VZmCHYMApBZ3Aqew==", - "requires": {} + "integrity": "sha512-X7AbaY3Yt3q0+kOjodjqYwTkXNhRTs3/P/afffaWLBPk5frsd7JCNaFae9U8iErwfOIbJ7VZmCHYMApBZ3Aqew==" }, "ionic-image-loader-v5": { "version": "1.0.2", @@ -43644,8 +43797,7 @@ "ionic-selectable": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/ionic-selectable/-/ionic-selectable-4.9.0.tgz", - "integrity": "sha512-bM6dKrLi+fKfavMsrnhe3/lNpD98tpKTaufu+djKRXTp4QBk2PZaCcgnR8/5FyLUJV9YoV2SXFvUvQ8ZG5Wz7A==", - "requires": {} + "integrity": "sha512-bM6dKrLi+fKfavMsrnhe3/lNpD98tpKTaufu+djKRXTp4QBk2PZaCcgnR8/5FyLUJV9YoV2SXFvUvQ8ZG5Wz7A==" }, "ionic2-alpha-scroll": { "version": "2.0.1", @@ -43661,8 +43813,7 @@ "ionic2-calendar": { "version": "0.6.9", "resolved": "https://registry.npmjs.org/ionic2-calendar/-/ionic2-calendar-0.6.9.tgz", - "integrity": "sha512-s1TFCxeFeZkwBY7Gno6L57id1CGIHXk9eRjB0TU1MqgRTiXBOvkXYm9mJa5S7UyN1VTKhcbuk5U27eEG9QmOAA==", - "requires": {} + "integrity": "sha512-s1TFCxeFeZkwBY7Gno6L57id1CGIHXk9eRjB0TU1MqgRTiXBOvkXYm9mJa5S7UyN1VTKhcbuk5U27eEG9QmOAA==" }, "ionicons": { "version": "5.5.3", @@ -43832,7 +43983,8 @@ "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true }, "is-glob": { "version": "4.0.3", @@ -43948,7 +44100,8 @@ "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, "is-regex": { "version": "1.1.4", @@ -44067,12 +44220,14 @@ "istanbul-lib-coverage": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz", - "integrity": "sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==" + "integrity": "sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==", + "dev": true }, "istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, "requires": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", @@ -44083,7 +44238,8 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -44091,6 +44247,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, "requires": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", @@ -44101,6 +44258,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, "requires": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -44110,7 +44268,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -44118,6 +44277,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, "requires": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -44167,6 +44327,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.4.tgz", "integrity": "sha512-h4uqb1EQLfPulWyUFFWv9e9Nn8sCqsJ/j3wk/KCY0p4s4s0ICCfP3iMf6hRf5hEhsDyvyrCgKiZXma63gMz16A==", + "dev": true, "requires": { "@jest/core": "^27.2.4", "import-local": "^3.0.2", @@ -44177,6 +44338,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -44189,6 +44351,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -44196,12 +44359,14 @@ "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -44211,6 +44376,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -44219,6 +44385,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.4.tgz", "integrity": "sha512-4kpQQkg74HYLaXo3nzwtg4PYxSLgL7puz1LXHj5Tu85KmlIpxQFjRkXlx4V47CYFFIDoyl3rHA/cXOxUWyMpNg==", + "dev": true, "requires": { "@jest/core": "^27.2.4", "@jest/test-result": "^27.2.4", @@ -44238,6 +44405,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -44251,6 +44419,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, "requires": { "resolve-from": "^5.0.0" } @@ -44258,12 +44427,14 @@ "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -44280,6 +44451,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.4.tgz", "integrity": "sha512-eeO1C1u4ex7pdTroYXezr+rbr957myyVoKGjcY4R1TJi3A+9v+4fu1Iv9J4eLq1bgFyT3O3iRWU9lZsEE7J72Q==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "execa": "^5.0.0", @@ -44290,6 +44462,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -44302,6 +44475,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -44310,6 +44484,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -44325,12 +44500,14 @@ "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true } } }, @@ -44338,6 +44515,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.4.tgz", "integrity": "sha512-TtheheTElrGjlsY9VxkzUU1qwIx05ItIusMVKnvNkMt4o/PeegLRcjq3Db2Jz0GGdBalJdbzLZBgeulZAJxJWA==", + "dev": true, "requires": { "@jest/environment": "^27.2.4", "@jest/test-result": "^27.2.4", @@ -44364,6 +44542,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -44375,6 +44554,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -44388,6 +44568,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -44400,6 +44581,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -44408,6 +44590,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -44415,17 +44598,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -44434,6 +44620,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -44450,6 +44637,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -44459,6 +44647,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -44472,6 +44661,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -44485,6 +44675,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.4.tgz", "integrity": "sha512-tWy0UxhdzqiKyp4l5Vq4HxLyD+gH5td+GCF3c22/DJ0bYAOsMo+qi2XtbJI6oYMH5JOJQs9nLW/r34nvFCehjA==", + "dev": true, "requires": { "@babel/core": "^7.1.0", "@jest/test-sequencer": "^27.2.4", @@ -44513,6 +44704,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -44524,6 +44716,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -44537,6 +44730,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -44549,6 +44743,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -44557,6 +44752,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -44564,17 +44760,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -44583,6 +44782,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", + "dev": true, "requires": { "@jest/environment": "^27.2.4", "@jest/fake-timers": "^27.2.4", @@ -44595,12 +44795,14 @@ "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "jest-message-util": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -44617,6 +44819,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -44626,6 +44829,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -44639,6 +44843,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -44666,7 +44871,7 @@ "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "devOptional": true, + "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^26.6.2", @@ -44678,6 +44883,7 @@ "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.0.6.tgz", "integrity": "sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA==", + "dev": true, "requires": { "detect-newline": "^3.0.0" } @@ -44686,6 +44892,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.4.tgz", "integrity": "sha512-w9XVc+0EDBUTJS4xBNJ7N2JCcWItFd006lFjz77OarAQcQ10eFDBMrfDv2GBJMKlXe9aq0HrIIF51AXcZrRJyg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "chalk": "^4.0.0", @@ -44698,6 +44905,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -44710,6 +44918,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -44717,17 +44926,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -44735,12 +44947,14 @@ "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "jest-util": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -44754,6 +44968,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -44767,6 +44982,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.4.tgz", "integrity": "sha512-X70pTXFSypD7AIzKT1mLnDi5hP9w9mdTRcOGOmoDoBrNyNEg4rYm6d4LQWFLc9ps1VnMuDOkFSG0wjSNYGjkng==", + "dev": true, "requires": { "@jest/environment": "^27.2.4", "@jest/fake-timers": "^27.2.4", @@ -44781,6 +44997,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -44792,6 +45009,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -44805,6 +45023,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -44817,6 +45036,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -44825,6 +45045,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -44832,17 +45053,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -44851,6 +45075,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -44867,6 +45092,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -44876,6 +45102,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -44889,6 +45116,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -45073,12 +45301,13 @@ "version": "26.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "devOptional": true + "dev": true }, "jest-haste-map": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.4.tgz", "integrity": "sha512-bkJ4bT00T2K+1NZXbRcyKnbJ42I6QBvoDNMTAQQDBhaGNnZreiQKUNqax0e6hLTx7E75pKDeltVu3V1HAdu+YA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/graceful-fs": "^4.1.2", @@ -45099,6 +45328,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45111,6 +45341,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45118,12 +45349,14 @@ "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -45132,6 +45365,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -45147,6 +45381,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.4.tgz", "integrity": "sha512-fcffjO/xLWLVnW2ct3No4EksxM5RyPwHDYu9QU+90cC+/eSMLkFAxS55vkqsxexOO5zSsZ3foVpMQcg/amSeIQ==", + "dev": true, "requires": { "@babel/traverse": "^7.1.0", "@jest/environment": "^27.2.4", @@ -45172,6 +45407,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -45183,6 +45419,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -45196,6 +45433,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45208,6 +45446,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -45216,6 +45455,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45223,17 +45463,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -45242,6 +45485,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -45258,6 +45502,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -45267,6 +45512,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -45280,6 +45526,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -45293,6 +45540,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.4.tgz", "integrity": "sha512-SrcHWbe0EHg/bw2uBjVoHacTo5xosl068x2Q0aWsjr2yYuW2XwqrSkZV4lurUop0jhv1709ymG4or+8E4sH27Q==", + "dev": true, "requires": { "jest-get-type": "^27.0.6", "pretty-format": "^27.2.4" @@ -45302,6 +45550,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45314,6 +45563,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45321,17 +45571,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "pretty-format": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -45345,6 +45598,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.4.tgz", "integrity": "sha512-nQeLfFAIPPkyhkDfifAPfP/U5wm1x0fLtAzqXZSSKckXDNuk2aaOfQiDYv1Mgf5GY6yOsxfUnvNm3dDjXM+BXw==", + "dev": true, "requires": { "chalk": "^4.0.0", "jest-diff": "^27.2.4", @@ -45356,6 +45610,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45368,6 +45623,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45375,17 +45631,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "diff-sequences": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==" + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true }, "jest-diff": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", + "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", @@ -45396,12 +45655,14 @@ "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "pretty-format": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -45447,7 +45708,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "requires": {} + "dev": true }, "jest-preset-angular": { "version": "9.0.7", @@ -45514,12 +45775,14 @@ "jest-regex-util": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz", - "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==" + "integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==", + "dev": true }, "jest-resolve": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.4.tgz", "integrity": "sha512-IsAO/3+3BZnKjI2I4f3835TBK/90dxR7Otgufn3mnrDFTByOSXclDi3G2XJsawGV4/18IMLARJ+V7Wm7t+J89Q==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "chalk": "^4.0.0", @@ -45537,6 +45800,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45549,6 +45813,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45556,12 +45821,14 @@ "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -45570,6 +45837,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -45585,6 +45853,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.4.tgz", "integrity": "sha512-i5s7Uh9B3Q6uwxLpMhNKlgBf6pcemvWaORxsW1zNF/YCY3jd5EftvnGBI+fxVwJ1CBxkVfxqCvm1lpZkbaoGmg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "jest-regex-util": "^27.0.6", @@ -45595,6 +45864,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45607,6 +45877,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45617,6 +45888,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.4.tgz", "integrity": "sha512-hIo5PPuNUyVDidZS8EetntuuJbQ+4IHWxmHgYZz9FIDbG2wcZjrP6b52uMDjAEQiHAn8yn8ynNe+TL8UuGFYKg==", + "dev": true, "requires": { "@jest/console": "^27.2.4", "@jest/environment": "^27.2.4", @@ -45646,6 +45918,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -45657,6 +45930,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -45670,6 +45944,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45682,6 +45957,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -45690,6 +45966,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45697,17 +45974,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -45716,6 +45996,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.4.tgz", "integrity": "sha512-ZbVbFSnbzTvhLOIkqh5lcLuGCCFvtG4xTXIRPK99rV2KzQT3kNg16KZwfTnLNlIiWCE8do960eToeDfcqmpSAw==", + "dev": true, "requires": { "@jest/environment": "^27.2.4", "@jest/fake-timers": "^27.2.4", @@ -45729,6 +46010,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -45745,6 +46027,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -45754,6 +46037,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -45767,6 +46051,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -45780,6 +46065,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.4.tgz", "integrity": "sha512-ICKzzYdjIi70P17MZsLLIgIQFCQmIjMFf+xYww3aUySiUA/QBPUTdUqo5B2eg4HOn9/KkUsV0z6GVgaqAPBJvg==", + "dev": true, "requires": { "@jest/console": "^27.2.4", "@jest/environment": "^27.2.4", @@ -45814,6 +46100,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.4.tgz", "integrity": "sha512-wkuui5yr3SSQW0XD0Qm3TATUbL/WE3LDEM3ulC+RCQhMf2yxhci8x7svGkZ4ivJ6Pc94oOzpZ6cdHBAMSYd1ew==", + "dev": true, "requires": { "@jest/fake-timers": "^27.2.4", "@jest/types": "^27.2.4", @@ -45825,6 +46112,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.4.tgz", "integrity": "sha512-cs/TzvwWUM7kAA6Qm/890SK6JJ2pD5RfDNM3SSEom6BmdyV6OiWP1qf/pqo6ts6xwpcM36oN0wSEzcZWc6/B6w==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@sinonjs/fake-timers": "^8.0.1", @@ -45838,6 +46126,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -45850,6 +46139,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" } @@ -45858,6 +46148,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -45865,17 +46156,20 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -45891,17 +46185,20 @@ "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -45910,6 +46207,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -45926,6 +46224,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.4.tgz", "integrity": "sha512-iVRU905rutaAoUcrt5Tm1JoHHWi24YabqEGXjPJI4tAyA6wZ7mzDi3GrZ+M7ebgWBqUkZE93GAx1STk7yCMIQA==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*" @@ -45935,6 +46234,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -45948,6 +46248,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -45959,6 +46260,7 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -45975,6 +46277,7 @@ "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.0.6.tgz", "integrity": "sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA==", + "dev": true, "requires": { "@types/node": "*", "graceful-fs": "^4.2.4" @@ -45984,6 +46287,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.4.tgz", "integrity": "sha512-5DFxK31rYS8X8C6WXsFx8XxrxW3PGa6+9IrUcZdTLg1aEyXDGIeiBh4jbwvh655bg/9vTETbEj/njfZicHTZZw==", + "dev": true, "requires": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", @@ -46015,6 +46319,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -46027,6 +46332,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -46034,22 +46340,26 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "diff-sequences": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz", - "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==" + "integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -46058,6 +46368,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.4.tgz", "integrity": "sha512-bLAVlDSCR3gqUPGv+4nzVpEXGsHh98HjUL7Vb2hVyyuBDoQmja8eJb0imUABsuxBeUVmf47taJSAd9nDrwWKEg==", + "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", @@ -46068,12 +46379,14 @@ "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "jest-message-util": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.4.tgz", "integrity": "sha512-wbKT/BNGnBVB9nzi+IoaLkXt6fbSvqUxx+IYY66YFh96J3goY33BAaNG3uPqaw/Sh/FR9YpXGVDfd5DJdbh4nA==", + "dev": true, "requires": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.2.4", @@ -46090,6 +46403,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -46103,6 +46417,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -46136,6 +46451,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.4.tgz", "integrity": "sha512-VMtbxbkd7LHnIH7PChdDtrluCFRJ4b1YV2YJzNwwsASMWftq/HgqiqjvptBOWyWOtevgO3f14wPxkPcLlVBRog==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "camelcase": "^6.2.0", @@ -46149,6 +46465,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -46161,6 +46478,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -46168,22 +46486,26 @@ "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true }, "camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true }, "jest-get-type": { "version": "27.0.6", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==" + "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "dev": true }, "pretty-format": { "version": "27.2.4", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.4.tgz", "integrity": "sha512-NUjw22WJHldzxyps2YjLZkUj6q1HvjqFezkB9Y2cklN8NtVZN/kZEXGZdFw4uny3oENzV5EEMESrkI0YDUH8vg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "ansi-regex": "^5.0.1", @@ -46197,6 +46519,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.4.tgz", "integrity": "sha512-LXC/0+dKxhK7cfF7reflRYlzDIaQE+fL4ynhKhzg8IMILNMuI4xcjXXfUJady7OR4/TZeMg7X8eHx8uan9vqaQ==", + "dev": true, "requires": { "@jest/test-result": "^27.2.4", "@jest/types": "^27.2.4", @@ -46211,6 +46534,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.4.tgz", "integrity": "sha512-IDO2ezTxeMvQAHxzG/ZvEyA47q0aVfzT95rGFl7bZs/Go0aIucvfDbS2rmnoEdXxlLQhcolmoG/wvL/uKx4tKA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -46223,6 +46547,7 @@ "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, "requires": { "@types/yargs-parser": "*" } @@ -46231,6 +46556,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "requires": { "type-fest": "^0.21.3" } @@ -46238,12 +46564,14 @@ "ci-info": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "dev": true }, "is-ci": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, "requires": { "ci-info": "^3.1.1" } @@ -46252,6 +46580,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.4.tgz", "integrity": "sha512-mW++4u+fSvAt3YBWm5IpbmRAceUqa2B++JlUZTiuEt2AmNYn0Yw5oay4cP17TGsMINRNPSGiJ2zNnX60g+VbFg==", + "dev": true, "requires": { "@jest/types": "^27.2.4", "@types/node": "*", @@ -46264,7 +46593,8 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true } } }, @@ -46272,6 +46602,7 @@ "version": "27.2.4", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -46282,6 +46613,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -46324,6 +46656,7 @@ "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, "requires": { "abab": "^2.0.5", "acorn": "^8.2.4", @@ -46358,6 +46691,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -46367,12 +46701,14 @@ "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true }, "tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -46382,7 +46718,8 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true } } }, @@ -46399,12 +46736,13 @@ "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", @@ -46749,8 +47087,7 @@ "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} + "dev": true }, "yargs": { "version": "16.2.0", @@ -46869,8 +47206,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "requires": {} + "dev": true }, "karma-source-map-support": { "version": "1.4.0", @@ -46995,12 +47331,14 @@ "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -47092,7 +47430,8 @@ "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true }, "loader-utils": { "version": "2.0.0", @@ -47813,7 +48152,8 @@ "nanocolors": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", - "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==" + "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==", + "dev": true }, "nanoid": { "version": "3.1.28", @@ -47917,7 +48257,8 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "needle": { "version": "2.9.1", @@ -47968,7 +48309,8 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "next-tick": { "version": "1.0.0", @@ -48039,8 +48381,7 @@ "ngx-letters-avatar": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ngx-letters-avatar/-/ngx-letters-avatar-1.0.2.tgz", - "integrity": "sha512-mCQtMCAM+r+emSruczu3EKGzZuGxvHU0TRcx3P9RQ9at/BWd6cTz2bkz3uJm0T5TwaXRNwTe/NNySx+/NqD2Mw==", - "requires": {} + "integrity": "sha512-mCQtMCAM+r+emSruczu3EKGzZuGxvHU0TRcx3P9RQ9at/BWd6cTz2bkz3uJm0T5TwaXRNwTe/NNySx+/NqD2Mw==" }, "ngx-socket-io": { "version": "3.4.0", @@ -48176,17 +48517,20 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true }, "node-releases": { "version": "1.1.76", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", - "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==" + "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==", + "dev": true }, "nopt": { "version": "4.0.3", @@ -48348,7 +48692,8 @@ "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true }, "oauth-sign": { "version": "0.9.0", @@ -48556,6 +48901,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -48896,8 +49242,7 @@ "pdfjs-dist": { "version": "2.9.359", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz", - "integrity": "sha512-P2nYtkacdlZaNNwrBLw1ZyMm0oE2yY/5S/GDCAmMJ7U4+ciL/D0mrlEC/o4HZZc/LNE3w8lEVzBEyVgEQlPVKQ==", - "requires": {} + "integrity": "sha512-P2nYtkacdlZaNNwrBLw1ZyMm0oE2yY/5S/GDCAmMJ7U4+ciL/D0mrlEC/o4HZZc/LNE3w8lEVzBEyVgEQlPVKQ==" }, "pend": { "version": "1.2.0", @@ -48938,6 +49283,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, "requires": { "node-modules-regexp": "^1.0.0" } @@ -49443,29 +49789,25 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-duplicates": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-empty": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-discard-overridden": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true, - "requires": {} + "dev": true }, "postcss-double-position-gradients": { "version": "1.0.0", @@ -49862,8 +50204,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} + "dev": true }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -49925,8 +50266,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true, - "requires": {} + "dev": true }, "postcss-normalize-display-values": { "version": "5.0.1", @@ -50418,12 +50758,13 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" }, "pretty-bytes": { "version": "5.6.0", @@ -50498,7 +50839,7 @@ "promzard": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "requires": { "read": "1" } @@ -50956,8 +51297,7 @@ "ws": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.0.tgz", - "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==", - "requires": {} + "integrity": "sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==" } } }, @@ -50998,6 +51338,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "requires": { "safe-buffer": "^5.1.0" } @@ -51052,7 +51393,7 @@ "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "requires": { "mute-stream": "~0.0.4" } @@ -51511,7 +51852,7 @@ "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "requires": { "lowercase-keys": "^1.0.0" } @@ -51948,6 +52289,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, "requires": { "xmlchars": "^2.2.0" } @@ -51986,7 +52328,7 @@ "secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=" + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" }, "select-hose": { "version": "2.0.0", @@ -52109,6 +52451,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -52800,6 +53143,7 @@ "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -52808,7 +53152,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -53046,18 +53391,11 @@ } } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -53098,6 +53436,14 @@ "define-properties": "^1.1.3" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "stringify-package": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", @@ -53136,8 +53482,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", - "dev": true, - "requires": {} + "dev": true }, "stylehacks": { "version": "5.0.1", @@ -53217,6 +53562,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -53259,7 +53605,8 @@ "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true }, "systeminformation": { "version": "5.11.22", @@ -53269,7 +53616,8 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true }, "tar": { "version": "6.1.11", @@ -53318,6 +53666,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, "requires": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" @@ -53327,6 +53676,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "requires": { "type-fest": "^0.21.3" } @@ -53334,7 +53684,8 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true } } }, @@ -53342,6 +53693,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -53351,7 +53703,8 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true } } }, @@ -53359,6 +53712,7 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "dev": true, "requires": { "jest-worker": "^27.0.2", "p-limit": "^3.1.0", @@ -53372,6 +53726,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -53382,12 +53737,14 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "requires": { "yocto-queue": "^0.1.0" } @@ -53396,6 +53753,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -53405,7 +53763,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -53413,6 +53772,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "requires": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -53479,7 +53839,8 @@ "throat": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" + "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", + "dev": true }, "through": { "version": "2.3.8", @@ -53593,6 +53954,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, "requires": { "punycode": "^2.1.1" } @@ -54659,6 +55021,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -54693,7 +55056,8 @@ "typescript": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==" + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true }, "ua-parser-js": { "version": "0.7.31", @@ -54982,7 +55346,7 @@ "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "requires": { "prepend-http": "^2.0.0" } @@ -55041,6 +55405,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", + "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -55107,6 +55472,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, "requires": { "browser-process-hrtime": "^1.0.0" } @@ -55115,6 +55481,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, "requires": { "xml-name-validator": "^3.0.0" } @@ -55204,6 +55571,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -55239,12 +55607,14 @@ "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true }, "webpack": { "version": "5.50.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", "integrity": "sha512-hqxI7t/KVygs0WRv/kTgUW8Kl3YC81uyWQSo/7WUs5LsuRw0htH/fCwbVBGCuiX/t4s7qzjXFcf41O8Reiypag==", + "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -55276,6 +55646,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -55286,12 +55657,14 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "schema-utils": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -55301,7 +55674,8 @@ "webpack-sources": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" + "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", + "dev": true } } }, @@ -55794,15 +56168,6 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -55831,6 +56196,15 @@ } } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -56047,6 +56421,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, "requires": { "iconv-lite": "0.4.24" }, @@ -56055,6 +56430,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -56069,12 +56445,14 @@ "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true }, "whatwg-url": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, "requires": { "lodash": "^4.7.0", "tr46": "^2.1.0", @@ -56245,7 +56623,8 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true }, "wordcloud": { "version": "1.2.2", @@ -56344,8 +56723,7 @@ "ws": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "requires": {} + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" }, "xdg-basedir": { "version": "4.0.0", @@ -56379,7 +56757,8 @@ "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true }, "xml2js": { "version": "0.4.23", @@ -56407,7 +56786,8 @@ "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true }, "xmlhttprequest-ssl": { "version": "1.6.3", @@ -56472,7 +56852,8 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true }, "zone.js": { "version": "0.11.4", diff --git a/src/_redirects b/src/_redirects deleted file mode 100644 index b21f6cb71..000000000 --- a/src/_redirects +++ /dev/null @@ -1 +0,0 @@ -/* /index.html 200 \ No newline at end of file diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 9844e6e2c..974df44e1 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,268 +1,276 @@ -import { NgModule } from '@angular/core'; -import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; - -const routes = [ - { - path: '', - loadChildren: () => import('./index/index.module').then(m => m.IndexPageModule) - }, - { - path: '', - loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) - }, - { - path: 'empty-chat', - loadChildren: () => import('./shared/chat/empty-chat/empty-chat.module').then( m => m.EmptyChatPageModule) - }, - { - path: 'empty-container', - loadChildren: () => import('./shared/empty-container/empty-container.module').then( m => m.EmptyContainerPageModule) - }, - { - path: 'events-to-approve', - loadChildren: () => import('./shared/gabinete-digital/events-to-approve/events-to-approve.module').then( m => m.EventsToApprovePageModule) - }, - { - path: 'expedients', - loadChildren: () => import('./shared/gabinete-digital/expedients/expedients.module').then( m => m.ExpedientsPageModule) - }, - { - path: 'document-detail', - loadChildren: () => import('./modals/document-detail/document-detail.module').then( m => m.DocumentDetailPageModule) - }, - { - path: 'edit-group', - loadChildren: () => import('./shared/chat/edit-group/edit-group.module').then( m => m.EditGroupPageModule) - }, - { - path: 'pedidos', - loadChildren: () => import('./shared/gabinete-digital/pedidos/pedidos.module').then( m => m.PedidosPageModule) - }, - { - path: 'event-list', - loadChildren: () => import('./pages/gabinete-digital/event-list/event-list.module').then(m =>m.EventListPageModule) - }, - { - path: 'despachos', - loadChildren: () => import('./shared/gabinete-digital/despachos/despachos.module').then( m => m.DespachosPageModule) - }, - { - path: 'create-process', - loadChildren: () => import('./modals/create-process/create-process.module').then( m => m.CreateProcessPageModule) - }, - { - path: 'pendentes', - loadChildren: () => import('./shared/gabinete-digital/pendentes/pendentes.module').then( m => m.PendentesPageModule) - }, - { - path: 'delegar', - loadChildren: () => import('./modals/delegar/delegar.module').then( m => m.DelegarPageModule) - }, - { - path: 'add-note', - loadChildren: () => import('./modals/add-note/add-note.module').then( m => m.AddNotePageModule) - }, - { - path: 'dar-parecer', - loadChildren: () => import('./modals/dar-parecer/dar-parecer.module').then( m => m.DarParecerPageModule) - }, - { - path: 'opts-expediente', - loadChildren: () => import('./shared/popover/opts-expediente/opts-expediente.module').then( m => m.OptsExpedientePageModule) - }, - { - path: 'despachos-pr', - loadChildren: () => import('./shared/gabinete-digital/despachos-pr/despachos-pr.module').then( m => m.DespachosPrPageModule) - }, - { - path: 'diplomas', - loadChildren: () => import('./shared/gabinete-digital/diplomas/diplomas.module').then( m => m.DiplomasPageModule) - }, - { - path: 'expedientes-pr', - loadChildren: () => import('./shared/gabinete-digital/expedientes-pr/expedientes-pr.module').then( m => m.ExpedientesPrPageModule) - }, - { - path: 'diplomas-assinar', - loadChildren: () => import('./shared/gabinete-digital/diplomas-assinar/diplomas-assinar.module').then( m => m.DiplomasAssinarPageModule) - }, - { - path: 'opts-expediente-pr', - loadChildren: () => import('./shared/popover/opts-expediente-pr/opts-expediente-pr.module').then( m => m.OptsExpedientePrPageModule) - }, - { - path: 'despachos-options', - loadChildren: () => import('./shared/popover/despachos-options/despachos-options.module').then( m => m.DespachosOptionsPageModule) - }, - { - path: 'despachos-pr-options', - loadChildren: () => import('./shared/popover/despachos-pr-options/despachos-pr-options.module').then( m => m.DespachosPrOptionsPageModule) - }, - { - path: 'deploma-options', - loadChildren: () => import('./shared/popover/deploma-options/deploma-options.module').then( m => m.DeplomaOptionsPageModule) - }, - { - path: 'pin', - loadChildren: () => import('./shared/pin/pin.module').then( m => m.PinPageModule) - }, - { - path: 'fingerprint', - loadChildren: () => import('./shared/fingerprint/fingerprint.module').then( m => m.FingerprintPageModule) - }, - { - path: 'new-event', - loadChildren: () => import('./shared/agenda/new-event/new-event.module').then( m => m.NewEventPageModule) - }, - { - path: 'event-list', - loadChildren: () => import('./shared/agenda/event-list/event-list.module').then( m => m.EventListPageModule) - }, - { - path: 'approve-event', - loadChildren: () => import('./shared/agenda/approve-event/approve-event.module').then( m => m.ApproveEventPageModule) - }, - { - path: 'bad-request', - loadChildren: () => import('./shared/popover/bad-request/bad-request.module').then( m => m.BadRequestPageModule) - }, - { - path: 'success-message', - loadChildren: () => import('./shared/popover/success-message/success-message.module').then( m => m.SuccessMessagePageModule) - }, - { - path: 'forward', - loadChildren: () => import('./modals/forward/forward.module').then( m => m.ForwardPageModule) - }, - { - path: 'edit-event-to-approve', - loadChildren: () => import('./shared/agenda/edit-event-to-approve/edit-event-to-approve.module').then( m => m.EditEventToApprovePageModule) - }, - { - path: 'actions-options', - loadChildren: () => import('./shared/popover/actions-options/actions-options.module').then( m => m.ActionsOptionsPageModule) - }, - { - path: 'edit-action', - loadChildren: () => import('./shared/publication/edit-action/edit-action.module').then( m => m.EditActionPageModule) - }, - { - path: 'eliminate-event', - loadChildren: () => import('./modals/eliminate-event/eliminate-event.module').then( m => m.EliminateEventPageModule) - }, - { - path: 'inactivity', - loadChildren: () => import('./pages/inactivity/inactivity.module').then( m => m.InactivityPageModule) - }, - { - path: 'document-set-up-meeting', - loadChildren: () => import('./modals/document-set-up-meeting/document-set-up-meeting.module').then( m => m.DocumentSetUpMeetingPageModule) - }, - { - path: 'profile', - loadChildren: () => import('./modals/profile/profile.module').then( m => m.ProfilePageModule) - }, - { - path: 'all-processes', - loadChildren: () => import('./shared/gabinete-digital/all-processes/all-processes.module').then( m => m.AllProcessesPageModule) - }, - { - path: 'searched-document-options', - loadChildren: () => import('./shared/popover/searched-document-options/searched-document-options.module').then( m => m.SearchedDocumentOptionsPageModule) - }, - { - path: 'task-list', - loadChildren: () => import('./shared/gabinete-digital/generic/task-list/task-list.module').then( m => m.TaskListPageModule) - }, - { - path: 'task-list', - loadChildren: () => import('./shared/gabinete-digital/generic/task-list/task-list.module').then( m => m.TaskListPageModule) - }, - { - path: 'task-detailde', - loadChildren: () => import('./shared/gabinete-digital/generic/task-detailde/task-detailde.module').then( m => m.TaskDetaildePageModule) - }, - { - path: 'task-details', - loadChildren: () => import('./shared/gabinete-digital/generic/task-details/task-details.module').then( m => m.TaskDetailsPageModule) - }, - { - path: 'chat-options-features', - loadChildren: () => import('./modals/chat-options-features/chat-options-features.module').then( m => m.ChatOptionsFeaturesPageModule) - }, - { - path: 'document-viewer', - loadChildren: () => import('./modals/document-viewer/document-viewer.module').then( m => m.DocumentViewerPageModule) - }, - { - path: 'view-document', - loadChildren: () => import('./modals/view-document/view-document.module').then( m => m.ViewDocumentPageModule) - }, - { - path: 'event-details-documents-options', - loadChildren: () => import('./shared/popover/event-details-documents-options/event-details-documents-options.module').then( m => m.EventDetailsDocumentsOptionsPageModule) - }, - { - path: 'preview-camera', - loadChildren: () => import('./modals/preview-camera/preview-camera.module').then( m => m.PreviewCameraPageModule) - }, - { - path: 'group-icons', - loadChildren: () => import('./modals/group-icons/group-icons.module').then( m => m.GroupIconsPageModule) - }, - { - path: 'video-allowed', - loadChildren: () => import('./modals/video-allowed/video-allowed.module').then( m => m.VideoAllowedPageModule) - }, - { - path: 'preview-photo', - loadChildren: () => import('./modals/preview-photo/preview-photo.module').then( m => m.PreviewPhotoPageModule) - }, - { - path: 'custom-image-cache', - loadChildren: () => import('./services/file/custom-image-cache/custom-image-cache.module').then( m => m.CustomImageCachePageModule) - }, - { - path: 'view-media', - loadChildren: () => import('./modals/view-media/view-media.module').then( m => m.ViewMediaPageModule) - }, - { - path: 'view-event', - loadChildren: () => import('./modals/view-event/view-event.module').then( m => m.ViewEventPageModule) - }, - { - path: 'previewer', - loadChildren: () => import('./modals/previewer/previewer.module').then( m => m.PreviewerPageModule) - }, - { - path: 'set-room-owner', - loadChildren: () => import('./modals/set-room-owner/set-room-owner.module').then( m => m.SetRoomOwnerPageModule) - }, - { - path: 'diplomas-gerar', - loadChildren: () => import('./shared/gabinete-digital/diplomas-gerar/diplomas-gerar.module').then( m => m.DiplomasGerarPageModule) - }, - { - path: 'diplomas-gerar-options', - loadChildren: () => import('./shared/popover/diplomas-gerar-options/diplomas-gerar-options.module').then( m => m.DiplomasGerarOptionsPageModule) +import { NgModule } from '@angular/core'; +import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; + +const routes = [ + { + path: '', + loadChildren: () => import('./index/index.module').then(m => m.IndexPageModule) + }, + { + path: '', + loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) + }, + { + path: 'empty-chat', + loadChildren: () => import('./shared/chat/empty-chat/empty-chat.module').then( m => m.EmptyChatPageModule) + }, + { + path: 'empty-container', + loadChildren: () => import('./shared/empty-container/empty-container.module').then( m => m.EmptyContainerPageModule) + }, + { + path: 'events-to-approve', + loadChildren: () => import('./shared/gabinete-digital/events-to-approve/events-to-approve.module').then( m => m.EventsToApprovePageModule) + }, + { + path: 'expedients', + loadChildren: () => import('./shared/gabinete-digital/expedients/expedients.module').then( m => m.ExpedientsPageModule) + }, + { + path: 'document-detail', + loadChildren: () => import('./modals/document-detail/document-detail.module').then( m => m.DocumentDetailPageModule) + }, + { + path: 'edit-group', + loadChildren: () => import('./shared/chat/edit-group/edit-group.module').then( m => m.EditGroupPageModule) + }, + { + path: 'pedidos', + loadChildren: () => import('./shared/gabinete-digital/pedidos/pedidos.module').then( m => m.PedidosPageModule) + }, + { + path: 'event-list', + loadChildren: () => import('./pages/gabinete-digital/event-list/event-list.module').then(m =>m.EventListPageModule) + }, + { + path: 'despachos', + loadChildren: () => import('./shared/gabinete-digital/despachos/despachos.module').then( m => m.DespachosPageModule) + }, + { + path: 'create-process', + loadChildren: () => import('./modals/create-process/create-process.module').then( m => m.CreateProcessPageModule) + }, + { + path: 'pendentes', + loadChildren: () => import('./shared/gabinete-digital/pendentes/pendentes.module').then( m => m.PendentesPageModule) + }, + { + path: 'delegar', + loadChildren: () => import('./modals/delegar/delegar.module').then( m => m.DelegarPageModule) + }, + { + path: 'add-note', + loadChildren: () => import('./modals/add-note/add-note.module').then( m => m.AddNotePageModule) + }, + { + path: 'dar-parecer', + loadChildren: () => import('./modals/dar-parecer/dar-parecer.module').then( m => m.DarParecerPageModule) + }, + { + path: 'opts-expediente', + loadChildren: () => import('./shared/popover/opts-expediente/opts-expediente.module').then( m => m.OptsExpedientePageModule) + }, + { + path: 'despachos-pr', + loadChildren: () => import('./shared/gabinete-digital/despachos-pr/despachos-pr.module').then( m => m.DespachosPrPageModule) + }, + { + path: 'diplomas', + loadChildren: () => import('./shared/gabinete-digital/diplomas/diplomas.module').then( m => m.DiplomasPageModule) + }, + { + path: 'expedientes-pr', + loadChildren: () => import('./shared/gabinete-digital/expedientes-pr/expedientes-pr.module').then( m => m.ExpedientesPrPageModule) + }, + { + path: 'diplomas-assinar', + loadChildren: () => import('./shared/gabinete-digital/diplomas-assinar/diplomas-assinar.module').then( m => m.DiplomasAssinarPageModule) + }, + { + path: 'opts-expediente-pr', + loadChildren: () => import('./shared/popover/opts-expediente-pr/opts-expediente-pr.module').then( m => m.OptsExpedientePrPageModule) + }, + { + path: 'despachos-options', + loadChildren: () => import('./shared/popover/despachos-options/despachos-options.module').then( m => m.DespachosOptionsPageModule) + }, + { + path: 'despachos-pr-options', + loadChildren: () => import('./shared/popover/despachos-pr-options/despachos-pr-options.module').then( m => m.DespachosPrOptionsPageModule) + }, + { + path: 'deploma-options', + loadChildren: () => import('./shared/popover/deploma-options/deploma-options.module').then( m => m.DeplomaOptionsPageModule) + }, + { + path: 'pin', + loadChildren: () => import('./shared/pin/pin.module').then( m => m.PinPageModule) + }, + { + path: 'fingerprint', + loadChildren: () => import('./shared/fingerprint/fingerprint.module').then( m => m.FingerprintPageModule) + }, + { + path: 'new-event', + loadChildren: () => import('./shared/agenda/new-event/new-event.module').then( m => m.NewEventPageModule) + }, + { + path: 'event-list', + loadChildren: () => import('./shared/agenda/event-list/event-list.module').then( m => m.EventListPageModule) + }, + { + path: 'approve-event', + loadChildren: () => import('./shared/agenda/approve-event/approve-event.module').then( m => m.ApproveEventPageModule) + }, + { + path: 'bad-request', + loadChildren: () => import('./shared/popover/bad-request/bad-request.module').then( m => m.BadRequestPageModule) + }, + { + path: 'success-message', + loadChildren: () => import('./shared/popover/success-message/success-message.module').then( m => m.SuccessMessagePageModule) + }, + { + path: 'forward', + loadChildren: () => import('./modals/forward/forward.module').then( m => m.ForwardPageModule) + }, + { + path: 'edit-event-to-approve', + loadChildren: () => import('./shared/agenda/edit-event-to-approve/edit-event-to-approve.module').then( m => m.EditEventToApprovePageModule) + }, + { + path: 'actions-options', + loadChildren: () => import('./shared/popover/actions-options/actions-options.module').then( m => m.ActionsOptionsPageModule) + }, + { + path: 'edit-action', + loadChildren: () => import('./shared/publication/edit-action/edit-action.module').then( m => m.EditActionPageModule) + }, + { + path: 'eliminate-event', + loadChildren: () => import('./modals/eliminate-event/eliminate-event.module').then( m => m.EliminateEventPageModule) + }, + { + path: 'inactivity', + loadChildren: () => import('./pages/inactivity/inactivity.module').then( m => m.InactivityPageModule) + }, + { + path: 'document-set-up-meeting', + loadChildren: () => import('./modals/document-set-up-meeting/document-set-up-meeting.module').then( m => m.DocumentSetUpMeetingPageModule) + }, + { + path: 'profile', + loadChildren: () => import('./modals/profile/profile.module').then( m => m.ProfilePageModule) + }, + { + path: 'all-processes', + loadChildren: () => import('./shared/gabinete-digital/all-processes/all-processes.module').then( m => m.AllProcessesPageModule) + }, + { + path: 'searched-document-options', + loadChildren: () => import('./shared/popover/searched-document-options/searched-document-options.module').then( m => m.SearchedDocumentOptionsPageModule) + }, + { + path: 'task-list', + loadChildren: () => import('./shared/gabinete-digital/generic/task-list/task-list.module').then( m => m.TaskListPageModule) + }, + { + path: 'task-list', + loadChildren: () => import('./shared/gabinete-digital/generic/task-list/task-list.module').then( m => m.TaskListPageModule) + }, + { + path: 'task-detailde', + loadChildren: () => import('./shared/gabinete-digital/generic/task-detailde/task-detailde.module').then( m => m.TaskDetaildePageModule) + }, + { + path: 'task-details', + loadChildren: () => import('./shared/gabinete-digital/generic/task-details/task-details.module').then( m => m.TaskDetailsPageModule) + }, + { + path: 'chat-options-features', + loadChildren: () => import('./modals/chat-options-features/chat-options-features.module').then( m => m.ChatOptionsFeaturesPageModule) + }, + { + path: 'document-viewer', + loadChildren: () => import('./modals/document-viewer/document-viewer.module').then( m => m.DocumentViewerPageModule) + }, + { + path: 'view-document', + loadChildren: () => import('./modals/view-document/view-document.module').then( m => m.ViewDocumentPageModule) + }, + { + path: 'event-details-documents-options', + loadChildren: () => import('./shared/popover/event-details-documents-options/event-details-documents-options.module').then( m => m.EventDetailsDocumentsOptionsPageModule) + }, + { + path: 'preview-camera', + loadChildren: () => import('./modals/preview-camera/preview-camera.module').then( m => m.PreviewCameraPageModule) + }, + { + path: 'group-icons', + loadChildren: () => import('./modals/group-icons/group-icons.module').then( m => m.GroupIconsPageModule) + }, + { + path: 'video-allowed', + loadChildren: () => import('./modals/video-allowed/video-allowed.module').then( m => m.VideoAllowedPageModule) + }, + { + path: 'preview-photo', + loadChildren: () => import('./modals/preview-photo/preview-photo.module').then( m => m.PreviewPhotoPageModule) + }, + { + path: 'custom-image-cache', + loadChildren: () => import('./services/file/custom-image-cache/custom-image-cache.module').then( m => m.CustomImageCachePageModule) + }, + { + path: 'view-media', + loadChildren: () => import('./modals/view-media/view-media.module').then( m => m.ViewMediaPageModule) + }, + { + path: 'view-event', + loadChildren: () => import('./modals/view-event/view-event.module').then( m => m.ViewEventPageModule) + }, + { + path: 'previewer', + loadChildren: () => import('./modals/previewer/previewer.module').then( m => m.PreviewerPageModule) + }, + { + path: 'set-room-owner', + loadChildren: () => import('./modals/set-room-owner/set-room-owner.module').then( m => m.SetRoomOwnerPageModule) + }, + { + path: 'diplomas-gerar', + loadChildren: () => import('./shared/gabinete-digital/diplomas-gerar/diplomas-gerar.module').then( m => m.DiplomasGerarPageModule) + }, + { + path: 'diplomas-gerar-options', + loadChildren: () => import('./shared/popover/diplomas-gerar-options/diplomas-gerar-options.module').then( m => m.DiplomasGerarOptionsPageModule) + }, + { + path: 'chat-debugging', + loadChildren: () => import('./shared/popover/chat-debugging/chat-debugging.module').then( m => m.ChatDebuggingPageModule) + }, { + path: 'chat-message-debugging', + loadChildren: () => import('./shared/popover/chat-message-debugging/chat-message-debugging.module').then( m => m.ChatMessageDebuggingPageModule) } - /* - path: 'chat', - component: ChatPage - } */ - - /* - path: 'chat', - component: ChatPage - } */ - -]; -@NgModule({ - imports: [ - RouterModule.forRoot(routes, - { preloadingStrategy: PreloadAllModules }) - ], - exports: [RouterModule] -}) -export class AppRoutingModule {} + + /* + path: 'chat', + component: ChatPage + } */ + + /* + path: 'chat', + component: ChatPage + } */ + +]; +@NgModule({ + imports: [ + RouterModule.forRoot(routes, + { preloadingStrategy: PreloadAllModules }) + ], + exports: [RouterModule] +}) +export class AppRoutingModule {} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 835ca57dc..f925c66fc 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -92,11 +92,6 @@ export class AppComponent { } }) - this.storageservice.get('theme').then((theme) =>{ - console.log('THEME: ', theme) - this.ThemeService.setTheme(theme) - }) - }); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 9a2d12d50..9a7c52af4 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -24,13 +24,10 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { CalendarModule, DateAdapter } from 'angular-calendar'; import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { MessagesPage } from './pages/chat/messages/messages.page'; -import { WebsocketService } from './services/websocket.service' import { ChatService } from './services/chat.service'; import {MatDatepickerModule} from '@angular/material/datepicker'; // import { FCM } from 'cordova-plugin-fcm-with-dependecy-updated/ionic/ngx'; -import {MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core'; -import { NgxMatDateFormats, NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker'; +import {MAT_DATE_LOCALE} from '@angular/material/core'; import { Network } from '@ionic-native/network/ngx'; import { MultipleDocumentsPicker } from '@awesome-cordova-plugins/multiple-document-picker/ngx'; import { DocumentViewer } from '@awesome-cordova-plugins/document-viewer/ngx'; @@ -130,7 +127,6 @@ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */ FilePath, /* FCM, FirebaseX, */ - WebsocketService, ChatService, ScreenOrientation, Network, diff --git a/src/app/guards/auth.guard.ts b/src/app/guards/auth.guard.ts index f1b5506ee..9beca8a4b 100644 --- a/src/app/guards/auth.guard.ts +++ b/src/app/guards/auth.guard.ts @@ -33,7 +33,7 @@ export class AuthGuard implements CanActivate { return false } else { if(this.p.userPermission(this.p.permissionList.Chat.access) == true) { - this.authService.loginChat(); + // this.authService.loginChat(); } const pathname = state.url diff --git a/src/app/home/home.page.html b/src/app/home/home.page.html index 6e1d3558a..0caf5aeba 100644 --- a/src/app/home/home.page.html +++ b/src/app/home/home.page.html @@ -1,9 +1,9 @@ - + - + diff --git a/src/app/home/home.page.ts b/src/app/home/home.page.ts index fd2a9a71c..50f5413bf 100644 --- a/src/app/home/home.page.ts +++ b/src/app/home/home.page.ts @@ -20,8 +20,7 @@ import { RouteService } from 'src/app/services/route.service'; import { NativeNotificationService } from 'src/app/services/native-notification.service'; import { UserSession } from '../models/user.model'; import { PermissionList } from '../models/permission/permissionList'; -import { LoginUserRespose } from 'src/app/models/user.model'; -import { AuthService } from 'src/app/services/auth.service'; + @@ -75,8 +74,7 @@ export class HomePage implements OnInit { audioName: string = ""; public user: UserSession; permissionList = new PermissionList(); - loggeduser: LoginUserRespose; - + SessionStore = SessionStore constructor( private router: Router, @@ -89,11 +87,9 @@ export class HomePage implements OnInit { private eventservice: EventsService, private processservice: ProcessesService, public RouteService: RouteService, - private authService: AuthService, private NativeNotificationService: NativeNotificationService, private sqliteservice: SqliteService, ) { - this.loggeduser = authService.ValidatedUser; if (SessionStore.exist) { this.user = SessionStore.user; } diff --git a/src/app/modals/add-note/add-note.page.html b/src/app/modals/add-note/add-note.page.html index da7a5fd29..a54e31142 100644 --- a/src/app/modals/add-note/add-note.page.html +++ b/src/app/modals/add-note/add-note.page.html @@ -14,6 +14,8 @@
+ +
Anexar Documentos diff --git a/src/app/modals/chat-options-features/chat-options-features.page.html b/src/app/modals/chat-options-features/chat-options-features.page.html index 848e950fa..a0c3cacdc 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.html +++ b/src/app/modals/chat-options-features/chat-options-features.page.html @@ -3,6 +3,7 @@
diff --git a/src/app/modals/chat-options-features/chat-options-features.page.ts b/src/app/modals/chat-options-features/chat-options-features.page.ts index b384af419..9f2bfb92d 100644 --- a/src/app/modals/chat-options-features/chat-options-features.page.ts +++ b/src/app/modals/chat-options-features/chat-options-features.page.ts @@ -48,7 +48,7 @@ export class ChatOptionsFeaturesPage implements OnInit { } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); } notImplemented() { diff --git a/src/app/modals/create-process/create-process.page.html b/src/app/modals/create-process/create-process.page.html index c2e121b25..6efadc2f5 100644 --- a/src/app/modals/create-process/create-process.page.html +++ b/src/app/modals/create-process/create-process.page.html @@ -96,6 +96,8 @@
+ +
@@ -118,6 +120,8 @@
+ +
@@ -128,6 +132,8 @@
+ +
Anexar Documentos diff --git a/src/app/modals/create-process/create-process.page.ts b/src/app/modals/create-process/create-process.page.ts index ab55030c8..5a6b5f37e 100644 --- a/src/app/modals/create-process/create-process.page.ts +++ b/src/app/modals/create-process/create-process.page.ts @@ -1,10 +1,9 @@ import { Component, OnInit } from '@angular/core'; -import { AnimationController, ModalController, NavParams } from '@ionic/angular'; +import { ModalController, NavParams } from '@ionic/angular'; import { Despacho } from 'src/app/models/despacho.model'; import { EventPerson } from 'src/app/models/eventperson.model'; import { Participant } from 'src/app/models/participant.model'; import { Folder } from 'src/app/models/folder.model'; -import { AuthService } from 'src/app/services/auth.service'; import { ProcessesService } from 'src/app/services/processes.service'; import { DiscartExpedientModalPage } from 'src/app/pages/gabinete-digital/discart-expedient-modal/discart-expedient-modal.page'; import { ExpedienteDetailPage } from 'src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page'; @@ -21,6 +20,7 @@ import { DespachoService } from 'src/app/Rules/despacho.service'; import { PedidoService } from 'src/app/Rules/pedido.service' import { fullTask } from 'src/app/models/dailyworktask.model'; import { ThemeService } from 'src/app/services/theme.service' +import { SessionStore } from 'src/app/store/session.service'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { @@ -93,16 +93,13 @@ export class CreateProcessPage implements OnInit { private modalController: ModalController, private processes:ProcessesService, private navParams: NavParams, - private authService: AuthService, - private userAuth: AuthService, - private animationController: AnimationController, private toastService: ToastService, public p: PermissionService, private despachoService: DespachoService, private pedidoService: PedidoService, public ThemeService: ThemeService ) { - this.loggeduser = userAuth.ValidatedUser; + this.loggeduser = SessionStore.user; this.task = this.navParams.get('task'); if (this.task.SerialNumber) { diff --git a/src/app/modals/dar-parecer/dar-parecer.page.html b/src/app/modals/dar-parecer/dar-parecer.page.html index 71f7cfca7..ef09db6fb 100644 --- a/src/app/modals/dar-parecer/dar-parecer.page.html +++ b/src/app/modals/dar-parecer/dar-parecer.page.html @@ -19,6 +19,8 @@
+ +
Anexar Documentos diff --git a/src/app/modals/delegar/delegar.page.html b/src/app/modals/delegar/delegar.page.html index 3e096eb03..36f32db59 100644 --- a/src/app/modals/delegar/delegar.page.html +++ b/src/app/modals/delegar/delegar.page.html @@ -25,6 +25,7 @@
+
@@ -46,6 +47,7 @@
+
Anexar Documentos diff --git a/src/app/modals/document-detail/document-detail.page.html b/src/app/modals/document-detail/document-detail.page.html index 1e1c3d8a3..3c2b19df5 100644 --- a/src/app/modals/document-detail/document-detail.page.html +++ b/src/app/modals/document-detail/document-detail.page.html @@ -11,6 +11,7 @@
+
diff --git a/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.html b/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.html index 6d53d4669..e6e1f86e4 100644 --- a/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.html +++ b/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.html @@ -302,6 +302,7 @@
+
@@ -324,6 +325,7 @@
+
@@ -345,6 +347,8 @@
+ +
Anexar Documentos diff --git a/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts b/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts index 56a0bb27f..e91e53817 100644 --- a/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts +++ b/src/app/modals/document-set-up-meeting/document-set-up-meeting.page.ts @@ -18,6 +18,7 @@ import { EventsService } from 'src/app/services/events.service'; import { EventService } from 'src/app/services/rules/event.service'; import { EventPipe } from 'src/app/pipes/event.pipe'; import { ThemeService } from 'src/app/services/theme.service' +import { SessionStore } from 'src/app/store/session.service'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { @@ -105,7 +106,7 @@ export class DocumentSetUpMeetingPage implements OnInit { public ThemeService: ThemeService, public _eventService: EventsService, ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.document = this.navParams.get('document') this.subject = this.navParams.get('subject') diff --git a/src/app/modals/document-viewer/document-viewer.page.html b/src/app/modals/document-viewer/document-viewer.page.html index 50abdcb04..4336485ee 100644 --- a/src/app/modals/document-viewer/document-viewer.page.html +++ b/src/app/modals/document-viewer/document-viewer.page.html @@ -5,6 +5,7 @@
+
{{ fileName }}
diff --git a/src/app/modals/forward/forward.page.html b/src/app/modals/forward/forward.page.html index 37e6f9f0d..3e90a1f86 100644 --- a/src/app/modals/forward/forward.page.html +++ b/src/app/modals/forward/forward.page.html @@ -26,6 +26,7 @@
+
diff --git a/src/app/modals/preview-camera/preview-camera.page.html b/src/app/modals/preview-camera/preview-camera.page.html index f4a96098a..7e54af7c3 100644 --- a/src/app/modals/preview-camera/preview-camera.page.html +++ b/src/app/modals/preview-camera/preview-camera.page.html @@ -5,7 +5,8 @@
- + +
{{name}}
diff --git a/src/app/modals/preview-camera/preview-camera.page.ts b/src/app/modals/preview-camera/preview-camera.page.ts index 3f16ae5a5..e0c000ea5 100644 --- a/src/app/modals/preview-camera/preview-camera.page.ts +++ b/src/app/modals/preview-camera/preview-camera.page.ts @@ -6,6 +6,7 @@ import { GroupIconsPage } from '../group-icons/group-icons.page'; import { Share } from '@capacitor/share'; import { Router } from '@angular/router'; import { Directory, Filesystem } from '@capacitor/filesystem'; +import { ThemeService } from 'src/app/services/theme.service' @Component({ selector: 'app-preview-camera', @@ -17,7 +18,8 @@ export class PreviewCameraPage implements OnInit { constructor( private modalController: ModalController, private navParams:NavParams, public router: Router, - private publicService: PublicationsService) { } + private publicService: PublicationsService, + public ThemeService: ThemeService,) { } @ViewChild(IonSlides) slides : IonSlides diff --git a/src/app/modals/profile/edit-profile/edit-profile.page.html b/src/app/modals/profile/edit-profile/edit-profile.page.html index 7d5da7de3..b78c3b45c 100644 --- a/src/app/modals/profile/edit-profile/edit-profile.page.html +++ b/src/app/modals/profile/edit-profile/edit-profile.page.html @@ -1,31 +1,39 @@
-
@@ -43,12 +51,12 @@
- +
-
{{SessionStore.user.RoleDescription}}
+
{{SessionStore.user.RoleDescription}}
@@ -84,14 +92,16 @@
-
+
- +
diff --git a/src/app/modals/profile/edit-profile/edit-profile.page.ts b/src/app/modals/profile/edit-profile/edit-profile.page.ts index 2cd0302b8..d32656f9e 100644 --- a/src/app/modals/profile/edit-profile/edit-profile.page.ts +++ b/src/app/modals/profile/edit-profile/edit-profile.page.ts @@ -20,7 +20,7 @@ export class EditProfilePage implements OnInit { constructor(private modalController:ModalController, private animationController: AnimationController, public platform: Platform, - private backgroundservice: BackgroundService, + private BackgroundService: BackgroundService, public ThemeService: ThemeService ) {} @@ -118,6 +118,7 @@ export class EditProfilePage implements OnInit { changeTheme(name) { this.ThemeService.setTheme(name) + this.BackgroundService.paint(); } } diff --git a/src/app/modals/profile/profile.page.html b/src/app/modals/profile/profile.page.html index cb294eed0..b38f1be0f 100644 --- a/src/app/modals/profile/profile.page.html +++ b/src/app/modals/profile/profile.page.html @@ -1,29 +1,30 @@
- {{loggeduser.RoleDescription}} + {{loggeduser.RoleDescription}}
@@ -79,10 +80,6 @@

{{item.title}}

{{item.body}}

-
diff --git a/src/app/modals/profile/profile.page.ts b/src/app/modals/profile/profile.page.ts index b4d94dc95..939a7b98e 100644 --- a/src/app/modals/profile/profile.page.ts +++ b/src/app/modals/profile/profile.page.ts @@ -1,16 +1,14 @@ import { Component, OnInit, NgZone } from '@angular/core'; -import { Router, NavigationExtras } from '@angular/router'; +import { Router } from '@angular/router'; import { AnimationController, ModalController, Platform } from '@ionic/angular'; import { LoginUserRespose } from 'src/app/models/user.model'; import { AuthService } from 'src/app/services/auth.service'; -import { LocalstoreService } from 'src/app/store/localstore.service'; import { EditProfilePage } from './edit-profile/edit-profile.page'; import { StorageService } from '../../services/storage.service'; import { NotificationsService } from '../../services/notifications.service'; import { SessionStore } from 'src/app/store/session.service'; import { EventTrigger } from '../../services/eventTrigger.service'; import { ThemeService } from 'src/app/services/theme.service' -import { SortService } from 'src/app/services/functions/sort.service'; @Component({ selector: 'app-profile', @@ -31,23 +29,29 @@ export class ProfilePage implements OnInit { md: "100000011"; date: "60:20"; location: "Gabinete"; + isProfileOpen = false + hideImage = false constructor(private modalController: ModalController, private authService: AuthService, private animationController: AnimationController, private router: Router, - private localstoreService: LocalstoreService, private storageservice: StorageService, private zone: NgZone, private notificationservice: NotificationsService, private platform: Platform, private eventtrigger: EventTrigger, public ThemeService: ThemeService, - private sortService: SortService, ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; + router.events.subscribe((val) => { + this.isProfileOpen = false + }); + setTimeout(()=>{ + this.hideImage = true + }, 2000) } ngOnInit() { @@ -58,15 +62,6 @@ export class ProfilePage implements OnInit { this.getNotificationData(); } - /* this.notificationsService.registerCallback( - 'any', - () => { - setTimeout(()=>{ - this.getNotificationData(); - }, 100) - } - ) */ - } @@ -204,14 +199,7 @@ export class ProfilePage implements OnInit { } logout() { - this.authService.logout() - - /* SessionStore.setInativity(false) - SessionStore.setUrlBeforeInactivity(this.router.url) - setTimeout(() => { - this.router.navigateByUrl('/', { replaceUrl: true }); - }, 100) */ - + this.authService.logout(); } async editProfile() { @@ -240,15 +228,22 @@ export class ProfilePage implements OnInit { } - const modal = await this.modalController.create({ - enterAnimation, - leaveAnimation, - component: EditProfilePage, - cssClass: 'model profile-modal', - componentProps: { - } - }); - return await modal.present(); + if(this.isProfileOpen == false) { + this.isProfileOpen = true; + + const modal = await this.modalController.create({ + component: EditProfilePage, + cssClass: 'model profile-modal search-submodal', + componentProps: { + } + }); + await modal.present(); + + modal.onDidDismiss().then(() => { + this.isProfileOpen = false; + }) + + } } } diff --git a/src/app/modals/set-room-owner/set-room-owner.page.html b/src/app/modals/set-room-owner/set-room-owner.page.html index a6d13bec1..54a856094 100644 --- a/src/app/modals/set-room-owner/set-room-owner.page.html +++ b/src/app/modals/set-room-owner/set-room-owner.page.html @@ -3,7 +3,9 @@
+ diff --git a/src/app/modals/set-room-owner/set-room-owner.page.ts b/src/app/modals/set-room-owner/set-room-owner.page.ts index 823571f20..40a0656d6 100644 --- a/src/app/modals/set-room-owner/set-room-owner.page.ts +++ b/src/app/modals/set-room-owner/set-room-owner.page.ts @@ -1,9 +1,7 @@ -import { HttpClient } from '@angular/common/http'; + import { Component, OnInit } from '@angular/core'; import { ModalController, NavParams } from '@ionic/angular'; -import { AuthService } from 'src/app/services/auth.service'; -import { ChatService } from 'src/app/services/chat.service'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { ThemeService } from 'src/app/services/theme.service' import { ToastService } from 'src/app/services/toast.service'; @@ -20,20 +18,17 @@ export class SetRoomOwnerPage implements OnInit { constructor( private modalController: ModalController, - private http: HttpClient, - private chatService: ChatService, - private authService: AuthService, private navParams: NavParams, public ThemeService: ThemeService, private toastService: ToastService, - public wsChatMethodsService: WsChatMethodsService, + public ChatSystemService: ChatSystemService, ) { this.roomId = this.navParams.get('roomId'); this.members = this.navParams.get('members'); } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); } async close(){ @@ -60,7 +55,7 @@ export class SetRoomOwnerPage implements OnInit { async setRoomOwner(user:any){ - let res:any = await this.wsChatMethodsService.addRoomOwner(this.roomId, user._id); + let res:any = await this.ChatSystemService.addRoomOwner(this.roomId, user._id); if(res.error){ diff --git a/src/app/modals/view-event/view-event.page.html b/src/app/modals/view-event/view-event.page.html index 368c471d6..2c8945d3b 100644 --- a/src/app/modals/view-event/view-event.page.html +++ b/src/app/modals/view-event/view-event.page.html @@ -15,7 +15,9 @@
@@ -25,6 +27,7 @@
@@ -44,7 +44,7 @@
- +
@@ -97,14 +97,13 @@
- +
- -
+
MC
@@ -115,11 +114,11 @@
- - @@ -127,14 +126,14 @@ - + @@ -154,7 +153,7 @@ - + @@ -214,7 +213,7 @@ @@ -227,13 +226,13 @@ -
-
-
Calendário do MDGPR
+
+
+
Meu Calendário
-
+
-
Calendário do Presidente da República
+
Calendário Partilhado
@@ -243,13 +242,11 @@
-
-
@@ -293,7 +290,7 @@
-
+
@@ -334,7 +331,7 @@
-
+
diff --git a/src/app/pages/agenda/agenda.page.scss b/src/app/pages/agenda/agenda.page.scss index 0abdea4dd..4bdc16d28 100644 --- a/src/app/pages/agenda/agenda.page.scss +++ b/src/app/pages/agenda/agenda.page.scss @@ -582,6 +582,34 @@ td.monthview-primary-with-event { } +.myCalendar { + .content--Oficial { + border-radius: 5px; + border-right: 5px solid #ffb703; + overflow: auto; + } + .content--Pessoal { + border-radius: 5px; + border-right: 5px solid #f05d5e; + overflow: auto; + } +} + +.sharedCalendar { + .content-Oficial{ + width: 85%; + float: left; + border-left: 4px solid #cab0dc; + padding: 0 0 0 12px; + } + .content-Pessoal{ + width: 85%; + float: left; + border-left: 4px solid #cbeecb; + padding: 0 0 0 12px; + } +} + .calendar-border{ background: #ebebeb; margin: 13px 20px; diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index 083aa021e..09f9abbb1 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -1,11 +1,11 @@ import { Component, OnInit, ViewChild, Inject, LOCALE_ID } from '@angular/core'; import { CalendarComponent } from 'ionic2-calendar'; -import { AlertController, ModalController, Platform } from '@ionic/angular'; +import { ModalController, Platform } from '@ionic/angular'; import { EventsService } from 'src/app/services/events.service'; import { Event } from '../../models/event.model'; import { Router, NavigationEnd, NavigationExtras } from '@angular/router'; import { momentG } from 'src/plugin/momentG'; -import { DomSanitizer } from "@angular/platform-browser"; + import { EventPerson } from 'src/app/models/eventperson.model'; import { removeDuplicate } from 'src/plugin/removeDuplicate.js'; import { Storage } from '@ionic/storage'; @@ -20,10 +20,8 @@ import { } from 'angular-calendar'; import { CustomDateFormatter } from './custom-date-formatter.provider'; import { NewEventPage } from './new-event/new-event.page'; -import { AuthService } from 'src/app/services/auth.service'; import { LoginUserRespose } from 'src/app/models/user.model'; import { DateAdapter } from '@angular/material/core'; -import { ToastService } from 'src/app/services/toast.service'; import { eventSource } from 'src/app/models/agenda/eventSource'; import { CalendarStore } from 'src/app/store/calendar.service'; import { ListBoxService } from 'src/app/services/agenda/list-box.service'; @@ -35,7 +33,6 @@ import { ThemeService } from 'src/app/services/theme.service' import { SessionStore } from 'src/app/store/session.service'; import { PermissionService } from 'src/app/services/permission.service'; - @Component({ selector: 'app-agenda', templateUrl: './agenda.page.html', @@ -166,18 +163,15 @@ export class AgendaPage implements OnInit { listToPresent array = [] - sessionStore = SessionStore; + SessionStore = SessionStore; + environment constructor( - private alertCtrl: AlertController, @Inject(LOCALE_ID) private locale: string, private modalCtrl: ModalController, public eventService: EventsService, private router: Router, - private sanitizer: DomSanitizer, - authService: AuthService, private dateAdapter: DateAdapter, - private toastService: ToastService, private listBoxService: ListBoxService, private changeProfileService: ChangeProfileService, private sqliteservice: SqliteService, @@ -191,7 +185,7 @@ export class AgendaPage implements OnInit { this.dateAdapter.setLocale('es'); this.locale = 'pt' - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.changeProfileService.registerCallback(() => { this.tigerUpdate() @@ -206,6 +200,8 @@ export class AgendaPage implements OnInit { this.CalendarStore.ResetList([]) + this.listToPresent = [] + }) if (this.loggeduser.Profile == 'MDGPR') { @@ -363,12 +359,6 @@ export class AgendaPage implements OnInit { } - // changedate - dropDownChangeDate(id: string) { - /* const currentCandarDayYear = formatDate(this.eventSelectedDate,'dd -- yyyy', 'pt'); - const newDate = new Date(currentCandarDayYear.replace('--',id)); - this.onCurrentChanged(newDate); */ - } onTimeSelected = (ev: { selectedTime: Date, events: any[] }) => { this.eventSelectedDate2 = ev.selectedTime; @@ -755,46 +745,40 @@ export class AgendaPage implements OnInit { } else if(this.loggeduser.Profile == 'PR') { // view PR calendar with PR profile - this.eventService.getAllPrEvents(momentG(new Date(startTime), 'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime), 'yyyy-MM-dd 23:59:59')).then((response: any) => { + if(this.loggeduser.OwnerCalendars.length != 0 ) { - this.addEventToDB(response, "pr"); - let eventsList; - if (this.segment == 'Oficial') { - eventsList = response.filter(data => data.CalendarName == "Oficial"); - } else if (this.segment == 'Pessoal') { - eventsList = response.filter(data => data.CalendarName == "Pessoal"); - } else { - eventsList = response; - } + this.eventService.getAllOwnEvents(momentG(new Date(startTime), 'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime), 'yyyy-MM-dd 23:59:59')).then((response: any) => { - // clear the current month only - this.CalendarStore.removeRange(startTime, endTime, 'pr') + this.addEventToDB(response, "pr"); + let eventsList = response; + + this.CalendarStore.removeRange(startTime, endTime, 'pr') + + // loop + this.CalendarStore.pushEvent(eventsList, 'pr'); + + this.listToPresent = this.CalendarStore.eventSource + + this.TimelineMDList = this.listBoxService.list(this.listToPresent, 'pr', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) + + // console.log('this.TimelineMDList', this.TimelineMDList); - this.CalendarStore.pushEvent(eventsList, 'pr'); - this.listToPresent = this.CalendarStore.eventSource - - this.TimelinePRList = this.listBoxService.list(this.listToPresent, 'pr', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) - - - // - this.myCal.update(); - this.myCal.loadEvents(); - - this.showTimelinePR = true; - - counter++; - - if (counter == 1 || this.loggeduser.Profile == 'PR') { + this.myCal.update(); + this.myCal.loadEvents(); + + this.showTimelineMD = true; + this.showLoader = false; - } - - }).catch((error) => { - this.getFromDB() - }).finally(() => { - if (counter == 1 || this.loggeduser.Profile == 'PR') { + + + }).catch((error) => { + this.getFromDB() + }).finally(() => { this.showLoader = false; - } - }) + }) + } else { + this.showLoader = false; + } } else { @@ -804,8 +788,6 @@ export class AgendaPage implements OnInit { this.addEventToDB(response, "md"); let eventsList = response; - - console.log('response', response); this.CalendarStore.removeRange(startTime, endTime, 'md') @@ -816,7 +798,7 @@ export class AgendaPage implements OnInit { this.TimelineMDList = this.listBoxService.list(this.listToPresent, 'md', this.rangeStartDate, this.rangeEndDate, { segment: this.segment, selectedDate: this.eventSelectedDate }) - console.log('this.TimelineMDList', this.TimelineMDList); + // console.log('this.TimelineMDList', this.TimelineMDList); this.myCal.update(); this.myCal.loadEvents(); @@ -848,7 +830,6 @@ export class AgendaPage implements OnInit { if(this.loggeduser.SharedCalendars.length != 0 ) { - this.eventService.genericGetAllSharedEvents(momentG(new Date(startTime), 'yyyy-MM-dd HH:mm:ss'), momentG(new Date(endTime), 'yyyy-MM-dd 23:59:59')).then((response: any) => { this.addEventToDB(response, "pr"); diff --git a/src/app/pages/agenda/edit-event/edit-event.page.html b/src/app/pages/agenda/edit-event/edit-event.page.html index f5b50e398..bfcaa69f2 100644 --- a/src/app/pages/agenda/edit-event/edit-event.page.html +++ b/src/app/pages/agenda/edit-event/edit-event.page.html @@ -249,6 +249,7 @@
+
@@ -271,6 +272,7 @@
+
@@ -294,6 +296,7 @@
+
Adicionar documentos diff --git a/src/app/pages/agenda/emend-message-modal/emend-message-modal.page.html b/src/app/pages/agenda/emend-message-modal/emend-message-modal.page.html index 37eeaa3d5..45b2646fd 100644 --- a/src/app/pages/agenda/emend-message-modal/emend-message-modal.page.html +++ b/src/app/pages/agenda/emend-message-modal/emend-message-modal.page.html @@ -2,6 +2,7 @@
diff --git a/src/app/pages/agenda/new-event/new-event.page.html b/src/app/pages/agenda/new-event/new-event.page.html index 0392785eb..304da6b54 100644 --- a/src/app/pages/agenda/new-event/new-event.page.html +++ b/src/app/pages/agenda/new-event/new-event.page.html @@ -238,6 +238,7 @@
+
@@ -260,6 +261,7 @@
+
@@ -283,6 +285,7 @@
+
Adicionar documentos diff --git a/src/app/pages/agenda/new-event/new-event.page.ts b/src/app/pages/agenda/new-event/new-event.page.ts index a0e472091..7c5c1b05f 100644 --- a/src/app/pages/agenda/new-event/new-event.page.ts +++ b/src/app/pages/agenda/new-event/new-event.page.ts @@ -6,7 +6,6 @@ import { EventPerson } from 'src/app/models/eventperson.model'; import { SearchList } from 'src/app/models/search-document'; import { LoginUserRespose } from 'src/app/models/user.model'; import { AttachmentsService } from 'src/app/services/attachments.service'; -import { AuthService } from 'src/app/services/auth.service'; import { EventsService } from 'src/app/services/events.service'; import { ToastService } from 'src/app/services/toast.service'; import { Event } from '../../../models/event.model'; @@ -17,6 +16,7 @@ import { FormControl, FormGroup, Validators } from '@angular/forms'; import { ThemeService } from 'src/app/services/theme.service'; import { NgxMatDateFormats } from '@angular-material-components/datetime-picker'; import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker'; +import { SessionStore } from 'src/app/store/session.service'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { @@ -91,10 +91,9 @@ export class NewEventPage implements OnInit { public eventService: EventsService, private attachmentsService: AttachmentsService, private toastService: ToastService, - userService: AuthService, public ThemeService: ThemeService ) { - this.loggeduser = userService.ValidatedUser; + this.loggeduser = SessionStore.user; this.postEvent = new Event(); this.postEvent.EventRecurrence = {Type:'-1'}; this.eventBody = { BodyType : "1", Text : ""}; diff --git a/src/app/pages/agenda/view-event/view-event.page.html b/src/app/pages/agenda/view-event/view-event.page.html index 96ae78e19..0addef5b6 100644 --- a/src/app/pages/agenda/view-event/view-event.page.html +++ b/src/app/pages/agenda/view-event/view-event.page.html @@ -15,8 +15,9 @@
@@ -83,7 +84,7 @@
Detalhes
-
+
{{ loadedEvent.Body.Text }}
diff --git a/src/app/pages/agenda/view-event/view-event.page.scss b/src/app/pages/agenda/view-event/view-event.page.scss index acc6321ca..999227189 100644 --- a/src/app/pages/agenda/view-event/view-event.page.scss +++ b/src/app/pages/agenda/view-event/view-event.page.scss @@ -120,7 +120,7 @@ ion-menu{ .button-mdgpr-Oficial{ width: 91px; --border-radius: 20px; - --background: #ffb703; + --background: var(--label-bg-color); margin-left: 5px; float: left; } @@ -294,8 +294,12 @@ ion-menu{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; } + + .text { + text-transform: initial !important + } \ No newline at end of file diff --git a/src/app/pages/chat/chat.module.ts b/src/app/pages/chat/chat.module.ts index 7c341c85a..4ffcc20c5 100644 --- a/src/app/pages/chat/chat.module.ts +++ b/src/app/pages/chat/chat.module.ts @@ -7,16 +7,8 @@ import { IonicModule } from '@ionic/angular'; import { ChatPageRoutingModule } from './chat-routing.module'; import { ChatPage } from './chat.page'; -import { SharedModule } from 'src/app/shared/shared.module'; import { RouterModule } from '@angular/router'; -import { GroupMessagesPage } from 'src/app/shared/chat/group-messages/group-messages.page'; -import { MessagesPage } from 'src/app/shared/chat/messages/messages.page'; -import { EmptyChatPage } from 'src/app/shared/chat/empty-chat/empty-chat.page'; -import { ContactsPage } from 'src/app/shared/chat/messages/contacts/contacts.page'; -import { NewGroupPage } from 'src/app/shared/chat/new-group/new-group.page'; -import { GroupContactsPage } from 'src/app/shared/chat/group-messages/group-contacts/group-contacts.page'; import { PipesModule } from 'src/app/pipes/pipes.module'; -import { EditGroupPage } from 'src/app/shared/chat/edit-group/edit-group.page'; import { ContactsPageModule } from 'src/app/shared/chat/messages/contacts/contacts.module'; import { GroupMessagesPageModule } from 'src/app/shared/chat/group-messages/group-messages.module'; diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index c08544c4c..9dd8bda10 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -4,7 +4,7 @@ - + @@ -17,17 +17,24 @@ Chat
+ +
- + + Conversas @@ -43,12 +50,14 @@
+ +
- +
@@ -113,7 +122,7 @@ -
@@ -122,6 +131,8 @@ + +
@@ -134,12 +145,13 @@
{{group.lastMessage.u.name}}: {{group.lastMessage.msg}}
{{group.userThatIsTyping}} está escrever ...
+
audio - {{ group.lastMessage.attachments[0].title }} + {{ group.lastMessage.attachments[0].title }}
@@ -151,7 +163,7 @@
- +
@@ -197,14 +209,22 @@ @@ -221,11 +241,12 @@ *ngIf="showGroupContacts" [style.display]="showGroupContacts ? 'flex' : 'none'" [roomId]="groupRoomId" class=" height-100 flex-column" + (backToChat)="backToChat($event)" > - { if (window.innerWidth > 701) { @@ -131,34 +131,38 @@ export class ChatPage implements OnInit { ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); this.segment = "Contactos"; this.authService.userData$.subscribe((res: any) => { this.loggedUser = res; - }); this.hideRefreshButton(); this.getChatMembers(); - let t = this.showDateDuration(new Date()); this.router.events.forEach((event) => { - if (event instanceof NavigationStart && event.url.startsWith('/home/chat')) { - if (this.dataService.get("newGroup")) { - this.openNewGroupPage(); - } - else{ - this.closeAllDesktopComponents(); - this.showEmptyComponent = true; - } - } - else{ - this.dataService.set("newGroup", false); + + if (event instanceof NavigationEnd && event.url == '/home/chat' || + event instanceof NavigationEnd && event.url == "/home/chat?gbCreateGroup=true") { + this.checkCreateGroup(); } + }); + + } + + checkCreateGroup() { + if (this.dataService.get("newGroup")) { + this.openNewGroupPage(); + } + else { + this.closeAllDesktopComponents(); + this.showEmptyComponent = true; + } + } numSequence(n: number): Array { @@ -167,7 +171,6 @@ export class ChatPage implements OnInit { ngOnDestroy() { this.setStatus('offline'); - this.dataService.set("newGroup", false); } @@ -229,6 +232,10 @@ export class ChatPage implements OnInit { } } openMessagesPage(rid) { + + // this.chatService.refreshtoken(); + this.roomId = rid; + if (window.innerWidth < 701) { this.openMessagesModal(rid); } @@ -236,7 +243,6 @@ export class ChatPage implements OnInit { this.idSelected = rid; this.closeAllDesktopComponents(); this.showEmptyComponent = false; - this.roomId = rid; this.showMessages = true; } } @@ -275,6 +281,9 @@ export class ChatPage implements OnInit { } openGroupMessagesPage(rid) { + // this.chatService.refreshtoken(); + + this.roomId = rid; if (window.innerWidth < 701) { this.openGroupMessagesModal(rid); } @@ -282,7 +291,7 @@ export class ChatPage implements OnInit { this.idSelected = rid; this.closeAllDesktopComponents(); this.showEmptyComponent = false; - this.roomId = rid; + this.showGroupMessages = true; } @@ -339,8 +348,29 @@ export class ChatPage implements OnInit { this.idSelected = ""; } + async closeNewEventComponentAndOpenChat({roomId}) { + this.closeAllDesktopComponents(); + + console.log(roomId) + + this.ChatSystemService._group.forEach((room)=>{ + if(room.id == roomId) { + + + this.openGroupMessagesPage(roomId) + } + }) + + this.ChatSystemService._dm.forEach((room)=>{ + if(room.id == roomId) { + this.openMessagesPage(roomId) + } + }) + + } + onSegmentChange() { - this.wsChatMethodsService.getAllRooms(); + this.ChatSystemService.getAllRooms(); } doRefresh(event) { @@ -559,6 +589,11 @@ export class ChatPage implements OnInit { } + + roomDataFileType(roomData) { + return roomData?.lastMessage?.file?.type || null + } + async transformGroups(data) { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { let groupsArray = []; @@ -599,6 +634,12 @@ export class ChatPage implements OnInit { } + + async emptyTextDescriptionOpen() { + this.closeAllDesktopComponents() + this.showEmptyComponent = true + } + async getGroups(event?) { this.result = this.chatService.getAllPrivateGroups().subscribe(async (res: any) => { // @@ -694,9 +735,35 @@ export class ChatPage implements OnInit { modal.onDidDismiss(); } - async openGroupMessagesModal(roomId: any) { + backToChat({roomId}) { + + const room = this.ChatSystemService.getRoomById(roomId); + + if(room.isGroup) { + this.segment = "Grupos" + this.openGroupMessagesPage(room.id); + } else { + this.segment = "Contactos" + this.openMessagesPage(room.id); + } + } + + async openChatDebuggingPageModal(roomId?: any) { + + const modal = await this.modalController.create({ + component: ChatDebuggingPage, + cssClass: 'modal modal-desktop isMessagesChatOpened', + componentProps: { + // roomId: roomId, + }, + }); + await modal.present(); + modal.onDidDismiss(); + } + + async openGroupMessagesModal(roomId: any) { const modal = await this.modalController.create({ component: GroupMessagesPage, diff --git a/src/app/pages/chat/edit-group/edit-group.page.html b/src/app/pages/chat/edit-group/edit-group.page.html index 70817d9f6..3662f1dde 100644 --- a/src/app/pages/chat/edit-group/edit-group.page.html +++ b/src/app/pages/chat/edit-group/edit-group.page.html @@ -6,6 +6,7 @@
diff --git a/src/app/pages/chat/edit-group/edit-group.page.ts b/src/app/pages/chat/edit-group/edit-group.page.ts index 206348eff..2fa31ecc3 100644 --- a/src/app/pages/chat/edit-group/edit-group.page.ts +++ b/src/app/pages/chat/edit-group/edit-group.page.ts @@ -29,7 +29,7 @@ export class EditGroupPage implements OnInit { } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); this.getRoomInfo(); } @@ -37,7 +37,12 @@ export class EditGroupPage implements OnInit { this.chatService.getRoomInfo(this.roomId).subscribe(room=>{ this.room = room['room']; - this.groupName = this.room.name.split('-').join(' '); + try { + this.groupName = this.room.name.split('-').join(' '); + } catch(error) { + this.groupName = this.room.name; + } + }); } diff --git a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html index 00bbea785..352f84d7b 100644 --- a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html +++ b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.html @@ -5,6 +5,7 @@
diff --git a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts index 405ce8086..b6a3d1ded 100644 --- a/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts +++ b/src/app/pages/chat/group-messages/group-contacts/group-contacts.page.ts @@ -7,7 +7,7 @@ import { ChatService } from 'src/app/services/chat.service'; import { GroupMessagesPage } from '../group-messages.page'; import { ThemeService } from 'src/app/services/theme.service' import { SessionStore } from 'src/app/store/session.service'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; @Component({ selector: 'app-group-contacts', @@ -16,7 +16,6 @@ import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.serv }) export class GroupContactsPage implements OnInit { showLoader: boolean; - loggedUser: any; users = []; contact: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; @@ -41,10 +40,9 @@ export class GroupContactsPage implements OnInit { private authService: AuthService, private navParams: NavParams, public ThemeService: ThemeService, - public wsChatMethodsService: WsChatMethodsService, + public ChatSystemService: ChatSystemService, ) { - this.loggedUser = authService.ValidatedUserChat['data']; this.textSearch=""; this.dm=null; @@ -56,7 +54,7 @@ export class GroupContactsPage implements OnInit { } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); this.loadUsers(); this.getMembers(); @@ -93,14 +91,12 @@ export class GroupContactsPage implements OnInit { if(this.room.t == "p"){ this.chatService.getGroupMembers(this.room._id).subscribe(res=>{ this.members = res['members']; - this.wsChatMethodsService.getAllRooms() this.loadUsers(); }); } else if(this.room.t == "c"){ this.chatService.getChannelMembers(this.room._id).subscribe(res=>{ this.members = res['members']; - this.wsChatMethodsService.getAllRooms() this.loadUsers(); }); } diff --git a/src/app/pages/chat/group-messages/group-messages.module.ts b/src/app/pages/chat/group-messages/group-messages.module.ts index 910c7e4e4..e101f8bb2 100644 --- a/src/app/pages/chat/group-messages/group-messages.module.ts +++ b/src/app/pages/chat/group-messages/group-messages.module.ts @@ -13,8 +13,6 @@ import { ChatPopoverPageModule } from 'src/app/shared/popover/chat-popover/chat- import { BtnModalDismissPageModule } from 'src/app/shared/btn-modal-dismiss/btn-modal-dismiss.module'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; -import { ImageCropperModule } from 'ngx-image-cropper'; -import { AngularCropperjsModule } from 'angular-cropperjs'; import { LettersAvatarModule } from "ngx-letters-avatar"; import { PipesModule } from 'src/app/pipes/pipes.module'; diff --git a/src/app/pages/chat/group-messages/group-messages.page.html b/src/app/pages/chat/group-messages/group-messages.page.html index aad78431d..fdfdc6f16 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.html +++ b/src/app/pages/chat/group-messages/group-messages.page.html @@ -51,7 +51,7 @@ Esta conversa passou a grupo
A conversa original mantêm-se como chat individual
-
+
{{msg.u.name ?? ""}} @@ -90,8 +90,12 @@ {{"Imagem"}} - - + + + + + +
image @@ -108,10 +112,11 @@
- + + {{file.title}} - - + +
@@ -130,8 +135,12 @@ {{"Mensagem de voz"}} - - + + + + + +
@@ -159,7 +168,7 @@
{{msg.u.name ?? ""}} criou esta reunião
-
+
De {{showDateDuration(msg.file.start_date)}} a {{showDateDuration(msg.file.end_date)}}
{{msg.file.venue}}
@@ -196,15 +205,6 @@
{{last ? scrollToBottom() : ''}}
-
@@ -217,13 +217,13 @@ -
+
- {{ wsChatMethodsService.getGroupRoom(roomId).userThatIsTyping }} está a escrever... + {{ ChatSystemService.getGroupRoom(roomId).userThatIsTyping }} está a escrever...
@@ -243,7 +243,7 @@
- +
- - - diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts index 980185f06..73c84fce4 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -1,7 +1,6 @@ import { Component, ElementRef, OnInit, ViewChild, AfterViewInit, OnDestroy, ChangeDetectorRef, } from '@angular/core'; import { IonSlides, ModalController, NavParams, PopoverController, Platform } from '@ionic/angular'; import { AlertService } from 'src/app/services/alert.service'; -import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { ChatOptionsPopoverPage } from 'src/app/shared/popover/chat-options-popover/chat-options-popover.page'; import { ChatPopoverPage } from 'src/app/shared/popover/chat-popover/chat-popover.page'; @@ -18,7 +17,7 @@ import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.pag import { ThemeService } from 'src/app/services/theme.service' import { ViewEventPage } from 'src/app/modals/view-event/view-event.page'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { FileType } from 'src/app/models/fileType'; import { Storage } from '@ionic/storage'; @@ -90,7 +89,6 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { public popoverController: PopoverController, private chatService: ChatService, private navParams: NavParams, - private authService: AuthService, private alertService: AlertService, private route: Router, private timeService: TimeService, @@ -100,14 +98,14 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { private changeDetectorRef: ChangeDetectorRef, private sqlservice: SqliteService, private platform: Platform, - public wsChatMethodsService: WsChatMethodsService, + public ChatSystemService: ChatSystemService, private storage: Storage, private CameraService: CameraService, private sanitiser: DomSanitizer, private file: File, private fileOpener: FileOpener, ) { - this.loggedUserChat = authService.ValidatedUserChat['data']; + this.loggedUserChat = SessionStore.user.ChatData['data']; this.isGroupCreated = true; this.roomId = this.navParams.get('roomId'); window.onresize = (event) => { @@ -116,10 +114,10 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { } }; - this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory({}); - this.wsChatMethodsService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked; - this.wsChatMethodsService.openRoom(this.roomId) - this.groupNameFormart = this.wsChatMethodsService.getGroupRoom(this.roomId).name.split('-').join(' ') + this.ChatSystemService.getGroupRoom(this.roomId).loadHistory({}); + this.ChatSystemService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked; + this.ChatSystemService.openRoom(this.roomId) + this.groupNameFormart = this.ChatSystemService.getGroupRoom(this.roomId).name.split('-').join(' ') setTimeout(() => { this.scrollToBottomClicked() @@ -136,7 +134,6 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { } ngOnInit() { - this.chatService.refreshtoken(); this.loggedUser = this.loggedUserChat; this.getRoomInfo(); @@ -146,9 +143,6 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { this.getChatMembers(); this.getRoomMessageDB(this.roomId); - this.wsChatMethodsService.getUserOfRoom(this.roomId).then((value) => { - - }) } @@ -163,14 +157,17 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { } deleteMessage(msgId: string) { - const room = this.wsChatMethodsService.getGroupRoom(this.roomId) + const room = this.ChatSystemService.getGroupRoom(this.roomId) this.alertService.confirmDeleteMessage(msgId, room); } ngAfterViewInit() { this.scrollChangeCallback = () => this.onContentScrolled(event); window.addEventListener('scroll', this.scrollChangeCallback, true); - this.roomCountDownDate = this.timeService.countDownDate(this.room.customFields.countDownDate, this.room._id); + + if(this.room?.customFields?.countDownDate) { + this.roomCountDownDate = this.timeService.countDownDate(this.room.customFields.countDownDate, this.room._id); + } } handlePress(id?: string) { @@ -325,7 +322,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { this.loadFiles(); } - async goToEvent(eventId: any) { + async goToEvent(event: any) { let classs; if (window.innerWidth < 701) { classs = 'modal modal-desktop' @@ -336,7 +333,8 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { const modal = await this.modalController.create({ component: ViewEventPage, componentProps: { - eventId: eventId, + eventId: event.id, + CalendarId: event.calendarId }, cssClass: classs, }); @@ -376,12 +374,17 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { // this.getGroupContacts(this.room); // this.showLoader = false; // }); - this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory({}); + this.ChatSystemService.getGroupRoom(this.roomId).loadHistory({}); let room = await this.chatService.getRoomInfo(this.roomId).toPromise(); // console.log('ROOM',room) this.room = room['room']; if (this.room.name) { - this.roomName = this.room.name.split('-').join(' '); + try { + this.roomName = this.room.name.split('-').join(' '); + } catch (error) { + this.roomName = this.room.name; + } + } @@ -421,23 +424,25 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { } getGroupContacts(room: any) { - this.showLoader = true; - //If group is private call getGroupMembers - if (this.room.t === 'p') { - this.chatService.getGroupMembers(this.roomId).subscribe(res => { + // this.showLoader = true; + // //If group is private call getGroupMembers + // if (this.room.t === 'p') { + // this.chatService.getGroupMembers(this.roomId).subscribe(res => { - this.members = res['members']; - this.showLoader = false; - }); - } - //Otherwise call getChannelMembers for públic groups - else { - this.chatService.getChannelMembers(this.roomId).subscribe(res => { + // this.members = res['members']; + // this.showLoader = false; + // }); + // } + // //Otherwise call getChannelMembers for públic groups + // else { + // this.chatService.getChannelMembers(this.roomId).subscribe(res => { - this.members = res['members']; - this.showLoader = false; - }); - } + // this.members = res['members']; + // this.showLoader = false; + // }); + // } + + this.members = this.ChatSystemService.getGroupRoom(this.roomId).members } @@ -457,7 +462,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { } sendMessage() { - this.wsChatMethodsService.getGroupRoom(this.roomId).send({}) + this.ChatSystemService.getGroupRoom(this.roomId).send({}) } base64toBlob(base64Data, contentType) { @@ -502,7 +507,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": "application/audio", "msDuration": audioFile.value.msDuration, @@ -535,7 +540,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { modal.onDidDismiss().then(res => { if (res.data == 'leave') { - //this.wsChatMethodsService.subscribeToRoomUpdate(this.roomId, this.room); + //this.ChatSystemService.subscribeToRoomUpdate(this.roomId, this.room); } else if (res.data == 'cancel') { @@ -651,7 +656,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": "application/img", "guid": '' @@ -690,7 +695,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { if (data.selected) { - this.wsChatMethodsService.getGroupRoom(this.roomId).send({ + this.ChatSystemService.getGroupRoom(this.roomId).send({ file: { "name": res.data.selected.Assunto, "type": "application/webtrix", @@ -735,7 +740,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { formData.append('blobFile', blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": file.type, "guid": '', @@ -1106,6 +1111,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { if (this.platform.is('desktop') || this.platform.is('mobileweb')) { if (msg?.file?.type == "application/img") { + const modal = await this.modalController.create({ component: ViewMediaPage, cssClass: 'modal modal-desktop', @@ -1118,6 +1124,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { }); modal.present(); } else { + this.downloadFileFromBrowser("file", str) this.downloadFileFromBrowser(msg.attachments[0].name, str) } diff --git a/src/app/pages/chat/messages/contacts/contacts.page.html b/src/app/pages/chat/messages/contacts/contacts.page.html index 3ac1d542e..4158db867 100644 --- a/src/app/pages/chat/messages/contacts/contacts.page.html +++ b/src/app/pages/chat/messages/contacts/contacts.page.html @@ -5,10 +5,12 @@
+ Nova Conversa
@@ -29,7 +31,7 @@
- +
{{header}} diff --git a/src/app/pages/chat/messages/contacts/contacts.page.ts b/src/app/pages/chat/messages/contacts/contacts.page.ts index 81c7a3d71..55f7b5b16 100644 --- a/src/app/pages/chat/messages/contacts/contacts.page.ts +++ b/src/app/pages/chat/messages/contacts/contacts.page.ts @@ -5,7 +5,7 @@ import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { MessagesPage } from '../messages.page'; import { ThemeService } from 'src/app/services/theme.service' -import { WsChatMethodsService} from 'src/app/services/chat/ws-chat-methods.service' +import { ChatSystemService} from 'src/app/services/chat/chat-system.service' import { SessionStore } from 'src/app/store/session.service'; @Component({ @@ -18,8 +18,6 @@ export class ContactsPage implements OnInit { loggedUser: any; users = []; - headers: HttpHeaders; - options:any; contacts:any; textSearch:string; room:any; @@ -32,10 +30,10 @@ export class ContactsPage implements OnInit { private chatService: ChatService, private authService: AuthService, public ThemeService: ThemeService, - public WsChatMethodsService: WsChatMethodsService, + public ChatSystemService: ChatSystemService, ) { - this.loggedUser = authService.ValidatedUserChat['data']; + this.loggedUser = SessionStore.user.ChatData['data']; this.textSearch=""; this.dm=null; @@ -43,7 +41,7 @@ export class ContactsPage implements OnInit { } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); this.loadUsers(); } @@ -52,10 +50,8 @@ export class ContactsPage implements OnInit { } loadUsers(){ - this.options = { - headers: this.headers, - }; - this.chatService.getAllUsers().subscribe((res:any)=>{ + + this.chatService.getAllUsers().subscribe((res:any) => { this.contacts = res.users.filter(data => data.username != this.sessionStore.user.UserName); this.users = this.contacts.sort((a,b) => { @@ -68,6 +64,8 @@ export class ContactsPage implements OnInit { return 0; }); this.showLoader = false; + }, (error) =>{ + // this.chatService.refreshtoken(); }); } @@ -89,9 +87,7 @@ export class ContactsPage implements OnInit { } close() { - this.modalController.dismiss({ - roomId: this.room._id - }); + this.modalController.dismiss({}); } clicked() {} @@ -104,7 +100,7 @@ export class ContactsPage implements OnInit { this.room = res['room']; - await this.WsChatMethodsService.getAllRooms(); + await this.ChatSystemService.getAllRooms(); this.getDirectMessage(this.room._id); }); } diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html index 210ea05b7..2658cbf45 100644 --- a/src/app/pages/chat/messages/messages.page.html +++ b/src/app/pages/chat/messages/messages.page.html @@ -10,12 +10,12 @@
- {{wsChatMethodsService.getDmRoom(roomId).name}} + {{ChatSystemService.getDmRoom(roomId).name}}
- +
@@ -45,7 +45,7 @@
@@ -54,7 +54,6 @@ {{msg.duration}}
-
{{msg.msg}} {{msg.msg}} @@ -67,7 +66,6 @@
- {{last ? scrollToBottom() : ''}}
@@ -87,8 +85,12 @@ {{"Imagem"}} - - + + + + + +
image @@ -107,10 +109,11 @@
- + + {{file.title}} - - + +
@@ -135,8 +138,12 @@ {{"Mensagem de voz"}} - - + + + + + +
@@ -167,7 +174,7 @@
{{msg.u.name}} criou esta reunião
-
@@ -185,7 +192,7 @@
{{msg.u.name}} criou esta reunião
-
@@ -217,8 +224,8 @@ -
- + está a escrever ...
@@ -244,8 +251,8 @@
+ [(ngModel)]="ChatSystemService.getDmRoom(roomId).message" + (ionChange)="ChatSystemService.getDmRoom(roomId).sendTyping()">
- - -
diff --git a/src/app/pages/chat/new-group/contacts/contacts.page.ts b/src/app/pages/chat/new-group/contacts/contacts.page.ts index 131e4cc76..482aca832 100644 --- a/src/app/pages/chat/new-group/contacts/contacts.page.ts +++ b/src/app/pages/chat/new-group/contacts/contacts.page.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpHeaders } from '@angular/common/http'; import { Component, OnInit } from '@angular/core'; import { ModalController } from '@ionic/angular'; import { GroupMessagesPage } from '../../group-messages/group-messages.page'; @@ -53,18 +53,9 @@ export class ContactsPage implements OnInit { constructor( private modalController: ModalController, - private http: HttpClient, public ThemeService: ThemeService ) - { - this.headers = new HttpHeaders(); - this.headers = this.headers.set('Access-Control-Allow-Origin' , '*'); - this.headers = this.headers.set('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT'); - this.headers = this.headers.set('Accept','application/json'); - this.headers = this.headers.set('content-type','application/json'); - - - } + { } ngOnInit() { this.loadUsers(); @@ -72,23 +63,7 @@ export class ContactsPage implements OnInit { } loadUsers(){ - this.options = { - headers: this.headers, - }; - /* this.http.get('https://randomuser.me/api/?results=100', this.options) - .subscribe(res => { - this.users = res['results'].sort((a,b) => { - if(a.name.first < b.name.first){ - return -1; - } - if(a.name.first > b.name.first){ - return 1; - } - return 0; - }); - - - }); */ + this.users = this.contacts.sort((a,b) => { if(a.first < b.first){ return -1; @@ -101,17 +76,7 @@ export class ContactsPage implements OnInit { } separateLetter(record, recordIndex, records){ - /* if(recordIndex == 0){ - return record.name.first[0]; - } - let first_prev = records[recordIndex - 1].name.first[0]; - let first_current = record.name.first[0]; - - if(first_prev != first_current){ - return first_current; - } - return null; */ if(recordIndex == 0){ return record.first[0]; } diff --git a/src/app/pages/chat/new-group/new-group.page.html b/src/app/pages/chat/new-group/new-group.page.html index b6b7a0690..9cf9932ed 100644 --- a/src/app/pages/chat/new-group/new-group.page.html +++ b/src/app/pages/chat/new-group/new-group.page.html @@ -5,6 +5,7 @@
diff --git a/src/app/pages/chat/new-group/new-group.page.ts b/src/app/pages/chat/new-group/new-group.page.ts index 7b25930e1..c59c74d3c 100644 --- a/src/app/pages/chat/new-group/new-group.page.ts +++ b/src/app/pages/chat/new-group/new-group.page.ts @@ -5,7 +5,7 @@ import { GroupContactsPage } from '../group-messages/group-contacts/group-contac import { ThemeService } from 'src/app/services/theme.service'; import { ChatService } from 'src/app/services/chat.service'; import { ProcessesService } from 'src/app/services/processes.service'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { AuthService } from 'src/app/services/auth.service'; import { SessionStore } from 'src/app/store/session.service'; @@ -31,19 +31,16 @@ export class NewGroupPage implements OnInit { private modalController: ModalController, private navParams: NavParams, public ThemeService: ThemeService, - private chatService: ChatService, - private processesService: ProcessesService, - public wsChatMethodsService: WsChatMethodsService, - private authService: AuthService, + public ChatSystemService: ChatSystemService, ) { - this.loggedUserChat = authService.ValidatedUserChat['data']; + this.loggedUserChat = SessionStore.user.ChatData['data']; this.isGroupCreated = false; this.groupName = this.navParams.get('name'); this.documents = this.navParams.get('documents'); } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); // console.log(this.documents) } @@ -75,19 +72,20 @@ export class NewGroupPage implements OnInit { let customFields = { "countDownDate": this.thedate } - res = await this.wsChatMethodsService.createPrivateRoom(name, SessionStore.user.UserName, customFields); + res = await this.ChatSystemService.createPrivateRoom(name, SessionStore.user.UserName, customFields); } else{ - res = await this.wsChatMethodsService.createPrivateRoom(name, SessionStore.user.UserName, customFields); + res = await this.ChatSystemService.createPrivateRoom(name, SessionStore.user.UserName, customFields); } this.isGroupCreated = true; this.addContacts(res.result); + this.ChatSystemService.getAllRooms(); setTimeout(() => { - this.wsChatMethodsService.subscribeToRoomUpdate(res.result.rid, res.result); + this.ChatSystemService.subscribeToRoomUpdate(res.result.rid, res.result); }, 10) } diff --git a/src/app/pages/events/attendees/attendees.page.html b/src/app/pages/events/attendees/attendees.page.html index c6937e8f8..26156426e 100644 --- a/src/app/pages/events/attendees/attendees.page.html +++ b/src/app/pages/events/attendees/attendees.page.html @@ -17,6 +17,7 @@ +
@@ -26,6 +27,7 @@
+
@@ -41,6 +43,7 @@
+

{{ attendee.Name }}

@@ -61,6 +64,7 @@ +
diff --git a/src/app/pages/events/events.page.html b/src/app/pages/events/events.page.html index 4c6366464..4a398e0d2 100644 --- a/src/app/pages/events/events.page.html +++ b/src/app/pages/events/events.page.html @@ -28,7 +28,7 @@
-
+
@@ -50,10 +50,10 @@ > @@ -84,19 +84,11 @@ - +
-
+
@@ -118,11 +110,12 @@ > +
diff --git a/src/app/pages/events/events.page.ts b/src/app/pages/events/events.page.ts index 464764d4d..e22c7f711 100644 --- a/src/app/pages/events/events.page.ts +++ b/src/app/pages/events/events.page.ts @@ -1,30 +1,23 @@ import { Component, OnInit, EventEmitter, Output } from '@angular/core'; - -import { Event } from '../../models/event.model'; import { EventsService } from 'src/app/services/events.service'; import { NavigationExtras, Router } from '@angular/router'; import { ActivatedRoute, NavigationEnd } from '@angular/router'; -import { AlertService } from 'src/app/services/alert.service'; -import { AuthService } from 'src/app/services/auth.service'; -import { StorageService } from 'src/app/services/storage.service'; import { ModalController, Platform } from '@ionic/angular'; import { EventDetailPage } from './event-detail/event-detail.page'; import { ProcessesService } from '../../services/processes.service'; -import { DailyWorkTask } from '../../models/dailyworktask.model'; import { LoginUserRespose } from 'src/app/models/user.model'; import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service'; -import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx'; import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe'; import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service'; import { SqliteService } from 'src/app/services/sqlite.service'; -import { NetworkConnectionService } from 'src/app/services/network-connection.service' import { BackgroundService } from 'src/app/services/background.service'; import { momentG } from 'src/plugin/momentG'; import { ThemeService } from 'src/app/services/theme.service' import { Storage } from '@ionic/storage'; -import { PermissionList } from 'src/app/models/permission/permissionList'; import { PermissionService } from 'src/app/services/permission.service'; import { ViewEventPage } from 'src/app/modals/view-event/view-event.page'; +import { ChangeProfileService } from 'src/app/services/change-profile.service'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-events', templateUrl: './events.page.html', @@ -47,15 +40,7 @@ export class EventsPage implements OnInit { public profile: string; currentEvent: any; - eventsList: Event[]; maxSubjectLength = 30; - officialeventsList: Event[]; - personaleventsList: Event[]; - - prEventList: Event[]; - mdEventList: Event[]; - - combinedEvents: Event[]; customText = false; totalEvent = 0; @@ -63,7 +48,6 @@ export class EventsPage implements OnInit { showLoader: boolean; - taskslist: DailyWorkTask[] = []; expedientList: any; hideSearchBtn: boolean = false; @@ -80,30 +64,23 @@ export class EventsPage implements OnInit { loggeduser: LoginUserRespose; - permissionList = new PermissionList(); - constructor( private eventService: EventsService, private router: Router, - private storageService: StorageService, public activatedRoute: ActivatedRoute, - private alertController: AlertService, - private authService: AuthService, private processes: ProcessesService, private modalController: ModalController, - private screenOrientation: ScreenOrientation, public platform: Platform, private sqliteservice: SqliteService, - private networkconnection: NetworkConnectionService, private backgroundservice: BackgroundService, public ThemeService: ThemeService, private storage: Storage, public p: PermissionService, + private changeProfileService: ChangeProfileService, ) { + + this.loggeduser = SessionStore.user; - this.loggeduser = authService.ValidatedUser; - - this.prEventList = null; this.platform.resize.subscribe(async () => { // @@ -118,6 +95,13 @@ export class EventsPage implements OnInit { } } + + this.changeProfileService.registerCallback(() => { + + this.listToPresent = []; + this.listToPresentexpediente = [] + }) + } ngOnInit() { @@ -416,7 +400,7 @@ export class EventsPage implements OnInit { } logout() { - this.authService.ValidatedUser.BasicAuthKey = ""; + SessionStore.user.BasicAuthKey = ""; this.router.navigate(['/home/login']); } @@ -457,7 +441,7 @@ export class EventsPage implements OnInit { // this.addProcessToDb(result); - const ExpedienteTask = result.map(e => this.expedienteTaskPipe.transform(e)) + let ExpedienteTask = result.map(e => this.expedienteTaskPipe.transform(e)) this.listToPresentexpediente = ExpedienteTask; @@ -491,16 +475,8 @@ export class EventsPage implements OnInit { } viewExpedientListPage() { - if (this.loggeduser.Profile == 'MDGPR') { - if (window.innerWidth < 701) { - this.router.navigate(['/home/gabinete-digital/expediente']); - } - else { - let navigationExtras: NavigationExtras = { queryParams: { "expedientes": true, } }; - this.router.navigate(['/home/gabinete-digital'], navigationExtras); - } - } - else if (this.loggeduser.Profile == 'PR') { + + if (this.loggeduser.Profile == 'PR') { if (window.innerWidth < 701) { this.router.navigate(['/home/gabinete-digital/expedientes-pr']); } @@ -508,6 +484,15 @@ export class EventsPage implements OnInit { let navigationExtras: NavigationExtras = { queryParams: { "expedientes-pr": true, } }; this.router.navigate(['/home/gabinete-digital'], navigationExtras); } + } else { + + if (window.innerWidth < 701) { + this.router.navigate(['/home/gabinete-digital/expediente']); + } + else { + let navigationExtras: NavigationExtras = { queryParams: { "expedientes": true, } }; + this.router.navigate(['/home/gabinete-digital'], navigationExtras); + } } } diff --git a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html index d713c4f80..4dae78b20 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html +++ b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.html @@ -8,6 +8,7 @@
+
@@ -16,6 +17,7 @@
+
diff --git a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.scss b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.scss index 53a90b9b7..0ad45013c 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.scss +++ b/src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.scss @@ -101,7 +101,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.scss b/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.scss index f10e7a082..8b1fa1eaf 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.scss +++ b/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.scss @@ -192,7 +192,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts b/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts index dc0cd0c5b..5bbe55c40 100644 --- a/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts +++ b/src/app/pages/gabinete-digital/despachos-pr/despachos-pr.page.ts @@ -65,7 +65,7 @@ export class DespachosPrPage implements OnInit { public ThemeService: ThemeService ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.profile = 'mdgpr'; } @@ -127,7 +127,6 @@ export class DespachosPrPage implements OnInit { if(this.loggeduser.Profile != "PR") { - if(SessionStore.user.Profile != 'Consultant') { despachosPr = await despachos.reverse().filter(data => data.activityInstanceName == "Tarefa de Despacho"); } else { diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html index 5c69099f7..a50f25025 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.html @@ -9,6 +9,7 @@
+
@@ -17,6 +18,7 @@
+
diff --git a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss index ddae3b550..bf2144bc2 100644 --- a/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss +++ b/src/app/pages/gabinete-digital/despachos/despacho/despacho.page.scss @@ -60,7 +60,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/despachos/despachos.page.scss b/src/app/pages/gabinete-digital/despachos/despachos.page.scss index a4421e515..0de25249d 100644 --- a/src/app/pages/gabinete-digital/despachos/despachos.page.scss +++ b/src/app/pages/gabinete-digital/despachos/despachos.page.scss @@ -173,7 +173,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.html b/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.html index 022fd0c0b..773282f43 100644 --- a/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.html +++ b/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.html @@ -9,6 +9,7 @@
+
diff --git a/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.scss b/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.scss index 69e728cfa..47b8d66dd 100644 --- a/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.scss +++ b/src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.scss @@ -120,7 +120,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.scss b/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.scss index 76990574b..e3ae39439 100644 --- a/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.scss +++ b/src/app/pages/gabinete-digital/diplomas-assinar/diplomas-assinar.page.scss @@ -182,7 +182,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar.page.scss b/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar.page.scss index a4421e515..0de25249d 100644 --- a/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar.page.scss +++ b/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar.page.scss @@ -173,7 +173,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.html b/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.html index a1fce51d3..f2db050cc 100644 --- a/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.html +++ b/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.html @@ -11,6 +11,7 @@
+
diff --git a/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.scss b/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.scss index 69e728cfa..47b8d66dd 100644 --- a/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.scss +++ b/src/app/pages/gabinete-digital/diplomas-gerar/diplomas-gerar/diplomas-gerar.page.scss @@ -120,7 +120,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.html b/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.html index 4f6a6ca7c..ed948f68f 100644 --- a/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.html +++ b/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.html @@ -9,6 +9,7 @@
+
@@ -20,6 +21,7 @@ --> +
diff --git a/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.scss b/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.scss index 5a5cbcc77..a51ce3e25 100644 --- a/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.scss +++ b/src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.scss @@ -102,7 +102,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/diplomas/diplomas.page.scss b/src/app/pages/gabinete-digital/diplomas/diplomas.page.scss index 129ce6c1f..121695281 100644 --- a/src/app/pages/gabinete-digital/diplomas/diplomas.page.scss +++ b/src/app/pages/gabinete-digital/diplomas/diplomas.page.scss @@ -172,7 +172,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html index da328786f..5b82fb495 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html +++ b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.html @@ -3,6 +3,7 @@
@@ -12,6 +13,7 @@
+
diff --git a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss index 30a0b66e6..a161e866b 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss +++ b/src/app/pages/gabinete-digital/event-list/approve-event-modal/approve-event-modal.page.scss @@ -49,7 +49,7 @@ ion-menu{ .button-calendar-type{ width: 91px; --border-radius: 12.5px; - --background: #ffb703; + --background: var(--label-bg-color); margin-left: 5px; float: left; } diff --git a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html index 195d17574..a90f16d22 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html +++ b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.html @@ -7,7 +7,6 @@
-
Evento Pendente de Aprovação
@@ -19,6 +18,7 @@
+
@@ -27,11 +27,13 @@
+
diff --git a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.scss b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.scss index 3c1936fde..1b20eb1ce 100644 --- a/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.scss +++ b/src/app/pages/gabinete-digital/event-list/approve-event/approve-event.page.scss @@ -58,7 +58,7 @@ ion-menu{ .event-type-Oficial{ font-family: Roboto; border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right !important; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/event-list/event-list.page.html b/src/app/pages/gabinete-digital/event-list/event-list.page.html index 4d1b2d5c0..851b07e8c 100644 --- a/src/app/pages/gabinete-digital/event-list/event-list.page.html +++ b/src/app/pages/gabinete-digital/event-list/event-list.page.html @@ -7,6 +7,7 @@
@@ -19,7 +20,7 @@ Calendário MDGPR - Presidente da República + Calendário Partilhado diff --git a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html index 30321e816..e782023ab 100644 --- a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html +++ b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.html @@ -279,6 +279,7 @@
+
@@ -301,6 +302,7 @@
+
@@ -322,6 +324,7 @@
+
Anexar Documentos diff --git a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts index c631837b4..80491582d 100644 --- a/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts +++ b/src/app/pages/gabinete-digital/expediente/book-meeting-modal/book-meeting-modal.page.ts @@ -133,7 +133,7 @@ export class BookMeetingModalPage implements OnInit { ) { this.taskParticipants = []; - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.task = this.navParams.get('task'); this.postData = new Event(); diff --git a/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html b/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html index 13a112e83..03a012339 100644 --- a/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html +++ b/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.html @@ -145,6 +145,7 @@
+
@@ -167,6 +168,7 @@
+
@@ -177,6 +179,7 @@
+
Anexar Documentos diff --git a/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.ts b/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.ts index 71f43ab05..bf2445956 100644 --- a/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expedient-task-modal/expedient-task-modal.page.ts @@ -22,6 +22,7 @@ import { task } from 'src/app/models/ExpedientTaskModalPage'; import { DespachoService } from 'src/app/Rules/despacho.service'; import { SearchDocumentPipe } from 'src/app/pipes/search-document.pipe'; import { ThemeService } from 'src/app/services/theme.service' +import { SessionStore } from 'src/app/store/session.service'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { @@ -111,7 +112,7 @@ export class ExpedientTaskModalPage implements OnInit { public ThemeService: ThemeService ) { - this.loggeduser = userAuth.ValidatedUser; + this.loggeduser = SessionStore.user; this.task = this.navParams.get('task'); diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html index 3989b4955..25f620413 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.html @@ -13,8 +13,8 @@
+ -
{{ task.Folio}} @@ -23,7 +23,7 @@
@@ -128,6 +128,15 @@
+ + +
+ +

+

+
+
@@ -140,29 +149,20 @@ -
- -

-

-
+
+ +

+

+
-
- -

-

-
-
- - -
- -

-

-
+
+ +

+

+
diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.scss b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.scss index 8855cc71b..43e56c179 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.scss +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.scss @@ -100,7 +100,7 @@ ion-button{ .label{ border-radius: 20px; - //background: #ffb703; + //background: var(--label-bg-color); background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; diff --git a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts index 00ad27dc3..7793b028d 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts +++ b/src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts @@ -3,7 +3,7 @@ import { ProcessesService } from 'src/app/services/processes.service'; import { AttachmentsService } from 'src/app/services/attachments.service'; import { EventsService } from 'src/app/services/events.service'; import { InAppBrowser } from '@ionic-native/in-app-browser/ngx'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, NavigationExtras, Router } from '@angular/router'; import { Event } from '../../../../models/event.model'; import { ModalController, PopoverController } from '@ionic/angular'; import { ExpedientTaskModalPage } from '../expedient-task-modal/expedient-task-modal.page'; @@ -34,6 +34,7 @@ import { RouteService } from 'src/app/services/route.service'; import { Storage } from '@ionic/storage'; import { LoginUserRespose } from 'src/app/models/user.model'; import { AuthService } from 'src/app/services/auth.service'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-expediente-detail', @@ -88,7 +89,7 @@ export class ExpedienteDetailPage implements OnInit { private storage: Storage, private userAuth: AuthService, ) { - this.loggeduser = userAuth.ValidatedUser + this.loggeduser = SessionStore.user this.activatedRoute.paramMap.subscribe(params => { if (params["params"].SerialNumber) { this.serialNumber = params["params"].SerialNumber; @@ -656,17 +657,17 @@ export class ExpedienteDetailPage implements OnInit { openNewGroupPage() { if (window.innerWidth < 701) { - this.router.navigate(['/home/chat']); this.newGroup(); } else { - // console.log(this.task) - // console.log(this.fulltask) this.dataService.set("newGroup", true); this.dataService.set("task", this.task); this.dataService.set("newGroupName", this.task.Folio); this.dataService.set("documents", this.fulltask.Documents); - this.router.navigate(['/home/chat']); + this.dataService.set("link", window.location.pathname); + setTimeout(()=> { + this.router.navigate(['/home/chat']); + }, 100) } } diff --git a/src/app/pages/gabinete-digital/expediente/expediente.page.html b/src/app/pages/gabinete-digital/expediente/expediente.page.html index 7221de123..f989f787d 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente.page.html +++ b/src/app/pages/gabinete-digital/expediente/expediente.page.html @@ -8,6 +8,7 @@
diff --git a/src/app/pages/gabinete-digital/expediente/expediente.page.scss b/src/app/pages/gabinete-digital/expediente/expediente.page.scss index f5085216c..6a8675ebd 100644 --- a/src/app/pages/gabinete-digital/expediente/expediente.page.scss +++ b/src/app/pages/gabinete-digital/expediente/expediente.page.scss @@ -167,13 +167,17 @@ ion-item{ float: left; margin: 0 !important; - .label{ + .label { border-radius: 15px; - background: #ffb703; - /* font-size: 12px; */ - float: right; + background: var(--label-bg-color); + /*font-size: 12px; + */float: right; padding: 2.5px 13.5px 2.5px 13.5px; color: #fff; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + -ms-border-radius: 15px; + -o-border-radius: 15px; } } .exp-date{ diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html index 6f023e836..1d2c86be3 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html +++ b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.html @@ -13,6 +13,7 @@
+
diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.scss b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.scss index 763ad1941..46df34636 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.scss +++ b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.scss @@ -100,7 +100,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.ts b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.ts index e8307c131..00f1bb75b 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.ts +++ b/src/app/pages/gabinete-digital/expedientes-pr/expediente-pr/expediente-pr.page.ts @@ -21,6 +21,7 @@ import { AttachmentList } from 'src/app/models/Excludetask'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; import { ThemeService } from 'src/app/services/theme.service' import { RouteService } from 'src/app/services/route.service'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-expediente-pr', @@ -62,7 +63,7 @@ export class ExpedientePrPage implements OnInit { public ThemeService: ThemeService ) { - this.loggeduser = userAuth.ValidatedUser; + this.loggeduser = SessionStore.user; this.activatedRoute.paramMap.subscribe(params => { if(params["params"].SerialNumber) { this.serialnumber = params["params"].SerialNumber; diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.scss b/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.scss index e8032a26c..2f5b5b8d4 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.scss +++ b/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.scss @@ -171,7 +171,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.ts b/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.ts index f221964e3..0d873db35 100644 --- a/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.ts +++ b/src/app/pages/gabinete-digital/expedientes-pr/expedientes-pr.page.ts @@ -12,6 +12,7 @@ import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe'; import { ThemeService } from 'src/app/services/theme.service' import { SortService } from 'src/app/services/functions/sort.service'; import { RouteService } from 'src/app/services/route.service'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-expedientes-pr', @@ -43,7 +44,7 @@ export class ExpedientesPrPage implements OnInit { public ThemeService: ThemeService, private sortService: SortService, ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; } diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.html b/src/app/pages/gabinete-digital/gabinete-digital.page.html index 16823370d..245be7d27 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.html +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.html @@ -56,7 +56,7 @@
- +
@@ -165,7 +165,8 @@ - + +

Expediente

{{expedientegbstore.count}} Documentos

@@ -176,7 +177,8 @@ - + +

Pendentes

Meus Pendentes

@@ -188,7 +190,8 @@ - + +

Despachos

{{despachoStore.count}} Documentos

@@ -199,7 +202,8 @@ - + +

Pedidos de Parecer

Pedidos de Parecer solicitados por mim

@@ -208,49 +212,24 @@
+ - + +

Pedidos de Deferimento

{{pedidosstore.countdeferimento}} Documentos

- -
-
-
- - - - -
-
-

Despacho do Presidente da República

-

Despachos criados por mim

-

{{ despachoprstore.count }} Documentos

-
-
-
- -
-
- - - - -
-

Diplomas por Validar

-

Diplomas por Assinar

-

{{ deplomasStore.deplomasReviewCount }} Documentos

-
- + +

Diplomas por elaborar

@@ -258,24 +237,13 @@
-
-
- - - - -
-

Diplomas assinados PR

-

Diplomas

-

{{ deplomasStore.countDiplomasAssinadoListCount }} Documentos

-
-
- + +

Diplomas para Assinar

{{ deplomasStore.diplomasParaAssinartCount }} Documentos

diff --git a/src/app/pages/gabinete-digital/gabinete-digital.page.ts b/src/app/pages/gabinete-digital/gabinete-digital.page.ts index 463c479d2..30ef0eff0 100644 --- a/src/app/pages/gabinete-digital/gabinete-digital.page.ts +++ b/src/app/pages/gabinete-digital/gabinete-digital.page.ts @@ -149,7 +149,7 @@ export class GabineteDigitalPage implements OnInit { public p: PermissionService ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; window.onresize = (event) => { // if not mobile remove all component if (window.innerWidth < 701) { diff --git a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html index 5d2d76ee3..c183c94b2 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html +++ b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.html @@ -9,6 +9,7 @@
+
diff --git a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.scss b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.scss index 3be2de130..4241aa5ec 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.scss +++ b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.scss @@ -66,7 +66,7 @@ ion-button{ .label{ border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right; padding: 5px 13.5px 5px 13.5px; color: #fff; diff --git a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts index dca46cf56..b3b428873 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts +++ b/src/app/pages/gabinete-digital/pedidos/pedido/pedido.page.ts @@ -28,6 +28,7 @@ import { ThemeService } from 'src/app/services/theme.service' import { DataService } from 'src/app/services/data.service'; import { NewGroupPage } from 'src/app/pages/chat/new-group/new-group.page'; import { RouteService } from 'src/app/services/route.service'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-pedido', @@ -68,7 +69,7 @@ export class PedidoPage implements OnInit { public ThemeService: ThemeService, private dataService: DataService, ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.activatedRoute.paramMap.subscribe(params => { // diff --git a/src/app/pages/gabinete-digital/pedidos/pedidos.page.scss b/src/app/pages/gabinete-digital/pedidos/pedidos.page.scss index ed46e7f05..76a3def57 100644 --- a/src/app/pages/gabinete-digital/pedidos/pedidos.page.scss +++ b/src/app/pages/gabinete-digital/pedidos/pedidos.page.scss @@ -170,7 +170,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/pendentes/pendentes.page.scss b/src/app/pages/gabinete-digital/pendentes/pendentes.page.scss index d1de562e8..94990800b 100644 --- a/src/app/pages/gabinete-digital/pendentes/pendentes.page.scss +++ b/src/app/pages/gabinete-digital/pendentes/pendentes.page.scss @@ -172,7 +172,7 @@ ion-item{ .label{ border-radius: 15px; - background: #ffb703; + background: var(--label-bg-color); /* font-size: 12px; */ float: right; padding: 2.5px 13.5px 2.5px 13.5px; diff --git a/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts b/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts index aa0c65633..3a5315aa6 100644 --- a/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts +++ b/src/app/pages/gabinete-digital/pendentes/pendentes.page.ts @@ -15,6 +15,7 @@ import { BackgroundService } from 'src/app/services/background.service'; import { Platform } from '@ionic/angular'; import { SortService } from 'src/app/services/functions/sort.service'; import { Storage } from '@ionic/storage'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ @@ -50,7 +51,7 @@ export class PendentesPage implements OnInit { private sortService: SortService, private storage: Storage ) { - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.profile = 'mdgpr'; } diff --git a/src/app/pages/inactivity/inactivity.page.html b/src/app/pages/inactivity/inactivity.page.html index 976982a56..109241f16 100644 --- a/src/app/pages/inactivity/inactivity.page.html +++ b/src/app/pages/inactivity/inactivity.page.html @@ -9,7 +9,6 @@
diff --git a/src/app/pages/inactivity/inactivity.page.ts b/src/app/pages/inactivity/inactivity.page.ts index ac3dbd8cb..27255c30d 100644 --- a/src/app/pages/inactivity/inactivity.page.ts +++ b/src/app/pages/inactivity/inactivity.page.ts @@ -123,7 +123,7 @@ export class InactivityPage implements OnInit { await this.authService.SetSession(attempt, this.userattempt); if(this.p.userPermission(this.p.permissionList.Chat.access)){ - this.authService.loginChat(); + // this.authService.loginChat(); } this.getToken(); diff --git a/src/app/pages/login/login.page.html b/src/app/pages/login/login.page.html index 3c9ae6af4..0513e99e6 100644 --- a/src/app/pages/login/login.page.html +++ b/src/app/pages/login/login.page.html @@ -1,25 +1,22 @@ -
-
-

Gabinete Digital

-

Tribunal Constitucional

+

Gabinete Digital

Email

@@ -37,12 +34,12 @@
-

Uma iniciativa do Gabinete do Presidente da República

+

-
+ + + - - diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts index 6a576a779..5baee9067 100644 --- a/src/app/pages/login/login.page.ts +++ b/src/app/pages/login/login.page.ts @@ -10,14 +10,14 @@ import { SessionStore } from 'src/app/store/session.service'; import { ClearStoreService } from 'src/app/services/clear-store.service'; import { ChangeProfileService } from 'src/app/services/change-profile.service'; import { ThemeService } from 'src/app/services/theme.service'; -import { StorageService } from 'src/app/services/storage.service'; import { PermissionService } from 'src/app/services/permission.service'; import { PermissionList } from 'src/app/models/permission/permissionList'; import { MessageModel, DeleteMessageModel } from '../../models/beast-orm'; -import { WsChatService } from 'src/app/services/chat/ws-chat.service'; -import { Storage } from '@ionic/storage'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { ChatService } from 'src/app/services/chat.service'; + + @Component({ selector: 'app-login', templateUrl: './login.page.html', @@ -35,7 +35,6 @@ export class LoginPage implements OnInit { loginPreference: string sessionStore = SessionStore; - permissionList = new PermissionList(); showPassword = false; passwordIcon = "eye"; @@ -48,19 +47,14 @@ export class LoginPage implements OnInit { private clearStoreService: ClearStoreService, private changeProfileService: ChangeProfileService, public ThemeService: ThemeService, - private storageservice: StorageService, public p: PermissionService, - private WsChatService: WsChatService, - private storage: Storage, - public WsChatMethodsService: WsChatMethodsService, + private RochetChatConnectorService: RochetChatConnectorService, + public ChatSystemService: ChatSystemService, private ChatService: ChatService ) {} ngOnInit() { - this.storageservice.get('theme').then((theme) =>{ - - this.ThemeService.setTheme(theme) - }) + } togglePassword() { @@ -129,10 +123,10 @@ export class LoginPage implements OnInit { await this.authService.SetSession(attempt, this.userattempt); if(attempt.ChatData) { - await this.authService.loginChat(attempt.ChatData.data); await this.authService.loginToChatWs(); this.ChatService.setheader() + this.ChatSystemService.loadChat(); } @@ -143,9 +137,9 @@ export class LoginPage implements OnInit { } else { - this.WsChatService.logout(); + this.RochetChatConnectorService.logout(); this.clearStoreService.clear(); - this.WsChatMethodsService.clearChat(); + this.ChatSystemService.clearChat(); SessionStore.delete(); window.localStorage.clear(); await MessageModel.deleteAll() @@ -157,9 +151,9 @@ export class LoginPage implements OnInit { if(attempt.ChatData) { - await this.authService.loginChat(attempt.ChatData.data); await this.authService.loginToChatWs(); - this.ChatService.setheader() + this.ChatService.setheader(); + this.ChatSystemService.loadChat(); } this.getToken(); diff --git a/src/app/pages/publications/new-action/new-action.page.html b/src/app/pages/publications/new-action/new-action.page.html index a235279df..b0a6b8150 100644 --- a/src/app/pages/publications/new-action/new-action.page.html +++ b/src/app/pages/publications/new-action/new-action.page.html @@ -105,7 +105,7 @@
-
+
diff --git a/src/app/pages/publications/new-action/new-action.page.ts b/src/app/pages/publications/new-action/new-action.page.ts index 3a2fdca85..a39ad6007 100644 --- a/src/app/pages/publications/new-action/new-action.page.ts +++ b/src/app/pages/publications/new-action/new-action.page.ts @@ -126,6 +126,9 @@ export class NewActionPage implements OnInit { Date: new FormControl(this.dateValid, [ Validators.required ]), + Detail: new FormControl(this.folder.Detail, [ + Validators.required + ]) }) } diff --git a/src/app/pages/publications/publication-detail/publication-detail.page.html b/src/app/pages/publications/publication-detail/publication-detail.page.html index d778e071d..5972a1a12 100644 --- a/src/app/pages/publications/publication-detail/publication-detail.page.html +++ b/src/app/pages/publications/publication-detail/publication-detail.page.html @@ -6,6 +6,7 @@
+
@@ -34,6 +35,7 @@
+
diff --git a/src/app/pages/publications/publications.page.html b/src/app/pages/publications/publications.page.html index 36689ddd7..0136d4e90 100644 --- a/src/app/pages/publications/publications.page.html +++ b/src/app/pages/publications/publications.page.html @@ -22,13 +22,14 @@
- Acções Presidenciais + Acções
@@ -100,6 +103,7 @@ diff --git a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html index 7b06bd70d..2d0baf161 100644 --- a/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html +++ b/src/app/pages/publications/view-publications/publication-detail/publication-detail.page.html @@ -13,6 +13,7 @@
+
@@ -38,6 +39,7 @@
+
diff --git a/src/app/pages/publications/view-publications/view-publications.page.html b/src/app/pages/publications/view-publications/view-publications.page.html index 8ed7372e8..da24e9228 100644 --- a/src/app/pages/publications/view-publications/view-publications.page.html +++ b/src/app/pages/publications/view-publications/view-publications.page.html @@ -8,6 +8,7 @@
+
diff --git a/src/app/pages/search/organic-entity/organic-entity.page.html b/src/app/pages/search/organic-entity/organic-entity.page.html index 370fe9c6a..4dd96ae76 100644 --- a/src/app/pages/search/organic-entity/organic-entity.page.html +++ b/src/app/pages/search/organic-entity/organic-entity.page.html @@ -8,6 +8,7 @@
+
diff --git a/src/app/pages/search/search.page.ts b/src/app/pages/search/search.page.ts index f9a4d7df1..34cd15c99 100644 --- a/src/app/pages/search/search.page.ts +++ b/src/app/pages/search/search.page.ts @@ -158,7 +158,7 @@ export class SearchPage implements OnInit { this.searchSubject = search; } - window['searchTriger'] = () =>{ + window['searchTriger'] = () => { this.basicSearch(); } @@ -170,8 +170,6 @@ export class SearchPage implements OnInit { const container = document.querySelector('.seach-wrapper'); - // container.setAttribute('style',`width: ${window.innerWidth}px`); - const highest= res[0].Hits; const lowest = res[res.length-1].Hits; const range = highest - lowest; @@ -263,6 +261,7 @@ export class SearchPage implements OnInit { this.showLoader = true; + this.search.basicSearch(this.searchSubject, this.searchDocumentDate, this.searchSender ,this.searchOrganicEntiry, this.searchDocTypeId, '0').subscribe(res=>{ @@ -292,7 +291,7 @@ export class SearchPage implements OnInit { console.log(error) }); } - else if ( this.type == "AccoesPresidenciais & ArquivoDespachoElect"){ + else if ( this.type == "AccoesPresidenciais & ArquivoDespachoElect") { this.showLoader = true; @@ -336,7 +335,12 @@ export class SearchPage implements OnInit { this.loadWordCloud(); },error => { this.searchResult = "Registo não encontrado" - console.log(error) + + counter++; + console.log('application 8 failed', error) + if(counter ==2) { + this.showLoader = false; + } }); this.search.searchForDoc(this.searchSubject, this.searchDocumentDate, this.searchSender @@ -369,8 +373,14 @@ export class SearchPage implements OnInit { this.showLoader = false; } },error => { + counter++; + + if(counter ==2) { + this.showLoader = false; + } this.searchResult = "Registo não encontrado" - console.log(error) + + console.log('application 361 failed', error); }); } else { @@ -378,7 +388,6 @@ export class SearchPage implements OnInit { this.search.basicSearch(this.searchSubject, this.searchDocumentDate, this.searchSender ,this.searchOrganicEntiry, this.searchDocTypeId, '8').subscribe(res=>{ - res.Categories.forEach( e => { e['Active'] = false; this.searchCategories.push(e) @@ -408,8 +417,13 @@ export class SearchPage implements OnInit { this.loadWordCloud(); },error => { + console.log('application 8 failed', error) this.searchResult = "Registo não encontrado" - console.log(error) + counter++; + + if(counter ==2){ + this.showLoader = false; + } }); this.search.basicSearch(this.searchSubject, this.searchDocumentDate, this.searchSender @@ -444,7 +458,12 @@ export class SearchPage implements OnInit { this.loadWordCloud(); },error => { this.searchResult = "Registo não encontrado" - console.log(error) + counter++; + + console.log('application 361 faield', error); + if(counter ==2){ + this.showLoader = false; + } }); } } diff --git a/src/app/pages/search/sender/sender.page.html b/src/app/pages/search/sender/sender.page.html index f1b4e6a0e..f8f077441 100644 --- a/src/app/pages/search/sender/sender.page.html +++ b/src/app/pages/search/sender/sender.page.html @@ -4,6 +4,7 @@
+
diff --git a/src/app/services/agenda/list-box.service.ts b/src/app/services/agenda/list-box.service.ts index 99f6f8bd5..e694d91e9 100644 --- a/src/app/services/agenda/list-box.service.ts +++ b/src/app/services/agenda/list-box.service.ts @@ -179,6 +179,7 @@ export class ListBoxService { end: new Date(element.endTime), id: element.id, event: element.event, + profile: profile }); }); diff --git a/src/app/services/alert.service.ts b/src/app/services/alert.service.ts index f8036a981..819ca1c63 100644 --- a/src/app/services/alert.service.ts +++ b/src/app/services/alert.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { AlertController, AnimationController } from '@ionic/angular'; -import { WsChatMethodsService } from './chat/ws-chat-methods.service'; +import { ChatSystemService } from './chat/chat-system.service'; import { ToastService } from './toast.service'; @Injectable({ @@ -12,7 +12,7 @@ export class AlertService { public alertController: AlertController, private animationController: AnimationController, private toastService: ToastService, - public wsChatMethodsService: WsChatMethodsService, + public ChatSystemService: ChatSystemService, ) { } async presentAlert(message:string) { @@ -58,10 +58,10 @@ export class AlertService { handler: () => { //const loader = this.toastService.loading(); - this.wsChatMethodsService.deleteMessage(msgId).then(() => { + this.ChatSystemService.deleteMessage(msgId).then(() => { room.deleteMessage(msgId) }) - //this.wsChatMethodsService.subscribeToRoomUpdate(room._id, room); + //this.ChatSystemService.subscribeToRoomUpdate(room._id, room); //loader.remove(); } } diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 908324f5c..8b8ede159 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -10,9 +10,9 @@ import { AlertController } from '@ionic/angular'; import { SessionStore } from '../store/session.service'; import { AESEncrypt } from '../services/aesencrypt.service'; import { CookieService } from 'ngx-cookie-service'; -import { WsChatService } from 'src/app/services/chat/ws-chat.service'; +import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'; import { Router } from '@angular/router'; -import { NfService } from 'src/app/services/chat/nf.service' +import { NfService } from 'src/app/services/chat/nf.service'; import { MessageService } from 'src/app/services/chat/message.service'; import { ProcessesService } from 'src/app/services/processes.service'; import { AttachmentsService } from 'src/app/services/attachments.service'; @@ -20,7 +20,7 @@ import { RoomService } from './chat/room.service'; import { Storage } from '@ionic/storage'; import { InitialsService } from './functions/initials.service'; import { PermissionService } from './permission.service'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; @Injectable({ providedIn: 'root' }) @@ -28,20 +28,16 @@ export class AuthService { userData$ = new BehaviorSubject(''); userId$ = new BehaviorSubject(''); headers: HttpHeaders; - public ValidatedUser: UserSession; public wsValidatedUserChat:any; - public ValidatedUserChat:any = {} public isWsAuthenticated: boolean = false; opts:any; constructor( private http: HttpClient, - private httpService: HttpService, private storageService:StorageService, public alertController: AlertController, private aesencrypt: AESEncrypt, - private cookieService: CookieService, - private WsChatService: WsChatService, + private RochetChatConnectorService: RochetChatConnectorService, private router: Router, private NfService:NfService, private processesService: ProcessesService, @@ -49,22 +45,16 @@ export class AuthService { private storage: Storage, private initialsService: InitialsService, public p: PermissionService, - public WsChatMethodsService: WsChatMethodsService, ) { + public ChatSystemService: ChatSystemService, ) { this.headers = new HttpHeaders(); if (SessionStore.exist) { - this.ValidatedUser = SessionStore.user if(this.p.userPermission(this.p.permissionList.Chat.access) == true ) { this.loginToChatWs() } } - - if(SessionStore?.user?.ChatData) { - this.ValidatedUserChat = SessionStore.user.ChatData - } - } @@ -97,10 +87,6 @@ export class AuthService { SetSession(response: LoginUserRespose, user:UserForm) { const session: UserSession = Object.assign(SessionStore.user, response) - - - - if (response) { if( session.RoleID == 100000014) { session.Profile = 'PR' @@ -108,39 +94,15 @@ export class AuthService { session.Profile = 'MDGPR' } else if(session.RoleID == 99999872) { session.Profile = 'Consultant' + } else { + session.Profile = 'Unknown' } - else if(session.RoleID == 99999873) { - session.Profile = 'Assistant' - } - else if(session.RoleID == 99999874) { - session.Profile = 'Department boss' - } - else if(session.RoleID == 99999875) { - session.Profile = 'Director' - } - else if(session.RoleID == 99999876) { - session.Profile = 'Deputy Director' - } - else if(session.RoleID == 99999885) { - session.Profile = 'Secretariat' - } - else if(session.RoleID == 99999886) { - session.Profile = 'General secretary' - } else if (session.RoleID == 100000015) { - session.Profile = 'Administrador' - } - session.Password = user.password session.BasicAuthKey = user.BasicAuthKey - - - SessionStore.reset(session) - this.ValidatedUser = SessionStore.user; - // console.log('!!!::!!===', this.ValidatedUser) this.storageService.store(AuthConnstants.USER, response); return true; @@ -149,68 +111,24 @@ export class AuthService { this.initialsService.getInitials(session.FullName); } - //Login to rocketChat server2 - //user: UserForm - async loginChat(responseChat = this.ValidatedUserChat) { - - if(SessionStore?.user?.ChatData) { - this.ValidatedUserChat = SessionStore.user.ChatData - } - - /* const expirationMinutes = 30; - let date = new Date().getTime(); - let expirationDate = new Date(new Date().getTime() + expirationMinutes*60*1000); - - let postData = { - "user": SessionStore.user.UserName, - "password": SessionStore.user.Password, - } - - let responseChat = await this.httpService.post('login', postData).toPromise(); - - if(responseChat) { - - this.ValidatedUserChat = responseChat; - localStorage.setItem('userChat', JSON.stringify(responseChat)); - this.storageService.store(AuthConnstants.AUTH, responseChat); - } - else{ - - this.presentAlert('Network error'); - } - - this.autoLoginChat(expirationDate.getTime() - date); */ - } - - async autoLoginChat(expirationDate:number) { - /* setTimeout(()=>{ - this.loginChat(this.ValidatedUserChat); - }, expirationDate) */ - } - loginToChatWs() { - setTimeout(()=>{ + setTimeout(() => { - this.WsChatService.connect(); - this.WsChatService.login().then((message: any) => { + this.RochetChatConnectorService.connect(); + this.RochetChatConnectorService.login().then((message: any) => { - SessionStore.user.RochetChatUserId = message.result.id SessionStore.save() - // - - - this.WsChatService.setStatus('online') + this.RochetChatConnectorService.setStatus('online') setTimeout(() => { - this.WsChatMethodsService.getAllRooms(); + this.ChatSystemService.getAllRooms(); }, 200); // alert('wsLogin') }).catch((message) => { - // alert('ws login failed') }) @@ -223,6 +141,7 @@ export class AuthService { const formData = message.temporaryData try { + // alert('upload try') let guid: any = await this.AttachmentsService.uploadFile(formData).toPromise() message.file.guid = guid.path @@ -263,8 +182,6 @@ export class AuthService { if (message.file.type == "application/img") { const event: any = await this.AttachmentsService.downloadFile(message.file.guid).toPromise(); - - if (event.type === HttpEventType.DownloadProgress) { //this.downloadProgess = Math.round((100 * event.loaded) / event.total); // @@ -291,25 +208,24 @@ export class AuthService { } autologout(expirationDate:number) { - setTimeout(()=>{ + setTimeout(() => { this.logout(); }, expirationDate) } logout() { - this.ValidatedUser = null; localStorage.removeItem('userChat'); SessionStore.setInativity(false) - SessionStore.setUrlBeforeInactivity(this.router.url) + SessionStore.setUrlBeforeInactivity(this.router.url); setTimeout(() => { this.router.navigateByUrl('/', { replaceUrl: true }); }, 100) } - //Get user data from RocketChat | global object + // Get user data from RocketChat | global object getUserData() { this.storageService.get(AuthConnstants.AUTH).then(res=>{ this.userData$.next(res); @@ -317,11 +233,6 @@ export class AuthService { } logoutChat() { - //this.storageService.clear(); - /* this.storageService.removeStorageItem(AuthConnstants.AUTH).then(res =>{ - this.userData$.next(''); - this.router.navigate(['']); - }) */ } async presentAlert(message: string) { diff --git a/src/app/services/background.service.ts b/src/app/services/background.service.ts index acd6153ec..df1843528 100644 --- a/src/app/services/background.service.ts +++ b/src/app/services/background.service.ts @@ -1,6 +1,8 @@ import { Injectable } from '@angular/core'; import { ThemeService } from 'src/app/services/theme.service'; import { StorageService} from 'src/app/services/storage.service'; +import { HttpClient } from '@angular/common/http'; +import { environment } from 'src/environments/environment'; @Injectable({ providedIn: 'root' @@ -15,27 +17,13 @@ export class BackgroundService { constructor( private themeservice: ThemeService, - private storageservice: StorageService + private storageservice: StorageService, + private http: HttpClient, ) { } online() { - if (this.themeservice.currentTheme == 'gov') { - - document.body.style.setProperty(`--color`, "#d9d9d9"); - document.body.style.setProperty(`--color2`, "#f0f0f0"); - document.body.style.setProperty(`--color3`, "#d9d9d9"); - document.body.style.setProperty(`--color4`, "#d9d9d9ee"); - document.body.style.setProperty(`--color5`, "#ececec"); - this.storageservice.store('networkCheckStore','online'); - - } else { - document.body.style.setProperty(`--color`, "#0782C9"); - document.body.style.setProperty(`--color2`, "#45BAFF"); - document.body.style.setProperty(`--color3`, "#0782C9"); - document.body.style.setProperty(`--color4`, "#0782c9f0"); - document.body.style.setProperty(`--color5`, "#45BAFF"); - this.storageservice.store('networkCheckStore','online'); - } + + this.paint() this.callBacks.forEach((e) => { if (e.type == 'Online') { @@ -44,18 +32,58 @@ export class BackgroundService { }) } - offline() { - document.body.style.setProperty(`--color`, "#ffb703"); - document.body.style.setProperty(`--color2`, "#ffb703"); - document.body.style.setProperty(`--color3`, "#ffb703"); - document.body.style.setProperty(`--color4`, "#ffb703"); - document.body.style.setProperty(`--color5`, "#ffb703"); - this.storageservice.store('networkCheckStore','offline'); - this.callBacks.forEach((e) => { - if (e.type == 'Offline') { - e.funx() + paint() { + if (this.themeservice.currentTheme == 'gov') { + document.body.style.setProperty(`--color`, "#d9d9d9"); + document.body.style.setProperty(`--color2`, "#f0f0f0"); + document.body.style.setProperty(`--color3`, "#d9d9d9"); + document.body.style.setProperty(`--color4`, "#d9d9d9ee"); + document.body.style.setProperty(`--color5`, "#ececec"); + this.storageservice.store('networkCheckStore','online'); + + } else if (this.themeservice.currentTheme == 'default') { + document.body.style.setProperty(`--color`, "#0782C9"); + document.body.style.setProperty(`--color2`, "#45BAFF"); + document.body.style.setProperty(`--color3`, "#0782C9"); + document.body.style.setProperty(`--color4`, "#0782c9f0"); + document.body.style.setProperty(`--color5`, "#45BAFF"); + this.storageservice.store('networkCheckStore','online'); + } else if (this.themeservice.currentTheme == 'doneIt') { + document.body.style.setProperty(`--color`, "#69B3E7"); + document.body.style.setProperty(`--color2`, "#A5D1F1"); + document.body.style.setProperty(`--color3`, "#69B3E7"); + document.body.style.setProperty(`--color4`, "#69B3E7"); + document.body.style.setProperty(`--color5`, "#A5D1F1"); + } + } + + async offline() { + + let opts = { + headers: {}, + } + + try { + await this.http.post(environment.apiURL + "UserAuthentication/Login", '', opts).toPromise(); + } catch (error) { + if(error.status != 400) { + + document.body.style.setProperty(`--color`, "#ffb703"); + document.body.style.setProperty(`--color2`, "#ffb703"); + document.body.style.setProperty(`--color3`, "#ffb703"); + document.body.style.setProperty(`--color4`, "#ffb703"); + document.body.style.setProperty(`--color5`, "#ffb703"); + this.storageservice.store('networkCheckStore','offline'); + this.callBacks.forEach((e) => { + if (e.type == 'Offline') { + e.funx() + } + }) + } - }) + } + + } registerBackService(type: 'Offline' | 'Online' | 'Notification', funx: Function, object = '') { @@ -67,54 +95,4 @@ export class BackgroundService { } - greyTheme() { - document.body.style.setProperty(`--color`, "#D9D9D9"); - document.body.style.setProperty(`--color2`, "#f0f0f0"); - document.body.style.setProperty(`--color3`, "#D9D9D9"); - document.body.style.setProperty(`--color4`, "#d9d9d9ee"); - document.body.style.setProperty(`--color5`, "#ececec"); - - document.body.style.setProperty(`--header-container-background`, "#fff"); - document.body.style.setProperty(`--headercolor`, "#000"); - - document.body.style.setProperty(`--login-background`, "linear-gradient(180deg, #c63527 60%, #000 100%) !important"); - document.body.style.setProperty(`--button-hover`, "#ffb81c"); - document.body.style.setProperty(`--inicio-open-page-from-box`, "#c63527"); - document.body.style.setProperty(`--header-tab-top-border`, "#000"); - document.body.style.setProperty(`--header-tab-text-white`, "rgb(0, 0, 0)"); - document.body.style.setProperty(`--header-tab-text-white`, "rgb(0, 0, 0)"); - - document.body.style.setProperty(`--header-bottom-line-background`, "rgb(255, 0, 0)"); - document.body.style.setProperty(`--header-bottom-line-background-image`, "linear-gradient(to right, #C63527, #FFB81C, #FFC72C)"); - } - - blueTheme() { - - document.body.style.setProperty(`--color`, "#0782C9"); - document.body.style.setProperty(`--color2`, "#45BAFF"); - document.body.style.setProperty(`--color3`, "#0782C9"); - document.body.style.setProperty(`--color4`, "#0782c9f0"); - document.body.style.setProperty(`--color5`, "#f7f5f2"); - - document.body.style.setProperty(`--header-container-background`, "linear-gradient(270deg, var(--color2) 0%, var(--color3) 23.44%, var(--color4) 78.13%, var(--color5) 100%) !important"); - document.body.style.setProperty(`--headercolor`, "#000"); - - document.body.style.setProperty(`--header-bottom-line-background`, "linear-gradient(270deg, var(--color2) 0%, var(--color3) 23.44%, var(--color4) 78.13%, var(--color5) 100%) !important"); - document.body.style.setProperty(`--header-bottom-line-background-image`, "linear-gradient(270deg, var(--color2) 0%, var(--color3) 23.44%, var(--color4) 78.13%, var(--color5) 100%) !important"); - - document.body.style.setProperty(`--login-background`, "linear-gradient(180deg, #42b9fe 0%, #0782c9 100%) !importantt"); - document.body.style.setProperty(`--button-hover`, "#42b9fe"); - document.body.style.setProperty(`--inicio-open-page-from-box`, "#42b9fe"); - document.body.style.setProperty(`--header-tab-top-border`, "white"); - document.body.style.setProperty(`--header-tab-text-white`, "white"); - - } - - default() { - document.body.style.setProperty(`--color`, "#0782C9"); - document.body.style.setProperty(`--color2`, "#45BAFF"); - document.body.style.setProperty(`--color3`, "#0782C9"); - document.body.style.setProperty(`--color4`, "#0782c9f0"); - document.body.style.setProperty(`--color5`, "#45BAFF"); - } } diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts index 70978415c..bff0e12e0 100644 --- a/src/app/services/chat.service.ts +++ b/src/app/services/chat.service.ts @@ -342,7 +342,8 @@ export class ChatService { setheader() { try { - if (this.p.userPermission(this.p.permissionList.Chat.access)) { + + if (this.p.userPermission(this.p.permissionList.Chat.access) && SessionStore.user.ChatData) { this.headers = new HttpHeaders(); if (this.p.userPermission(this.p.permissionList.Chat.access)) { @@ -352,6 +353,8 @@ export class ChatService { this.options = { headers: this.headers, }; + + this.resetTimer(); } } } catch (error) { @@ -359,14 +362,17 @@ export class ChatService { } } - refreshtoken() { + async refreshtoken() { - if(this.headers) { + if(this.headers && SessionStore.user.ChatData) { this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey); let options = { headers: this.headers }; - return this.http.get(environment.apiURL + 'UserAuthentication/RegenereChatToken', options).subscribe(async res => { + + try { + let res = await this.http.get(environment.apiURL + 'UserAuthentication/RegenereChatToken', options).toPromise(); + let data = { status: res['status'], data: { @@ -377,13 +383,52 @@ export class ChatService { SessionStore.user.ChatData = data SessionStore.save() this.setheader() - // console.log(res) - // console.log(SessionStore.user.ChatData) - }); + this.timerEventTriggerDateLastUpdate = new Date(); + } catch (error) { + + this.resetTimer(); + await this.refreshtoken(); + + } + + } else { this.setheader() + await this.refreshtoken(); } } + + lastUpdateIs10sAgo() { + const currentTime: any = new Date(); + + const diffTime = Math.abs(currentTime - this.timerEventTriggerDateLastUpdate); + + if(this.timerEventTriggerDateLastUpdate == null) { + return true + } + + if(diffTime >= 5000) { + return true + } + + return false + + } + + + functionTimer = null; + timerEventTriggerDate = null + timerEventTriggerDateLastUpdate = null + + resetTimer() { + clearTimeout(this.functionTimer); + this.timerEventTriggerDate = new Date(+new Date() + 60000*15); + + this.functionTimer = setTimeout(() => { + this.refreshtoken(); + }, 60000 * 5); // time is in milliseconds + } + } diff --git a/src/app/services/chat/chat-storage.service.spec.ts b/src/app/services/chat/chat-storage.service.spec.ts deleted file mode 100644 index 34a01e3a9..000000000 --- a/src/app/services/chat/chat-storage.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { ChatStorageService } from './chat-storage.service'; - -describe('ChatStorageService', () => { - let service: ChatStorageService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(ChatStorageService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/src/app/services/chat/chat-storage.service.ts b/src/app/services/chat/chat-storage.service.ts deleted file mode 100644 index 523326c6d..000000000 --- a/src/app/services/chat/chat-storage.service.ts +++ /dev/null @@ -1,192 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Storage } from '@ionic/storage'; -import { environment } from 'src/environments/environment'; - -@Injectable({ - providedIn: 'root' -}) -export class ChatStorageService { - - constructor( - private storage: Storage, - ) { } - - /** - * @description delete message in the DB. get all messages, delete then corresponding message and update the store - * @param id message ID - */ - - async deleteMessageFromDb(messageId, roomId) { - if (environment.chatOffline) { - await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => { - if(!Array.isArray(messages)) { - messages = [] - } - - await messages.forEach( async (message, index) => { - - if(message._id == messageId) { - messages.splice(index, 1) - } - - }) - - this.storage.set('chatmsg' + roomId, messages).then((value) => { - // - }); - - }) - } - } - - async updateMessageDB(ChatMessage, roomId, identificator) { - - if (environment.chatOffline) { - await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => { - if(!Array.isArray(messages)) { - messages = [] - } - - let index; - const find = messages.find((message, _index)=> { - - if(message?.localReference == ChatMessage?.localReference || - message?._id == ChatMessage?._id) { - index = _index - return true - } - - return false - }) - - if(find) { - - - messages[index] = Object.assign(messages[index], ChatMessage) - - await this.storage.set('chatmsg' + roomId, messages) - } else { - // - } - - }) - } - - } - - async updateChat(history, roomId, identificator = '_id') { - if (environment.chatOffline) { - await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => { - if(!Array.isArray(messages)) { - messages = [] - } - - history.forEach( async(ChatMessage)=>{ - let index; - const find = messages.find((message, _index)=> { - - if(message[identificator]) { - if(message[identificator] == ChatMessage[identificator]) { - index = _index - return true - } - } - - return false - }) - - if(find) { - - - messages[index] = Object.assign(messages[index], ChatMessage) - - // if(messages[index].msg.includes('***********')) { - // - // - // - // } - - await this.storage.set('chatmsg' + roomId, messages) - } else { - - } - }) - - - - }) - } - } - - async addMessageDB(ChatMessage, roomId) { - if (environment.chatOffline) { - await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => { - if(!Array.isArray(messages)) { - messages = [] - } - - - if(!ChatMessage._id && environment.chatOffline) { - - delete ChatMessage.temporaryData - messages.push(ChatMessage) - - - await this.storage.set('chatmsg' + roomId, messages) - // - - } else { - const find = messages.find((message)=> { - return message._id == ChatMessage._id - }) - - if(!find) { - delete ChatMessage.temporaryData - messages.push(ChatMessage) - await this.storage.set('chatmsg' + roomId, messages) - // - } else { - - } - - } - }) - } - } - - async addManyMessageDB(_ChatMessage: any[], roomId) { - if (environment.chatOffline) { - await this.storage.get('chatmsg' + roomId).then(async(messages: any = []) => { - if(!Array.isArray(messages)) { - messages = [] - } - - await _ChatMessage.forEach(async(ChatMessage)=>{ - if(!ChatMessage._id && environment.chatOffline) { - - delete ChatMessage.temporaryData - messages.push(ChatMessage) - // - - } else { - const find = messages.find((message)=> { - return message._id == ChatMessage._id - }) - - if(!find) { - delete ChatMessage.temporaryData - messages.push(ChatMessage) - // - - - } - } - }) - - await this.storage.set('chatmsg' + roomId, messages) - - }) - } - } - -} diff --git a/src/app/services/chat/ws-chat.service.spec.ts b/src/app/services/chat/chat-system.service.spec.ts similarity index 52% rename from src/app/services/chat/ws-chat.service.spec.ts rename to src/app/services/chat/chat-system.service.spec.ts index c909a0da0..3afb80345 100644 --- a/src/app/services/chat/ws-chat.service.spec.ts +++ b/src/app/services/chat/chat-system.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { WsChatService } from './ws-chat.service'; +import { ChatSystemService } from './chat-system.service'; -describe('WsChatService', () => { - let service: WsChatService; +describe('ChatSystemService', () => { + let service: ChatSystemService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(WsChatService); + service = TestBed.inject(ChatSystemService); }); it('should be created', () => { diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/chat-system.service.ts similarity index 55% rename from src/app/services/chat/ws-chat-methods.service.ts rename to src/app/services/chat/chat-system.service.ts index d12c22731..d1d9716d0 100644 --- a/src/app/services/chat/ws-chat-methods.service.ts +++ b/src/app/services/chat/chat-system.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; import { RoomService } from './room.service'; -import { WsChatService } from 'src/app/services/chat/ws-chat.service'; +import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'; import { MessageService } from 'src/app/services/chat/message.service'; import { SessionStore } from 'src/app/store/session.service'; import { capitalizeTxt } from 'src/plugin/text'; -import { Rooms, Update as room } from 'src/app/models/chatMethod'; +import { Update as room } from 'src/app/models/chatMethod'; import { Storage } from '@ionic/storage'; import { Platform } from '@ionic/angular'; import { SqliteService } from 'src/app/services/sqlite.service'; @@ -14,7 +14,6 @@ import { SortService } from '../functions/sort.service'; import { chatUser } from 'src/app/models/chatMethod'; import { NfService } from 'src/app/services/chat/nf.service' import { ChangeProfileService } from '../change-profile.service'; -import { ChatStorageService } from './chat-storage.service'; import { ChatMethodsService } from './chat-methods.service'; import { AESEncrypt } from '../aesencrypt.service' import { AttachmentsService } from 'src/app/services/attachments.service'; @@ -23,7 +22,7 @@ import { NetworkServiceService} from 'src/app/services/network-service.service'; @Injectable({ providedIn: 'root' }) -export class WsChatMethodsService { +export class ChatSystemService { dm: {[key: string]: RoomService} = {} group: {[key: string]: RoomService} = {} @@ -39,13 +38,11 @@ export class WsChatMethodsService { currentRoom: RoomService = null users: chatUser[] = [] sessionStore = SessionStore - - - delete = [] + loadingUsers = false constructor( - private WsChatService: WsChatService, + private RochetChatConnectorService: RochetChatConnectorService, private storage: Storage, private platform: Platform, private sqlservice: SqliteService, @@ -55,25 +52,26 @@ export class WsChatMethodsService { private NfService: NfService, private changeProfileService: ChangeProfileService, private chatService: ChatService, - private ChatStorageService: ChatStorageService, private ChatMethodsService:ChatMethodsService, private AESEncrypt: AESEncrypt, private AttachmentsService:AttachmentsService, private NetworkServiceService: NetworkServiceService, ) { - - - this.loadChat() - - this.WsChatService.registerCallback({ + this.RochetChatConnectorService.registerCallback({ type: 'reConnect', - funx: () => { + funx: async () => { /** * @description when the phone is in the background for a long time it could disconnects from the socket then the socket reconnects automatically, * when the connection is lost the subscribe is also lost, so we have to subscribe again when reconnection is establish. */ - this.subscribeToRoom() + + await this.chatService.refreshtoken(); + await this.getUser(); + await this.getAllRooms(); + this.subscribeToRoom(); + // + this.getUserStatus(); if(this.currentRoom) { this.currentRoom.loadHistory({forceUpdate: true}) @@ -90,21 +88,26 @@ export class WsChatMethodsService { } }) + if(this.sessionStore.user.Inactivity) { + this.loadChat(); + } } - private loadChat() { + loadChat() { this.ReLoadChat() } async ReLoadChat() { + + await this.chatService.refreshtoken(); + await this.restoreUsers(); + await this.getUser(); await this.restoreRooms(); await this.getAllRooms(); this.subscribeToRoom(); - // - await this.getUser(); this.getUserStatus(); } @@ -121,6 +124,7 @@ export class WsChatMethodsService { this.currentRoom = null this.users = [] + this.storage.remove('Users'); } openRoom(roomId) { @@ -139,20 +143,24 @@ export class WsChatMethodsService { } + getRoomById(roomId) { + if(this.getDmRoom(roomId)) { + return this.getDmRoom(roomId) + } else if(this.getGroupRoom(roomId)) { + return this.getGroupRoom(roomId) + } + } + async restoreRooms() { try { - const rooms = await this.storage.get('Rooms'); - - + const rooms = await this.storage.remove('Rooms'); if(rooms) { - await rooms.result.update.forEach( async (roomData: room) => { + for (let roomData of rooms.result.update) { await this.prepareRoom(roomData); - }); - + } } - } catch(e){} setTimeout(() => { @@ -161,53 +169,110 @@ export class WsChatMethodsService { } + async restoreUsers () { + const users = await this.storage.get('Users'); + + if(users) { + this.users = users + + } + } + async getAllRooms () { this.loadingWholeList = true - const rooms = await this.WsChatService.getRooms(); - try { + const rooms = await this.RochetChatConnectorService.getRooms(); + try { await this.storage.remove('Rooms'); } catch(e) {} - - await rooms.result.update.forEach( async (roomData: room, index) => { - const roomId = this.getRoomId(roomData); + let index = 0 - if(roomData.t == 'd') { + if(rooms?.result?.update) { + for (let roomData of rooms.result.update) { - const res = await this.chatService.getMembers(roomId).toPromise(); + const roomId = this.getRoomId(roomData); - const members = res['members']; - const users = members.filter(data => data.username != this.sessionStore.user.UserName); - rooms.result.update[index]['members'] = users - - await this.prepareRoom(roomData); - } else { - if (roomData.t === 'p') { - const res = await this.chatService.getGroupMembers(roomId).toPromise() - const members = res['members']; - const users = members.filter(data => data.username != this.sessionStore.user.UserName); - - rooms.result.update[index]['members'] = users + if(roomData.t == 'd') { - await this.prepareRoom(roomData); + let error = false + let res; - } - else { - const res = await this.chatService.getChannelMembers(roomId).toPromise() + try { + res = await this.chatService.getMembers(roomId).toPromise(); + } catch (e) { + await this.chatService.refreshtoken(); + error = true + } + + if(error) { + res = await this.chatService.getMembers(roomId).toPromise(); + } + + const members = res['members']; const users = members.filter(data => data.username != this.sessionStore.user.UserName); - - rooms.result.update[index]['members'] = users + rooms.result.update[index]['members'] = members + rooms.result.update[index]['membersExcludeMe'] = users + await this.prepareRoom(roomData); + } else { + if (roomData.t === 'p') { + let error = false + let res; + + try { + res = await this.chatService.getGroupMembers(roomId).toPromise() + } catch (e) { + await this.chatService.refreshtoken(); + error = true + } + + if(error) { + res = await this.chatService.getGroupMembers(roomId).toPromise() + } + + const members = res['members']; + const users = members.filter(data => data.username != this.sessionStore.user.UserName); + + rooms.result.update[index]['members'] = members + rooms.result.update[index]['membersExcludeMe'] = users + + await this.prepareRoom(roomData); + + } + else { + + let error = false + let res; + + try { + res = await this.chatService.getChannelMembers(roomId).toPromise() + + } catch (e) { + await this.chatService.refreshtoken(); + error = true + } + + if(error) { + res = await this.chatService.getChannelMembers(roomId).toPromise() + } + + + const members = res['members']; + const users = members.filter(data => data.username != this.sessionStore.user.UserName); + + rooms.result.update[index]['members'] = members + rooms.result.update[index]['membersExcludeMe'] = users + await this.prepareRoom(roomData); + } } + + index++; } + } - }); - - await this.storage.set('Rooms', rooms); - setTimeout(() => { this.sortRoomList() }, 1000) @@ -223,7 +288,7 @@ export class WsChatMethodsService { /** * @description sort room list by last message date */ - sortRoomList =() => { + sortRoomList = () => { this._dm = this.sortService.sortDate(this._dm,'_updatedAt').reverse() this._group = this.sortService.sortDate(this._group,'_updatedAt').reverse() @@ -242,7 +307,7 @@ export class WsChatMethodsService { this.defaultSubtribe(id) } - this.WsChatService.streamNotifyLogged().then((subscription=>{ + this.RochetChatConnectorService.streamNotifyLogged().then((subscription=>{ })) } @@ -254,7 +319,7 @@ export class WsChatMethodsService { */ subscribeToRoomUpdate(id, roomData) { - this.defaultSubtribe(id) + this.defaultSubtribe(id); this.prepareRoom(roomData); @@ -268,16 +333,30 @@ export class WsChatMethodsService { * @param id room id */ private defaultSubtribe(id: any) { - this.WsChatService.streamRoomMessages(id).then((subscription)=>{ - // - }) + + const room = this.getRoomById(id); + + if(!room.subscribeAttempt) { + room.subscribeAttempt = true; + + this.RochetChatConnectorService.streamRoomMessages(id).then((subscription) => { + room.status.receive.message = true; + }) + + this.RochetChatConnectorService.subStreamNotifyRoom(id, 'typing', false).then((subscription) => { + room.status.receive.typing = true; + // + }) + + this.RochetChatConnectorService.subStreamNotifyRoom(id, 'readMessage', false).then((subscription) => { + room.status.receive.readMessage = true; + }) + + this.RochetChatConnectorService.streamNotifyRoomDeleteMessage(id).then((subscription) => { + room.status.receive.deleteMessage = true; + }) + } - this.WsChatService.subStreamNotifyRoom(id, 'typing', false) - this.WsChatService.subStreamNotifyRoom(id, 'readMessage', false) - - this.WsChatService.streamNotifyRoomDeleteMessage(id).then((subscription)=>{ - // - }) } private fix_updatedAt(message) { @@ -312,52 +391,58 @@ export class WsChatMethodsService { lastMessage: this.getRoomLastMessage(roomData), _updatedAt: new Date( roomData._updatedAt || roomData._updatedAt['$date']), u : roomData.u || {}, - members: roomData.members + members: roomData.members, + membersExcludeMe: roomData.membersExcludeMe } let roomId = this.getRoomId(roomData); - // create room - if(!this.roomExist(roomId)) { - let room:RoomService = new RoomService(this.WsChatService, new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService), this.storage, this.platform, this.sqlservice, this.NativeNotificationService, this.sortService, this.ChatService, this.NfService , this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this) - room.setData(setData) - room.receiveMessage() - room.getAllUsers = this.getUsers - room.receiveMessageDelete(); - room.sortRoomList = this.sortRoomList + if (setData.name != 'Rocket Cat') { + // create room + if(!this.roomExist(roomId)) { + let room:RoomService = new RoomService(this.RochetChatConnectorService, new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService), this.storage, this.platform, this.sqlservice, this.NativeNotificationService, this.sortService, this.ChatService, this.NfService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService, this) + room.setData(setData) + room.receiveMessage() + room.getAllUsers = this.getUsers + room.receiveMessageDelete(); + room.sortRoomList = this.sortRoomList + room.chatServiceDeleteRoom = this.deleteRoom + room.isGroup = !this.isIndividual(roomData) - // create individual room + // create individual room + if(this.isIndividual(roomData)) { - if(this.isIndividual(roomData)) { + this.dm[roomId] = room + this._dm.push(room) + this.dmCount++ - this.dm[roomId] = room - this._dm.push(room) - // console.log(this._dm) - this.dmCount++ + } else { + // create group room + this.group[roomId] = room + this._group.push(room) + this.groupCount++ + + } + + this.defaultSubtribe(roomId) } else { - // create group room + // in this case room is already present, therefor it will only be necessary, + // to redefine - this.group[roomId] = room - this._group.push(room) - this.groupCount++ + if(this.dm[roomId]) { + this.dm[roomId].setData(setData) + } else if(this.group[roomId]) { + this.group[roomId].setData(setData) + } } - } else { - // in this case room is already present, therefor it will only be necessary, - // to redefine - - if(this.dm[roomId]) { - this.dm[roomId].setData(setData) - } else if(this.group[roomId]) { - this.group[roomId].setData(setData) - } - } + } - deleteRoom(roomId) { + deleteRoom =(roomId) => { this.delete.push(roomId) delete this.group[roomId]; @@ -386,7 +471,7 @@ export class WsChatMethodsService { */ private getUserStatus(id?:string) { - this.WsChatService.getUserStatus((d) => { + this.RochetChatConnectorService.getUserStatus((d) => { const username = d.fields.args[0][1] const statusNum = d.fields.args[0][2] @@ -429,11 +514,11 @@ export class WsChatMethodsService { deleteMessage(id?) { - return this.WsChatService.deleteMessage(id); + return this.RochetChatConnectorService.deleteMessage(id); } leaveRoom(id?) { - return this.WsChatService.leaveRoom(id); + return this.RochetChatConnectorService.leaveRoom(id); } async hideRoom(id) { @@ -454,18 +539,18 @@ export class WsChatMethodsService { hidingRoom(id?) { - return this.WsChatService.hidingRoom(id).then(()=>{ + return this.RochetChatConnectorService.hidingRoom(id).then(()=>{ // this.hideRoom(id) }) } addRoomOwner(roomid, userId) { - return this.WsChatService.addRoomOwner(roomid, userId); + return this.RochetChatConnectorService.addRoomOwner(roomid, userId); } createPrivateRoom(groupName, username, customFields){ - return this.WsChatService.createPrivateRoom(groupName, username, customFields); + return this.RochetChatConnectorService.createPrivateRoom(groupName, username, customFields); } getDmRoom(id): RoomService { @@ -480,7 +565,7 @@ export class WsChatMethodsService { } catch(e) {} } - getRoomName(roomData: room) { + getRoomName(roomData: room): string { if(this.isIndividual(roomData)) { const names: String[] = roomData.usernames const roomName = names.filter((name, index)=>{ @@ -491,6 +576,8 @@ export class WsChatMethodsService { const firstName = capitalizeTxt(roomName.split('.')[0]) const lastName = capitalizeTxt(roomName.split('.')[1]) return firstName + ' ' + lastName + } else if(roomData.name) { + return roomData.name } else { return 'Sem nome' } @@ -519,11 +606,33 @@ export class WsChatMethodsService { async getUser() { - let _res = await this.ChatService.getAllUsers().toPromise() + this.loadingUsers = true + let _res - let users = _res['users'].filter(data => data.username != SessionStore.user.UserName); + try { + _res = await this.ChatService.getAllUsers().toPromise(); + } catch (error) { + await this.chatService.refreshtoken(); + _res = await this.ChatService.getAllUsers().toPromise(); + } - users = users.sort((a,b) => { + let users: chatUser[] = _res['users'].filter(data => data.username != SessionStore.user.UserName); + + const userIds = this.users.map((user) => user._id) + + for(let UserUpdate of users) { + if(userIds.includes(UserUpdate._id)) { + for (var index = 0; index < this.users.length; index++) { + if(UserUpdate._id == this.users[index]._id) { + this.users[index] = UserUpdate + } + } + } else { + this.users.push(UserUpdate) + } + } + + this.users = this.users.sort((a,b) => { if(a.name < b.name) { return -1; } @@ -533,16 +642,13 @@ export class WsChatMethodsService { return 0; }); - users.forEach((user, index) => { - // user[index].status = this.statusNumberToText(user[index].status) - }) + await this.storage.set('Users',this.users); + this.loadingUsers = false - this.users = users } getUserOfRoom(roomId){ - return this.WsChatService.getUserOfRoom(roomId); + return this.RochetChatConnectorService.getUserOfRoom(roomId); } - } diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts index c0ee74133..299f98e87 100644 --- a/src/app/services/chat/message.service.ts +++ b/src/app/services/chat/message.service.ts @@ -4,9 +4,8 @@ import { Storage } from '@ionic/storage'; import { SessionStore } from 'src/app/store/session.service'; import { capitalizeTxt } from 'src/plugin/text' import { NfService } from 'src/app/services/chat/nf.service' -import { WsChatService } from 'src/app/services/chat/ws-chat.service'; +import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'; import { showDateDuration } from 'src/plugin/showDateDuration'; -import { ChatStorageService } from './chat-storage.service' import { ChatMethodsService } from './chat-methods.service' import { MessageModel } from '../../models/beast-orm' import { AESEncrypt } from '../aesencrypt.service' @@ -47,6 +46,7 @@ export class MessageService { uploadingFile = false errorUploadingAttachment = false loadHistory = false + from: 'Offline'|'History'|'stream'| 'send' duration = '' localReference = null viewed = [] @@ -56,19 +56,21 @@ export class MessageService { messageSend = false delate = false delateRequest = false - downloadLoader: boolean; + downloadLoader: boolean = false + downloadAttachments = false; + downloadAttachmentsTemp = 0; + UploadAttachmentsTemp = 0; - constructor(private storage: Storage, + constructor( private NfService: NfService, - private WsChatService: WsChatService, - private ChatStorageService: ChatStorageService, + private RochetChatConnectorService: RochetChatConnectorService, private ChatMethodsService: ChatMethodsService, private AESEncrypt: AESEncrypt, private AttachmentsService: AttachmentsService, private NetworkServiceService: NetworkServiceService) { } - setData({customFields = {}, channels, mentions, msg ,rid ,ts, u, t, _id, id, _updatedAt, file, attachments, temporaryData, localReference , viewed = [], received = [], delate = false, delateRequest =false, }:Message) { + setData({customFields = {}, channels, mentions, msg ,rid ,ts, u, t, _id, id, _updatedAt, file, attachments, temporaryData, localReference , viewed = [], received = [], delate = false, delateRequest =false, from }:Message) { this.channels = channels || [] this.mentions = mentions || [] @@ -148,11 +150,13 @@ export class MessageService { let uploadSuccessfully = false if(this.hasSendAttachment == false) { uploadSuccessfully = await this.NfService.beforeSendAttachment(this) + this.UploadAttachmentsTemp++ } this.uploadingFile = false if(uploadSuccessfully) { + this.hasSendAttachment = true this.errorUploadingAttachment = false this.temporaryData = {} @@ -160,8 +164,9 @@ export class MessageService { const params = {roomId:this.rid, msg: this.msg, attachments: this.attachments, file: this.file, localReference: this.localReference} await this.sendRequest(params) - } else if(this.WsChatService.isLogin == false) { - this.WsChatService.registerCallback({ + } else if(this.RochetChatConnectorService.isLogin == false) { + + this.RochetChatConnectorService.registerCallback({ type: 'reConnect', funx: async ()=> { this.send() @@ -169,7 +174,11 @@ export class MessageService { } }) - } else if(uploadSuccessfully == false) { + } else if(uploadSuccessfully == false && this.UploadAttachmentsTemp == 1) { + this.send() + } + else if(uploadSuccessfully == false) { + this.errorUploadingAttachment = true return new Promise((resolve, reject) => { @@ -191,9 +200,10 @@ export class MessageService { } if(this.NetworkServiceService.getCurrentNetworkStatus() == ConnectionStatus.Online) { - - this.WsChatService.send(params).then( + // console.log('online send') + this.RochetChatConnectorService.send(params).then( (ChatMessage: any) => { + console.log('response') ChatMessage = ChatMessage.message.result this.messageSend = true @@ -202,7 +212,8 @@ export class MessageService { ) } else { - this.WsChatService.registerCallback({ + // console.log("reconnect") + this.RochetChatConnectorService.registerCallback({ type: 'reConnect', funx: async ()=> { @@ -254,7 +265,14 @@ export class MessageService { // save the changes to the storage this.save() this.downloadLoader = false; + this.downloadAttachments = true + this.downloadAttachmentsTemp++; } + }, ()=>{ + // error + this.downloadLoader = false; + this.downloadAttachments = false + this.downloadAttachmentsTemp++; }); } diff --git a/src/app/services/chat/rochet-chat-connector.service.spec.ts b/src/app/services/chat/rochet-chat-connector.service.spec.ts new file mode 100644 index 000000000..0535e9dfe --- /dev/null +++ b/src/app/services/chat/rochet-chat-connector.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { RochetChatConnectorService } from './rochet-chat-connector.service'; + +describe('RochetChatConnectorService', () => { + let service: RochetChatConnectorService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RochetChatConnectorService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/rochet-chat-connector.service.ts similarity index 96% rename from src/app/services/chat/ws-chat.service.ts rename to src/app/services/chat/rochet-chat-connector.service.ts index 2bc758e80..c28afb167 100644 --- a/src/app/services/chat/ws-chat.service.ts +++ b/src/app/services/chat/rochet-chat-connector.service.ts @@ -9,7 +9,7 @@ import { chatHistory, Rooms } from 'src/app/models/chatMethod'; @Injectable({ providedIn: 'root' }) -export class WsChatService { +export class RochetChatConnectorService { isLogin = false; loginResponse = {} @@ -38,6 +38,7 @@ export class WsChatService { key:'ping-pong', funx:(message: any) => { if(message.msg == "ping") { + // console.log(message) this.ws.send({message:{msg:"pong"}, loginRequired: false}) } } @@ -552,7 +553,7 @@ export class WsChatService { streamRoomMessages(roomId : string) { - const requestId = uuidv4() + const requestId = "streamRoomMessages"+uuidv4() const message = { "msg": "sub", @@ -567,8 +568,10 @@ export class WsChatService { this.ws.send({message, requestId}); return new Promise((resolve, reject) => { - this.ws.registerCallback({type:'Onmessage', funx:(message)=>{ - if(message.id == requestId) { // same request send + this.ws.registerCallback({type:'Onmessage', funx:(message) => { + + // console.log(); + if(message.id == requestId || message?.subs?.[0] == requestId) { // same request send resolve(message) return true } @@ -690,9 +693,6 @@ export class WsChatService { onopen: async ()=> { this.ws.connected = true - - - setTimeout(()=>{ this.ws.wsMsgQueue() }, 10) @@ -739,7 +739,7 @@ export class WsChatService { } else { let messageStr = JSON.stringify(message) // - + // console.log(messageStr) this.socket.send(messageStr) } return requestId @@ -748,9 +748,6 @@ export class WsChatService { onmessage: async (event: any)=> { const data = JSON.parse(event.data) - // - // console.log(data) - for (const [key, value] of Object.entries(this.wsCallbacks)) { if(value.type== 'Onmessage') { const dontRepeat = await value.funx(data) @@ -766,13 +763,26 @@ export class WsChatService { }, - onclose:(event: any)=> { + onclose: async (event: any)=> { this.ws.connected = false this.isLogin = false this.connect() this.login() + for (const [key, value] of Object.entries(this.wsCallbacks)) { + if(value.type == 'Offline') { + const dontRepeat = await value.funx() + + if(dontRepeat) { + delete this.wsCallbacks[key] + this.n-- + } + + } + + } + }, @@ -789,4 +799,5 @@ export class WsChatService { } } - }} + } +} diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index 1969b7d7f..12c98a042 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { WsChatService } from 'src/app/services/chat/ws-chat.service'; +import { RochetChatConnectorService } from 'src/app/services/chat/rochet-chat-connector.service'; import { MessageService } from 'src/app/services/chat/message.service'; import { showDateDuration } from 'src/plugin/showDateDuration'; import { chatHistory } from 'src/app/models/chatMethod'; @@ -15,14 +15,13 @@ import { environment } from 'src/environments/environment'; import { ChatService } from 'src/app/services/chat.service'; import { NfService } from 'src/app/services/chat/nf.service'; import { v4 as uuidv4 } from 'uuid' -import { ChatStorageService } from './chat-storage.service'; import { ChatMethodsService } from './chat-methods.service'; import { DeleteMessageModel, MessageModel } from '../../models/beast-orm'; import { AESEncrypt } from '../aesencrypt.service'; import { IncomingChatMessage, ChatMessageInterface, falseTypingMethod } from 'src/app/models/message.model'; import { AttachmentsService } from 'src/app/services/attachments.service'; import { ConnectionStatus, NetworkServiceService} from 'src/app/services/network-service.service'; -import { WsChatMethodsService } from './ws-chat-methods.service'; +import { ChatSystemService } from './chat-system.service'; @Injectable({ providedIn: 'root' @@ -39,7 +38,6 @@ export class RoomService { name = '' _updatedAt = {} hasLoadHistory = false - hasLoadHistoryMessageRF = [] restoreFromOffline = false duration = '' isTyping = false @@ -48,15 +46,27 @@ export class RoomService { message = '' lastMessageTxt = '' userThatIsTyping = '' - mgsArray = []; messagesLocalReference = [] members = [] + membersExcludeMe = [] u sessionStore = SessionStore countDownTime = '' chatOpen = false messageUnread = false + status = { + receive: { + message: false, + typing: false, + readMessage: false, + deleteMessage: false + } + } + + isGroup: boolean + subscribeAttempt = false + scrollDown = () => { } /** @@ -68,10 +78,10 @@ export class RoomService { } sortRoomList = () => {} - uploadAttachment = (formData) => {} + chatServiceDeleteRoom = (roomId) => {} constructor( - public WsChatService: WsChatService, + public RochetChatConnectorService: RochetChatConnectorService, private MessageService: MessageService, private storage: Storage, private platform: Platform, @@ -80,23 +90,22 @@ export class RoomService { private sortService: SortService, private chatService: ChatService, private NfService: NfService, - private ChatStorageService: ChatStorageService, private ChatMethodsService: ChatMethodsService, private AESEncrypt: AESEncrypt, private AttachmentsService: AttachmentsService, private NetworkServiceService: NetworkServiceService, - private wsChatMethodsService: WsChatMethodsService + private ChatSystemService: ChatSystemService ) { this.NativeNotificationService.askForPermission() - this.WsChatService.getUserStatus((d) => { + this.RochetChatConnectorService.getUserStatus((d) => { const userId = d.fields.args[0][0] const statusNum = d.fields.args[0][2] const statusText = this.statusNumberToText(statusNum) - if(this.members?.map) { - const membersIds = this.members.map((user)=> user._id) + if(this.membersExcludeMe?.map) { + const membersIds = this.membersExcludeMe.map((user)=> user._id) if(membersIds.includes(userId)) { @@ -128,6 +137,19 @@ export class RoomService { } }) + this.RochetChatConnectorService.registerCallback({ + type: 'Offline', + funx: () => { + /** + * @description when the phone is in the background for a long time it could disconnects from the socket then the socket reconnects automatically, + * when the connection is lost the subscribe is also lost, so we have to subscribe again when reconnection is establish. + */ + this.resetStatus(); + this.hasLoadHistory = false + this.subscribeAttempt = false + } + }) + } /** @@ -150,7 +172,19 @@ export class RoomService { } } - setData({members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService), _updatedAt }) { + + resetStatus() { + this.status = { + receive: { + message: false, + typing: false, + readMessage: false, + deleteMessage: false + } + } + } + + setData({membersExcludeMe, members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService), _updatedAt }) { this.customFields = customFields this.id = id this.name = name @@ -159,6 +193,7 @@ export class RoomService { this._updatedAt = _updatedAt this.u = u this.members = members + this.membersExcludeMe = membersExcludeMe this.calDateDuration() this.restoreMessageFromDB() @@ -169,6 +204,24 @@ export class RoomService { } + updateInfo() { + // this.chatService.getRoomInfo(this.id).toPromise(); + + } + + get online() { + + if(!this.isGroup) { + for(let user of this.ChatSystemService.users) { + if(this.membersExcludeMe[0]._id == user._id) { + return user.status + } + } + } + + return 'offline' + } + countDownDate(date) { let difference = new Date(date).getTime() - new Date().getTime(); let c_day = Math.floor(difference/(1000*60*60*24)); @@ -200,22 +253,22 @@ export class RoomService { this.countDownTime = "Expired"; let body = { "roomId": this.id } - this.chatService.getRoomInfo(this.id).subscribe(room=>{ + // this.chatService.getRoomInfo(this.id).subscribe( room =>{}); - - if(this.t === 'p') { - this.chatService.deleteGroup(body).subscribe(res=>{ - this.wsChatMethodsService.deleteRoom(this.id); - this.wsChatMethodsService.getAllRooms(); - }); - } - else { - this.chatService.deleteChannel(body).subscribe(res=>{ - this.wsChatMethodsService.deleteRoom(this.id); - this.wsChatMethodsService.getAllRooms(); - }); - } - }); + if(this.t === 'p') { + this.chatService.deleteGroup(body).subscribe(res=>{ + this.ChatSystemService.deleteRoom(this.id); + this.ChatSystemService.getAllRooms(); + this.chatServiceDeleteRoom(this.id); + }); + } + else { + this.chatService.deleteChannel(body).subscribe(res=>{ + this.ChatSystemService.deleteRoom(this.id); + this.ChatSystemService.getAllRooms(); + this.chatServiceDeleteRoom(this.id); + }); + } } @@ -229,7 +282,7 @@ export class RoomService { receiveMessage() { - this.WsChatService.updateRoomEventss( + this.RochetChatConnectorService.updateRoomEventss( this.id, "stream-room-messages", async (IncomingChatMessage:IncomingChatMessage) => { @@ -245,6 +298,8 @@ export class RoomService { const message = await this.prepareCreate({message: ChatMessage, save: true}); message.messageSend = true + message.from = 'stream' + message.loadHistory = this.hasLoadHistory this.lastMessage = message; this.calDateDuration(ChatMessage._updatedAt); @@ -260,8 +315,9 @@ export class RoomService { }); } - message.addMessageDB() - + if(this.hasLoadHistory == true) { + await message.addMessageDB() + } if(this.chatOpen == false) { this.messageUnread = true @@ -275,7 +331,7 @@ export class RoomService { this.messages.forEach((message, index)=> { if(message.localReference == ChatMessage.localReference) { - const membersIds = this.members.map((user)=> user._id) + const membersIds = this.membersExcludeMe.map((user)=> user._id) this.getAllUsers().forEach( async (users) => { @@ -300,7 +356,7 @@ export class RoomService { } ) - this.WsChatService.receiveStreamNotifyRoom((message) => { + this.RochetChatConnectorService.receiveStreamNotifyRoom((message) => { if(message.fields.eventName == this.id+'/'+'typing') { @@ -337,7 +393,7 @@ export class RoomService { getRoomMembersIds(): string[] { try { - return this.members.map((user)=> user._id) + return this.membersExcludeMe.map((user)=> user._id) } catch(error) { return [] } @@ -411,7 +467,7 @@ export class RoomService { async receiveMessageDelete() { - this.WsChatService.updateRoomEventss( + this.RochetChatConnectorService.updateRoomEventss( this.id, "stream-notify-room", async (ChatMessage) => { @@ -454,9 +510,14 @@ export class RoomService { //Get previous last message from room const previousLastMessage = this.messages.slice(-1)[0]; - this.lastMessage = previousLastMessage; - this.calDateDuration(previousLastMessage._updatedAt) - this.sortRoomList() + + if(previousLastMessage) { + this.lastMessage = previousLastMessage; + // console.log("last message"+ previousLastMessage) + this.calDateDuration(previousLastMessage._updatedAt) + this.sortRoomList() + } + return true @@ -492,14 +553,14 @@ export class RoomService { if(this.NetworkServiceService.getCurrentNetworkStatus() == ConnectionStatus.Online) { - this.WsChatService.deleteMessage(msgId).then(async() => { + this.RochetChatConnectorService.deleteMessage(msgId).then(async() => { message.delateRequest = true await message.save(); this.deleteMessage(msgId); }) } else { - this.WsChatService.registerCallback({ + this.RochetChatConnectorService.registerCallback({ type: 'reConnect', funx: async ()=> { @@ -533,8 +594,13 @@ export class RoomService { this.messagesLocalReference.push(localReference) const message: MessageService = await this.prepareCreate({message:offlineChatMessage, save: environment.chatOffline}) - await message.addMessageDB() + if(this.hasLoadHistory == true) { + await message.addMessageDB() + } + message.send() + message.from = 'send' + message.loadHistory = this.hasLoadHistory if (environment.chatOffline) { @@ -547,10 +613,6 @@ export class RoomService { this.calDateDuration(message._updatedAt) this.sortRoomList() } - - if(this.hasLoadHistory == false) { - this.hasLoadHistoryMessageRF.push(localReference) - } } @@ -568,7 +630,7 @@ export class RoomService { } if(lastIsTyping != this.isTyping) { - this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', this.isTyping) + this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', this.isTyping) } @@ -577,22 +639,20 @@ export class RoomService { } sendFalseTypingReadMessage(method,param: object) { - this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', {method:method, params: param} as falseTypingMethod) + this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', {method:method, params: param} as falseTypingMethod) this.setTypingOff() } private typingWatch() { - setTimeout(()=>{ + setTimeout(() => { const now = new Date().getTime() if((now - this.lastTimeType) >= 2888) { if(this.isTyping == true) { this.isTyping = false - this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', this.isTyping) + this.RochetChatConnectorService.sendStreamNotifyRoom(this.id, SessionStore.user.UserName, 'typing', this.isTyping) } - } else { - } }, 3000) @@ -615,7 +675,7 @@ export class RoomService { leave(rid?) { - this.WsChatService.leaveRoom(this.id) + this.RochetChatConnectorService.leaveRoom(this.id) } isJson(str) { @@ -632,17 +692,26 @@ export class RoomService { const messages = await MessageModel.filter({rid:this.id}).execute() - await messages.forEach( async (ChatMessage, index) => { - + for (let ChatMessage of messages) { const wewMessage = await this.simplePrepareMessage(ChatMessage) + wewMessage.from = 'Offline' + wewMessage.loadHistory = this.hasLoadHistory + if(wewMessage.offline == false) { const message = await this.prepareMessageCreateIfNotExist_iD({message:ChatMessage}) + + if(message) { + message.from = 'Offline' + message.loadHistory = this.hasLoadHistory + message?.decryptMessage() + } - message?.decryptMessage() } else { const offlineMessage = await this.prepareMessageCreateIfNotExist({message:ChatMessage}) + offlineMessage.from = 'Offline' + offlineMessage.loadHistory = this.hasLoadHistory if(offlineMessage) { this.messagesLocalReference.push(offlineMessage.localReference) @@ -657,9 +726,8 @@ export class RoomService { if(wewMessage.delate && !wewMessage.offline && !wewMessage.delateRequest) { this.sendDeleteRequest(wewMessage._id) } - - }); - + } + setTimeout(()=> { this.scrollDown() }, 50) @@ -681,52 +749,50 @@ export class RoomService { await this.restoreMessageFromDB() } - await this.WsChatService.loadHistory(this.id, limit).then( async (chatHistory:chatHistory) => { - // console.log('load history', chatHistory) - // + const chatHistory: chatHistory = await this.RochetChatConnectorService.loadHistory(this.id, limit) + + if(chatHistory?.result?.messages) { const messagesId = this.messages.map((message)=> message._id) - await chatHistory.result.messages.reverse().forEach(async(message: any) => { - + for(let message of chatHistory.result.messages.reverse()) { if (!messagesId.includes(message._id)) { const messagesToSave = await this.prepareMessageCreateIfNotExist_iD({message: message}); if(messagesToSave) { messagesToSave.addMessageDB() } } - - }) + } - }) + setTimeout(() => { + this.scrollDown() + }, 50) + + this.hasLoadHistory = true + this.messageReorder(); + } - setTimeout(() => { - this.scrollDown() - }, 50) - - this.hasLoadHistory = true - this.messageReorder(); } async messageReorder() { const reorderMessage: MessageService[] = this.messages.filter((message) => - this.hasLoadHistoryMessageRF.includes(message?.localReference) + message.from == 'send' && !message.loadHistory || message.from == 'stream' && !message.loadHistory ); - await this.messages.forEach( async (message, i) => { - if(this.hasLoadHistoryMessageRF.includes(message?.localReference)) { + let i = 0 + for(let message of this.messages) { + if(message.from == 'send' && !message.loadHistory || message.from == 'stream' && !message.loadHistory) { this.messages.splice(i, 1) } + i++; + } - }) - - this.hasLoadHistoryMessageRF = []; - - reorderMessage.forEach((message) => { + for(let message of reorderMessage) { this.messages.push(message) - }); + message.addMessageDB() + } } @@ -735,7 +801,7 @@ export class RoomService { async readAllMessage() { - const membersIds = this.members.map((user)=> user._id) + const membersIds = this.membersExcludeMe.map((user)=> user._id) await this.messages.forEach( async (message, index) => { @@ -761,7 +827,7 @@ export class RoomService { message = this.fix_updatedAt(message) - const wewMessage = new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService) + const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService) wewMessage.setData(message) wewMessage.loadHistory = this.hasLoadHistory @@ -818,7 +884,7 @@ export class RoomService { async prepareCreate({message, save = true}): Promise { message = this.fix_updatedAt(message) - const wewMessage = new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService) + const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService) wewMessage.setData(message) wewMessage.loadHistory = this.hasLoadHistory @@ -856,7 +922,7 @@ export class RoomService { simplePrepareMessage(message) { message = this.fix_updatedAt(message) - const wewMessage = new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService) + const wewMessage = new MessageService(this.NfService, this.RochetChatConnectorService, this.ChatMethodsService, this.AESEncrypt, this.AttachmentsService, this.NetworkServiceService) wewMessage.setData(message) wewMessage.loadHistory = this.hasLoadHistory @@ -931,7 +997,7 @@ export class RoomService { } sendReadMessage() { - this.WsChatService.readMessage(this.id) + this.RochetChatConnectorService.readMessage(this.id) this.sendFalseTypingReadMessage('viewMessage', {}) this.messageUnread = false } diff --git a/src/app/services/chat/websocket.service.spec.ts b/src/app/services/chat/websocket.service.spec.ts deleted file mode 100644 index bf797727f..000000000 --- a/src/app/services/chat/websocket.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { WebsocketService } from './websocket.service'; - -describe('WebsocketService', () => { - let service: WebsocketService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(WebsocketService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/src/app/services/chat/websocket.service.ts b/src/app/services/chat/websocket.service.ts deleted file mode 100644 index 64a9a3185..000000000 --- a/src/app/services/chat/websocket.service.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Injectable } from '@angular/core'; -import * as Rx from 'rxjs/Rx'; - -@Injectable({ - providedIn: 'root' -}) -export class WebsocketService { - - constructor() { } - - private subject: Rx.Subject; - - public connect(url): Rx.Subject { - if(!this.subject){ - this.subject = this.create(url); - - } - return this.subject; - } - - private create(url): Rx.Subject{ - let ws = new WebSocket(url); - - let observable = Rx.Observable.create( - (obs: Rx.Observer) => { - ws.onmessage = obs.next.bind(obs); - ws.onerror = obs.error.bind(obs); - ws.onclose = obs.complete.bind(obs); - return ws.close.bind(ws) - }) - - let observer = { - next: (data: Object) => { - if(ws.readyState === WebSocket.OPEN){ - ws.send(JSON.stringify(data)); - } - } - } - - return Rx.Subject.create(observer, observable); - - } -} diff --git a/src/app/services/chat/ws-chat-methods.service.spec.ts b/src/app/services/chat/ws-chat-methods.service.spec.ts deleted file mode 100644 index c10e87b7b..000000000 --- a/src/app/services/chat/ws-chat-methods.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { WsChatMethodsService } from './ws-chat-methods.service'; - -describe('WsChatMethodsService', () => { - let service: WsChatMethodsService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(WsChatMethodsService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/src/app/services/contacts.service.ts b/src/app/services/contacts.service.ts index 4564475a5..55ce44b25 100644 --- a/src/app/services/contacts.service.ts +++ b/src/app/services/contacts.service.ts @@ -5,6 +5,7 @@ import { Observable } from 'rxjs'; import { environment } from 'src/environments/environment'; import { AuthService } from '../services/auth.service'; import { LoginUserRespose } from '../models/user.model'; +import { SessionStore } from '../store/session.service'; @Injectable({ providedIn: 'root' @@ -16,7 +17,7 @@ export class ContactsService { headers: HttpHeaders; constructor(private http: HttpClient, user: AuthService) { - this.loggeduser = user.ValidatedUser; + this.loggeduser = SessionStore.user; this.headers = new HttpHeaders(); this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); } diff --git a/src/app/services/data.service.ts b/src/app/services/data.service.ts index cfc40e5dd..4b715eb73 100644 --- a/src/app/services/data.service.ts +++ b/src/app/services/data.service.ts @@ -6,7 +6,7 @@ import { Injectable } from '@angular/core'; export class DataService { - private data = {} + data = {} constructor() { } set(name: string, value: any) { diff --git a/src/app/services/events.service.ts b/src/app/services/events.service.ts index 572de619c..8b014a3f9 100644 --- a/src/app/services/events.service.ts +++ b/src/app/services/events.service.ts @@ -11,6 +11,7 @@ import { OfflineManagerService } from 'src/app/services/offline-manager.service' import { catchError } from "rxjs/operators"; import { Storage } from '@ionic/storage'; import { BackgroundService } from 'src/app/services/background.service'; +import { SessionStore } from '../store/session.service'; @Injectable({ @@ -71,7 +72,7 @@ export class EventsService { private storage: Storage, private backgroundservice: BackgroundService) { - this.loggeduser = this.user.ValidatedUser; + this.loggeduser = SessionStore.user; this.headers = new HttpHeaders(); this.headersMdOficial = new HttpHeaders(); @@ -93,7 +94,7 @@ export class EventsService { this.setHeader() this.changeProfileService.registerCallback(() => { - this.loggeduser = this.user.ValidatedUser; + this.loggeduser = SessionStore.user; this.setHeader() }) @@ -133,7 +134,7 @@ export class EventsService { if (this.loggeduser) { if (this.loggeduser.Profile == 'MDGPR') { - this.loggeduser.OwnerCalendars.forEach(calendar => { + for (let calendar of this.loggeduser.OwnerCalendars) { if (calendar.CalendarName == 'Oficial') { @@ -153,10 +154,10 @@ export class EventsService { this.headersMdPessoal = this.headersMdPessoal.set('CalendarRoleId', calendar.CalendarRoleId); } - }); - - this.loggeduser.SharedCalendars.forEach(sharedCalendar => { - + } + + for (let sharedCalendar of this.loggeduser.SharedCalendars) { + if (sharedCalendar.CalendarName == 'Oficial') { this.hasSharedOficial = true @@ -173,13 +174,13 @@ export class EventsService { this.headersSharedPessoal = this.headersSharedPessoal.set('CalendarId', sharedCalendar.CalendarId); this.headersSharedPessoal = this.headersSharedPessoal.set('CalendarRoleId', sharedCalendar.CalendarRoleId); } - }); + } + } else if (this.loggeduser.Profile == 'PR') { - this.loggeduser.OwnerCalendars.forEach(calendar => { - + for (let calendar of this.loggeduser.OwnerCalendars) { if (calendar.CalendarName == 'Oficial') { this.hasOwnOficial = true @@ -197,11 +198,11 @@ export class EventsService { this.headersPrPessoal = this.headersPrPessoal.set('CalendarRoleId', calendar.CalendarRoleId); } - }); + } + } - this.loggeduser.OwnerCalendars.forEach(calendar => { - + for (let calendar of this.loggeduser.OwnerCalendars) { if(!this.usersCalendarIds.includes(calendar.OwnerUserId)) { this.usersCalendarIds.push(calendar.OwnerUserId) } @@ -230,7 +231,7 @@ export class EventsService { this.headerOwnPessoal =this.headerOwnPessoal.set('CalendarRoleId', calendar.CalendarRoleId); this.headerOwnPessoal = this.headerOwnPessoal.set('CalendarName', calendar.CalendarName); } - }); + } for (let sharedCalendar of this.loggeduser.SharedCalendars) { @@ -423,8 +424,15 @@ export class EventsService { let prO = [], prP = []; - prO = await this.getAllMdOficialEvents(startdate, enddate).toPromise(); - prP = await this.getAllMdPessoalEvents(startdate, enddate).toPromise(); + for (let calendar of this.loggeduser.OwnerCalendars) { + if (calendar.CalendarName == 'Oficial') { + prO = await this.getAllMdOficialEvents(startdate, enddate).toPromise(); + } + if(calendar.CalendarName == 'Pessoal') { + prP = await this.getAllMdPessoalEvents(startdate, enddate).toPromise(); + } + } + const resFinal = prO.concat(prP); return new Promise(resolve => { return resolve(resFinal) @@ -554,8 +562,19 @@ export class EventsService { } async getAllSharedEvents(startdate: string, enddate: string) { - let prO = await this.getAllSharedOficialEvents(startdate, enddate).toPromise(); - let prP = await this.getAllSharedPessoalEvents(startdate, enddate).toPromise(); + + let prO = [], prP = []; + + for(let calendar of this.loggeduser.SharedCalendars) { + if (calendar.CalendarName == 'Oficial') { + prO = await this.getAllSharedOficialEvents(startdate, enddate).toPromise(); + } + if(calendar.CalendarName == 'Pessoal') { + prP = await this.getAllSharedPessoalEvents(startdate, enddate).toPromise(); + } + + } + const resFinal = prO.concat(prP); return new Promise(resolve => { diff --git a/src/app/services/events/attendees/attendees.page.html b/src/app/services/events/attendees/attendees.page.html index dd839dd99..b40e32f74 100644 --- a/src/app/services/events/attendees/attendees.page.html +++ b/src/app/services/events/attendees/attendees.page.html @@ -16,6 +16,7 @@
+

{{ attendee.Name }}

@@ -38,6 +39,7 @@
+

{{ attendee.Name }}

@@ -57,6 +59,7 @@
+

{{ attendee.Name }}

diff --git a/src/app/services/events/events.page.html b/src/app/services/events/events.page.html index 4fb2378e8..463004977 100644 --- a/src/app/services/events/events.page.html +++ b/src/app/services/events/events.page.html @@ -39,6 +39,14 @@ class="icon-next" slot="end" src="assets/images/icons-arrow-circle-arrow-right.svg" + *ngIf="ThemeService.currentTheme != 'doneIt' " + > + + +
diff --git a/src/app/services/events/events.page.ts b/src/app/services/events/events.page.ts index c4f2e0019..22affd076 100644 --- a/src/app/services/events/events.page.ts +++ b/src/app/services/events/events.page.ts @@ -1,11 +1,9 @@ -import { Component, OnInit, LOCALE_ID, EventEmitter, Output, Renderer2, ElementRef } from '@angular/core'; +import { Component, OnInit, EventEmitter, Output } from '@angular/core'; import { Event } from '../../models/event.model'; import { EventsService } from 'src/app/services/events.service'; import { NavigationExtras, Router } from '@angular/router'; import { ActivatedRoute, NavigationEnd } from '@angular/router'; -import { AuthService } from 'src/app/services/auth.service'; -import { StorageService } from 'src/app/services/storage.service'; import { ModalController, Platform } from '@ionic/angular'; import { EventDetailPage } from './event-detail/event-detail.page'; import { ProcessesService } from '../../services/processes.service'; @@ -15,6 +13,8 @@ import { ToDayEventStorage } from 'src/app/store/to-day-event-storage.service'; import { ScreenOrientation } from '@ionic-native/screen-orientation/ngx'; import { ExpedienteTaskPipe } from 'src/app/pipes/expediente-task.pipe'; import { ExpedienteGdStore } from 'src/app/store/expedientegd-store.service'; +import { SessionStore } from 'src/app/store/session.service'; +import { ThemeService } from 'src/app/services/theme.service'; @Component({ selector: 'app-events', @@ -75,19 +75,18 @@ export class EventsPage implements OnInit { constructor( private eventService: EventsService, private router: Router, - private storageService:StorageService, public activatedRoute: ActivatedRoute, - private authService: AuthService, private processes:ProcessesService, /* private gabineteService: GabineteDigitalPage, */ private modalController:ModalController, private screenOrientation: ScreenOrientation, public platform: Platform, + public ThemeService: ThemeService, ) { this.existingScreenOrientation = this.screenOrientation.type; - this.loggeduser = authService.ValidatedUser; + this.loggeduser = SessionStore.user; this.prEventList = null; @@ -309,7 +308,8 @@ export class EventsPage implements OnInit { logout() { - this.authService.ValidatedUser.BasicAuthKey = ""; + + SessionStore.user.BasicAuthKey = "" this.router.navigate(['/home/login']); } diff --git a/src/app/services/functions/time.service.ts b/src/app/services/functions/time.service.ts index 08c2fecb2..747ab7343 100644 --- a/src/app/services/functions/time.service.ts +++ b/src/app/services/functions/time.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { ChatService } from '../chat.service'; -import { WsChatMethodsService } from '../chat/ws-chat-methods.service'; +import { ChatSystemService } from '../chat/chat-system.service'; @Injectable({ providedIn: 'root' @@ -10,7 +10,7 @@ export class TimeService { room: any; constructor(private chatService: ChatService, - public wsChatMethodsService: WsChatMethodsService,) { } + public ChatSystemService: ChatSystemService,) { } showDateDuration(start:any) { let end; @@ -93,13 +93,13 @@ export class TimeService { if(this.room.t === 'p'){ this.chatService.deleteGroup(body).subscribe(res=>{ - this.wsChatMethodsService.deleteRoom(roomId) + this.ChatSystemService.deleteRoom(roomId) }); } else{ this.chatService.deleteChannel(body).subscribe(res=>{ - this.wsChatMethodsService.deleteRoom(roomId) + this.ChatSystemService.deleteRoom(roomId) }); } }); diff --git a/src/app/services/organic-entity.service.ts b/src/app/services/organic-entity.service.ts index c1703a6a0..30fc583f5 100644 --- a/src/app/services/organic-entity.service.ts +++ b/src/app/services/organic-entity.service.ts @@ -6,6 +6,7 @@ import { environment } from 'src/environments/environment'; import { AuthService } from '../services/auth.service'; import { LoginUserRespose } from '../models/user.model'; import { OrganicEntity } from 'src/app/models/organic-entity.model'; +import { SessionStore } from '../store/session.service'; @Injectable({ providedIn: 'root' @@ -17,7 +18,7 @@ export class OrganicEntityService { headers: HttpHeaders; constructor(private http: HttpClient, user: AuthService) { - this.loggeduser = user.ValidatedUser; + this.loggeduser = SessionStore.user; this.headers = new HttpHeaders(); this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); } diff --git a/src/app/services/publications.service.ts b/src/app/services/publications.service.ts index 28f2c573e..c429d3482 100644 --- a/src/app/services/publications.service.ts +++ b/src/app/services/publications.service.ts @@ -8,6 +8,7 @@ import { catchError } from 'rxjs/operators' import { Publication } from '../models/publication'; import { getUrl } from 'ionicons/dist/types/components/icon/utils'; import { ActivatedRoute, Router } from '@angular/router'; +import { SessionStore } from '../store/session.service'; @Injectable({ providedIn: 'root' @@ -23,7 +24,7 @@ export class PublicationsService { constructor(private http: HttpClient, user: AuthService, private activatedRoute: ActivatedRoute, private router: Router) { - this.loggeduser = user.ValidatedUser; + this.loggeduser = SessionStore.user; this.headers = new HttpHeaders(); this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); diff --git a/src/app/services/search.service.ts b/src/app/services/search.service.ts index 5438e8ede..31d198c87 100644 --- a/src/app/services/search.service.ts +++ b/src/app/services/search.service.ts @@ -7,6 +7,7 @@ import { AuthService } from '../services/auth.service'; import { LoginUserRespose } from '../models/user.model'; import { EventSearch } from "src/app/models/event-search"; import { TopSearch } from 'src/app/models/top-search'; +import { SessionStore } from '../store/session.service'; @Injectable({ providedIn: 'root' @@ -21,7 +22,7 @@ export class SearchService { // setup constructor(private http: HttpClient, user: AuthService) { - this.loggeduser = user.ValidatedUser; + this.loggeduser = SessionStore.user; this.headers = new HttpHeaders(); this.headers = this.headers.set('Authorization', this.loggeduser.BasicAuthKey); } diff --git a/src/app/services/theme.service.ts b/src/app/services/theme.service.ts index e1687690c..6385613bf 100644 --- a/src/app/services/theme.service.ts +++ b/src/app/services/theme.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { StorageService } from 'src/app/services/storage.service'; - +import { localstoreService } from '../store/localstore.service'; +import { AES, enc, SHA1 } from 'crypto-js' @Injectable({ providedIn: 'root' }) @@ -9,23 +10,54 @@ export class ThemeService { themes = [ 'gov', 'default', - 'tribunal' + 'doneIt' ] - currentTheme = 'gov' + private defaultTheme: any = 'gov' + currentTheme: 'gov' | 'default' | 'doneIt' = this.defaultTheme + keyName: string - constructor(private storageservice: StorageService) { } + constructor( + private storageservice: StorageService + ) { - setTheme(theme: 'gov' | 'default' | 'tribunal') { + this.keyName = (SHA1(this.constructor.name)).toString() + let restore = localstoreService.get(this.keyName, { + theme: this.defaultTheme + }) - document.body.classList.remove("gov"); - document.body.classList.remove("default"); - document.body.classList.remove("tribunal"); - document.body.classList.add(theme); - this.currentTheme = theme - - this.storageservice.store('theme',theme); + this.setTheme(restore.theme) } -} + setTheme(theme: 'gov' | 'default' | 'doneIt') { + + if(this.themes.includes(theme)) { + document.body.classList.remove("gov"); + document.body.classList.remove("default"); + document.body.classList.remove("doneIt"); + + document.body.classList.add(theme); + this.currentTheme = theme; + + localstoreService.set(this.keyName, { + theme: theme + }) + } + + + } + + allows(args) { + if(!Array.isArray(args)) { + args = [args] + } + + return args.includes(this.currentTheme) + } + + saveTheme() { + + } + +} \ No newline at end of file diff --git a/src/app/services/toast.service.ts b/src/app/services/toast.service.ts index 523eec5f9..86df2b007 100644 --- a/src/app/services/toast.service.ts +++ b/src/app/services/toast.service.ts @@ -238,7 +238,10 @@ export class ToastService { theme = 'blue' } else if(document.querySelector('body').className.includes('tribunal')) { theme = 'tribunal' - } else { + } else if (document.querySelector('body').className.includes('doneIt')) { + theme = 'doneIt' + } + else { theme = 'gov' } diff --git a/src/app/shared/agenda/approve-event/approve-event.page.html b/src/app/shared/agenda/approve-event/approve-event.page.html index 3ebb71116..a1d40cc9c 100644 --- a/src/app/shared/agenda/approve-event/approve-event.page.html +++ b/src/app/shared/agenda/approve-event/approve-event.page.html @@ -6,7 +6,6 @@ -
Evento Pendente de Aprovação
@@ -19,6 +18,7 @@
+
@@ -92,7 +92,7 @@
Detalhes
-

+

diff --git a/src/app/shared/agenda/approve-event/approve-event.page.scss b/src/app/shared/agenda/approve-event/approve-event.page.scss index 146eb255b..5866fc140 100644 --- a/src/app/shared/agenda/approve-event/approve-event.page.scss +++ b/src/app/shared/agenda/approve-event/approve-event.page.scss @@ -51,7 +51,7 @@ .event-type-Oficial{ font-family: Roboto; border-radius: 20px; - background: #ffb703; + background: var(--label-bg-color); float: right !important; padding: 5px 13.5px 5px 13.5px; color: #fff; @@ -220,3 +220,8 @@ background: #d30606; border-radius: 20px; } + + + .text { + text-transform: initial !important + } diff --git a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html index a1a99a38e..f2fe39805 100644 --- a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html +++ b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.html @@ -289,6 +289,7 @@
+
@@ -311,6 +312,7 @@
+
@@ -332,6 +334,7 @@
+
Adicionar documentos diff --git a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts index 5d915374b..7548f5d22 100644 --- a/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts +++ b/src/app/shared/agenda/edit-event-to-approve/edit-event-to-approve.page.ts @@ -131,7 +131,6 @@ export class EditEventToApprovePage implements OnInit { private processes:ProcessesService, private toastService: ToastService, public ThemeService: ThemeService, - private router: Router, ) { this.isEventEdited = false; } diff --git a/src/app/shared/agenda/edit-event/edit-event.page.html b/src/app/shared/agenda/edit-event/edit-event.page.html index e3aaa8e7b..8008ac9af 100644 --- a/src/app/shared/agenda/edit-event/edit-event.page.html +++ b/src/app/shared/agenda/edit-event/edit-event.page.html @@ -281,6 +281,7 @@
+
Adicionar documentos diff --git a/src/app/shared/agenda/event-list/event-list.page.html b/src/app/shared/agenda/event-list/event-list.page.html index 1b5f13f11..2b603aae9 100644 --- a/src/app/shared/agenda/event-list/event-list.page.html +++ b/src/app/shared/agenda/event-list/event-list.page.html @@ -11,10 +11,10 @@ - Calendário do MDGPR + Meu Calendário - Presidente da República + Calendário Partilhado diff --git a/src/app/shared/agenda/event-list/event-list.page.scss b/src/app/shared/agenda/event-list/event-list.page.scss index a9ce19c12..dc8dd0c24 100644 --- a/src/app/shared/agenda/event-list/event-list.page.scss +++ b/src/app/shared/agenda/event-list/event-list.page.scss @@ -48,7 +48,7 @@ } .event-mdgpr-Oficial{ border-radius: 5px; - border-right: 5px solid #ffb703; + border-right: 5px solid var(--label-bg-color); overflow: auto; } .event-mdgpr-Pessoal{ diff --git a/src/app/shared/agenda/event-list/event-list.page.ts b/src/app/shared/agenda/event-list/event-list.page.ts index dd9b3b6f0..9b69eb327 100644 --- a/src/app/shared/agenda/event-list/event-list.page.ts +++ b/src/app/shared/agenda/event-list/event-list.page.ts @@ -3,9 +3,9 @@ import { EventBody } from 'src/app/models/eventbody.model'; import { EventPerson } from 'src/app/models/eventperson.model'; import { ProcessesService } from 'src/app/services/processes.service'; import { NavigationEnd, Router } from '@angular/router'; -import { AuthService } from 'src/app/services/auth.service'; import { LoginUserRespose } from 'src/app/models/user.model'; import { SortService } from 'src/app/services/functions/sort.service'; +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-event-list', @@ -34,10 +34,9 @@ export class EventListPage implements OnInit { constructor( private processes:ProcessesService, private router: Router, - private userAuth: AuthService, private sortService: SortService, ) { - this.loggeduser = userAuth.ValidatedUser; + this.loggeduser = SessionStore.user; } ngOnInit() { diff --git a/src/app/shared/agenda/new-event/new-event.page.html b/src/app/shared/agenda/new-event/new-event.page.html index e106b4154..0d8758d81 100644 --- a/src/app/shared/agenda/new-event/new-event.page.html +++ b/src/app/shared/agenda/new-event/new-event.page.html @@ -248,6 +248,7 @@
+
@@ -272,6 +273,7 @@
+
@@ -295,6 +297,7 @@
+
Adicionar documentos diff --git a/src/app/shared/agenda/new-event/new-event.page.ts b/src/app/shared/agenda/new-event/new-event.page.ts index b4bea48e0..6ef5b3cdd 100644 --- a/src/app/shared/agenda/new-event/new-event.page.ts +++ b/src/app/shared/agenda/new-event/new-event.page.ts @@ -12,7 +12,6 @@ import { EventAttachment } from 'src/app/models/attachment.model'; import { ToastService } from 'src/app/services/toast.service'; import { LoginUserRespose } from 'src/app/models/user.model'; -import { AuthService } from 'src/app/services/auth.service'; import {DateAdapter} from '@angular/material/core'; import * as _moment from 'moment'; @@ -26,6 +25,7 @@ import { FormGroup, Validators } from '@angular/forms'; import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker'; import { ThemeService } from 'src/app/services/theme.service' import { ChatMethodsService } from 'src/app/services/chat/chat-methods.service'; +import { SessionStore } from 'src/app/store/session.service'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { @@ -84,6 +84,7 @@ export class NewEventPage implements OnInit { @Output() clearContact = new EventEmitter(); @Output() GoBackEditOrAdd = new EventEmitter(); @Output() cloneAllmobileComponent = new EventEmitter(); + @Output() backToChat = new EventEmitter(); documents:SearchList[] = []; @@ -123,14 +124,13 @@ export class NewEventPage implements OnInit { public eventService: EventsService, private attachmentsService: AttachmentsService, private toastService: ToastService, - private userService: AuthService, private dateAdapter: DateAdapter, public ThemeService: ThemeService, private chatMethodService: ChatMethodsService, // private translate: TranslateService ) { this.dateAdapter.setLocale('pt'); - this.loggeduser = userService.ValidatedUser; + this.loggeduser = SessionStore.user; this.postEvent = new Event(); } @@ -331,13 +331,13 @@ export class NewEventPage implements OnInit { }); } - close(){ + close() { this.deleteTemporaryData(); - this.cloneAllmobileComponent.emit(); this.clearContact.emit(); this.setIntervenient.emit([]); this.setIntervenientCC.emit([]); + this.backToChat.emit({roomId:this.roomId}) } getRecurrenceTypes() { @@ -459,8 +459,13 @@ export class NewEventPage implements OnInit { "end": this.postEvent.EndDate, "venue": this.postEvent.Location, "id": id, + "calendarId": CalendarId } - this.chatMethodService.sendMessage(this.roomId,data); + + if(this.roomId) { + this.chatMethodService.sendMessage(this.roomId,data); + } + }, error => { loader.remove() @@ -472,10 +477,12 @@ export class NewEventPage implements OnInit { else if(this.loggeduser.Profile == 'PR') { const CalendarId = this.selectedCalendarId() + let loader = this.toastService.loading(); this.eventService.postEventGeneric(this.postEvent, this.postEvent.CalendarName, CalendarId).subscribe( (id) => { + loader.remove() const eventId: any = id; @@ -503,7 +510,24 @@ export class NewEventPage implements OnInit { if(DocumentToSave.length == 0){ this.afterSave(); } + this.toastService._successMessage('Evento criado'); + let data = { + "subject": this.postEvent.Subject, + "start": this.postEvent.StartDate, + "end": this.postEvent.EndDate, + "venue": this.postEvent.Location, + "id": id, + "calendarId": CalendarId + } + if(this.roomId) { + this.chatMethodService.sendMessage(this.roomId,data); + } + this.toastService._successMessage('Evento criado') + },()=>{ + loader.remove() + this.showLoader = false + this.toastService._badRequest('Evento não criado') }); } else { @@ -511,10 +535,12 @@ export class NewEventPage implements OnInit { const CalendarId = this.selectedCalendarId() + let loader = this.toastService.loading(); this.eventService.postEventGeneric(this.postEvent, this.postEvent.CalendarName, CalendarId).subscribe( (id) => { - + loader.remove(); + const eventId: any = id; const DocumentToSave: EventAttachment[] = this.documents.map((e) => { @@ -541,7 +567,24 @@ export class NewEventPage implements OnInit { if(DocumentToSave.length == 0){ this.afterSave(); } + + this.toastService._successMessage('Evento criado'); + let data = { + "subject": this.postEvent.Subject, + "start": this.postEvent.StartDate, + "end": this.postEvent.EndDate, + "venue": this.postEvent.Location, + "id": id, + "calendarId": CalendarId + } + if(this.roomId) { + this.chatMethodService.sendMessage(this.roomId,data); + } this.toastService._successMessage('Evento criado') + },()=>{ + loader.remove() + this.showLoader = false + this.toastService._badRequest('Evento não criado') }); } @@ -564,7 +607,10 @@ export class NewEventPage implements OnInit { afterSave() { this.deleteTemporaryData(); - this.onAddEvent.emit(this.postEvent); + this.onAddEvent.emit(Object.assign(this.postEvent, { + roomId: this.roomId + })); + this.GoBackEditOrAdd.emit(); this.setIntervenient.emit([]); @@ -627,7 +673,7 @@ export class NewEventPage implements OnInit { return true; } else { - return false; + } } diff --git a/src/app/shared/agenda/view-event/view-event.page.html b/src/app/shared/agenda/view-event/view-event.page.html index 856eb4426..c04724732 100644 --- a/src/app/shared/agenda/view-event/view-event.page.html +++ b/src/app/shared/agenda/view-event/view-event.page.html @@ -6,6 +6,7 @@
@@ -16,6 +17,7 @@
diff --git a/src/app/shared/chat/edit-group/edit-group.page.html b/src/app/shared/chat/edit-group/edit-group.page.html index 5de4ba1db..75532b7e5 100644 --- a/src/app/shared/chat/edit-group/edit-group.page.html +++ b/src/app/shared/chat/edit-group/edit-group.page.html @@ -5,6 +5,7 @@
diff --git a/src/app/shared/chat/edit-group/edit-group.page.ts b/src/app/shared/chat/edit-group/edit-group.page.ts index dcd9ec80d..d94e282c0 100644 --- a/src/app/shared/chat/edit-group/edit-group.page.ts +++ b/src/app/shared/chat/edit-group/edit-group.page.ts @@ -1,9 +1,9 @@ -import { HttpErrorResponse } from '@angular/common/http'; + import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ModalController, PickerController } from '@ionic/angular'; -import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { ThemeService } from 'src/app/services/theme.service' +import { SessionStore } from 'src/app/store/session.service'; @Component({ selector: 'app-edit-group', @@ -27,14 +27,13 @@ export class EditGroupPage implements OnInit { private modalController: ModalController, private pickerController: PickerController, private chatService: ChatService, - private authService: AuthService, public ThemeService: ThemeService ) { - this.loggedUser = authService.ValidatedUserChat['data']; + this.loggedUser = SessionStore.user.ChatData['data']; } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); this.getRoomInfo(); } @@ -42,7 +41,12 @@ export class EditGroupPage implements OnInit { this.chatService.getRoomInfo(this.roomId).subscribe(room=>{ this.room = room['room']; - this.groupName = this.room.name.split('-').join(' '); + try { + this.groupName = this.room.name.split('-').join(' '); + } catch (error) { + this.groupName = this.room.name; + } + }); } diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html index c5c126e57..882b0c426 100644 --- a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html @@ -5,6 +5,7 @@
@@ -48,7 +49,7 @@
- +
{{header}} diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts index d1b369472..acc3d8b8b 100644 --- a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.ts @@ -1,13 +1,13 @@ -import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; +import { HttpHeaders } from '@angular/common/http'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { ModalController, NavParams } from '@ionic/angular'; +import { ModalController } from '@ionic/angular'; import * as _ from 'lodash'; -import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { NewGroupPage } from '../../new-group/new-group.page'; import { GroupMessagesPage } from '../group-messages.page'; import { ThemeService } from 'src/app/services/theme.service' import { SessionStore } from 'src/app/store/session.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; @Component({ selector: 'app-group-contacts', @@ -21,7 +21,6 @@ export class GroupContactsPage implements OnInit { contact: string[] = [" Ana M.", "Andre F.", "Bruno G.", "Catarina T", "Tiago"]; - headers: HttpHeaders; options:any; listContacts: any[]; contacts: any; @@ -39,25 +38,19 @@ export class GroupContactsPage implements OnInit { constructor( private modalController: ModalController, - private http: HttpClient, private chatService: ChatService, - private authService: AuthService, - public ThemeService: ThemeService - //private navParams: NavParams, + public ThemeService: ThemeService, + public ChatSystemService: ChatSystemService ) { - this.loggedUser = authService.ValidatedUserChat['data']; + this.loggedUser = SessionStore.user.ChatData['data']; this.textSearch=""; this.dm=null; this.room=null; - /* this.isGroupCreated = this.navParams.get('isCreated'); - this.groupName = this.navParams.get('name'); - this.room = this.navParams.get('room'); - this.members = this.navParams.get('members'); */ } ngOnInit() { - this.chatService.refreshtoken(); + // this.chatService.refreshtoken(); //this.getRoomInfo(); this.loadUsers(); @@ -147,10 +140,8 @@ export class GroupContactsPage implements OnInit { this.showLoader = false; } - loadUsers1(members:any){ - this.options = { - headers: this.headers, - }; + loadUsers1(members:any) { + this.chatService.getAllUsers().subscribe((res:any)=>{ @@ -178,9 +169,7 @@ export class GroupContactsPage implements OnInit { } loadUsers(){ - this.options = { - headers: this.headers, - }; + this.chatService.getAllUsers().subscribe((res:any)=>{ @@ -276,24 +265,6 @@ export class GroupContactsPage implements OnInit { }); } - /* createGroup(){ - - if(!this.isGroupCreated){ - let body = { "name":this.groupName, } - this.chatService.addGroup(body).subscribe(res=>{ - - - this.addContacts(res['group']); - this.openGroupMessages(res['group']); - - }); - - } - else{ - this.addContacts(this.room); - this.close(); - } - } */ async newGroup(){ this.close(); diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html index 86584f9c3..93f1f1580 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.html +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -41,7 +41,7 @@ A conversa original mantêm-se como chat individual
-
+
@@ -89,8 +89,12 @@ {{"Imagem"}} - - + + + + + +
@@ -112,10 +116,11 @@
- + + {{file.title}} - - + +
@@ -134,8 +139,12 @@ {{"Mensagem de voz"}} - - + + + + + +
@@ -164,7 +173,7 @@
{{msg.u.name}} criou esta reunião
-
+
De {{showDateDuration(msg.file.start_date)}} a {{showDateDuration(msg.file.end_date)}}
{{msg.file.venue}}
@@ -202,7 +211,7 @@ -
- {{ wsChatMethodsService.getGroupRoom(roomId).otherUserType }} +
- {{ wsChatMethodsService.getGroupRoom(roomId).userThatIsTyping }} está a escrever... + {{ ChatSystemService.getGroupRoom(roomId).userThatIsTyping }} está a escrever...
@@ -279,7 +286,7 @@
- +
- - - diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts index f5e2b4b96..cd63b2953 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -1,27 +1,21 @@ -import { Component, OnChanges, OnInit, Input, SimpleChanges, ChangeDetectorRef, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy } from '@angular/core'; +import { Component, OnChanges, OnInit, Input, SimpleChanges, Output, EventEmitter, ViewChild, ElementRef, AfterViewInit, OnDestroy } from '@angular/core'; import { AnimationController, ModalController, PopoverController, Platform } from '@ionic/angular'; import { AlertService } from 'src/app/services/alert.service'; -import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { ChatPopoverPage } from 'src/app/shared/popover/chat-popover/chat-popover.page'; import { GroupContactsPage } from './group-contacts/group-contacts.page'; -import { Router } from '@angular/router' import { ChatOptionsPopoverPage } from '../../popover/chat-options-popover/chat-options-popover.page'; import { ChatOptionsFeaturesPage } from 'src/app/modals/chat-options-features/chat-options-features.page'; import { TimeService } from 'src/app/services/functions/time.service'; -import { FileLoaderService } from 'src/app/services/file/file-loader.service'; -import { FileToBase64Service } from 'src/app/services/file/file-to-base64.service'; import { SearchPage } from 'src/app/pages/search/search.page'; import { SearchList } from 'src/app/models/search-document'; -import { ProcessesService } from 'src/app/services/processes.service'; import { FileService } from 'src/app/services/functions/file.service'; import { ViewDocumentPage } from 'src/app/modals/view-document/view-document.page'; import { ThemeService } from 'src/app/services/theme.service' import { ViewEventPage } from 'src/app/modals/view-event/view-event.page'; import { Storage } from '@ionic/storage'; -import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service'; +import { ChatSystemService } from 'src/app/services/chat/chat-system.service'; import { MessageService } from 'src/app/services/chat/message.service'; -import { AttachmentsService } from 'src/app/services/attachments.service'; import { CameraService } from 'src/app/services/camera.service'; import { FileType } from 'src/app/models/fileType'; @@ -30,22 +24,11 @@ import { Camera, CameraResultType, CameraSource } from '@capacitor/camera'; import { VoiceRecorder, RecordingData, GenericResponse } from 'capacitor-voice-recorder'; import { Filesystem, Directory } from '@capacitor/filesystem'; import { DomSanitizer } from '@angular/platform-browser'; -import { AlertController } from '@ionic/angular'; import { File } from '@awesome-cordova-plugins/file/ngx'; import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx'; import { SessionStore } from 'src/app/store/session.service'; -import { HttpErrorResponse } from '@angular/common/http'; import { ViewMediaPage } from 'src/app/modals/view-media/view-media.page'; - -/* -import * as pdfjsLib from 'pdfjs-dist'; -if( pdfjsLib !== undefined ){ - - pdfjsLib.GlobalWorkerOptions.workerSrc = "https://npmcdn.com/pdfjs-dist@2.4.456/build/pdf.worker.js"; -} -*/ - @Component({ selector: 'app-group-messages', templateUrl: './group-messages.page.html', @@ -60,7 +43,6 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe allUsers: any[] = []; documents: SearchList[] = []; - room: any = new Array(); roomName: any; members: any; @@ -88,7 +70,6 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe @ViewChild('scrollMe') private myScrollContainer: ElementRef; - pdfurl = "http://www.africau.edu/images/default/sample.pdf"; downloadFile: any; showAvatar = false; @@ -106,54 +87,38 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe groupNameFormart = ""; constructor( - public wsChatMethodsService: WsChatMethodsService, + public ChatSystemService: ChatSystemService, private modalController: ModalController, public popoverController: PopoverController, private chatService: ChatService, - private authService: AuthService, private animationController: AnimationController, private alertService: AlertService, - private route: Router, private timeService: TimeService, - private fileLoaderService: FileLoaderService, - private fileToBase64Service: FileToBase64Service, - private processesService: ProcessesService, private fileService: FileService, public ThemeService: ThemeService, - private changeDetectorRef: ChangeDetectorRef, private storage: Storage, - private AttachmentsService: AttachmentsService, - private CameraService: CameraService, private toastService: ToastService, private sanitiser: DomSanitizer, - private alertController: AlertController, private file: File, private platform: Platform, private fileOpener: FileOpener, - - - ) { - this.loggedUserChat = authService.ValidatedUserChat['data']; + this.loggedUserChat = SessionStore.user.ChatData['data']; this.isGroupCreated = true; this.roomCountDownDate = ""; this.roomCountDownTime = ""; } ngOnChanges(changes: SimpleChanges): void { - this.getRoomInfo(); - //this.scrollToBottom(); - this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory({}); + this.ChatSystemService.getGroupRoom(this.roomId).loadHistory({}); // - this.wsChatMethodsService.openRoom(this.roomId) - this.wsChatMethodsService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked - this.groupNameFormart = this.wsChatMethodsService.getGroupRoom(this.roomId).name.split('-').join(' ') - - + this.ChatSystemService.openRoom(this.roomId) + this.ChatSystemService.getGroupRoom(this.roomId).scrollDown = this.scrollToBottomClicked + this.groupNameFormart = this.ChatSystemService.getGroupRoom(this.roomId).name.split('-').join(' ') this.showAvatar = false @@ -167,14 +132,12 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } ngOnInit() { - this.chatService.refreshtoken(); // console.log(this.roomId) this.loggedUser = this.loggedUserChat; //setTimeout(() => { this.getRoomInfo() //}, 1000); this.getChatMembers(); - //this.getMessageDB(); this.deleteRecording(); this.loadFiles(); @@ -185,7 +148,6 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } countDownDate() { - //this.roomCountDownTime = this.timeService.countDownDateTimer(this.roomCountDownDate, this.room._id); return this.timeService.countDownDateTimer(this.roomCountDownDate, this.roomId); } @@ -213,7 +175,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } catch (err) { } } - async goToEvent(eventId: any) { + async goToEvent(event: any) { let classs; if (window.innerWidth < 701) { classs = 'modal modal-desktop' @@ -224,7 +186,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe const modal = await this.modalController.create({ component: ViewEventPage, componentProps: { - eventId: eventId, + eventId: event.id, + CalendarId: event.calendarId }, cssClass: classs, }); @@ -406,12 +369,21 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } async getRoomInfo() { - this.wsChatMethodsService.getGroupRoom(this.roomId).loadHistory({}); + + if(this.ChatSystemService.getGroupRoom(this.roomId)) { + this.ChatSystemService.getGroupRoom(this.roomId).loadHistory({}); + } + let room = await this.chatService.getRoomInfo(this.roomId).toPromise(); // console.log('ROOM',room) this.room = room['room']; if (this.room.name) { - this.roomName = this.room.name.split('-').join(' '); + try { + this.roomName = this.room.name.split('-').join(' '); + } catch (error) { + this.roomName = this.room.name; + } + } @@ -429,27 +401,29 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } getGroupContacts(room: any) { - this.showLoader = true; - //If group is private call getGroupMembers - if (room.t === 'p') { - this.chatService.getGroupMembers(this.roomId).subscribe(res => { - // - this.members = res['members']; - this.showLoader = false; - }); - } - //Otherwise call getChannelMembers for públic groups - else { - this.chatService.getChannelMembers(this.roomId).subscribe(res => { + // this.showLoader = true; + // //If group is private call getGroupMembers + // if (room.t === 'p') { + // this.chatService.getGroupMembers(this.roomId).subscribe(res => { + // // + // this.members = res['members']; + // this.showLoader = false; + // }); + // } + // //Otherwise call getChannelMembers for públic groups + // else { + // this.chatService.getChannelMembers(this.roomId).subscribe(res => { - this.members = res['members']; - this.showLoader = false; - }); - } + // this.members = res['members']; + // this.showLoader = false; + // }); + // } + + this.members = this.ChatSystemService.getGroupRoom(this.roomId).members } sendMessage() { - this.wsChatMethodsService.getGroupRoom(this.roomId).send({}) + this.ChatSystemService.getGroupRoom(this.roomId).send({}) } base64toBlob(base64Data, contentType) { @@ -494,7 +468,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": "application/audio", "msDuration": audioFile.value.msDuration, @@ -513,7 +487,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe } deleteMessage(msgId: string) { - const room = this.wsChatMethodsService.getGroupRoom(this.roomId) + const room = this.ChatSystemService.getGroupRoom(this.roomId) this.alertService.confirmDeleteMessage(msgId, room); } @@ -541,26 +515,11 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe return enterAnimation(baseEl).direction('reverse'); } - - /* const popover = await this.popoverController.create({ - component: MessagesOptionsPage, - componentProps: { - roomId: this.dm._id, - }, - cssClass: 'messages-options', - event: ev, - translucent: true, - }); - return await popover.present(); */ - - - - const modal = await this.modalController.create({ enterAnimation, leaveAnimation, component: ChatPopoverPage, - cssClass: 'model profile-modal search-submodal', + cssClass: 'model profile-modal search-submodal chat-aside', componentProps: { roomId: this.roomId, members: this.members, @@ -574,7 +533,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe this.getRoomInfo(); this.closeAllDesktopComponents.emit(); this.showEmptyContainer.emit(); - this.wsChatMethodsService.hidingRoom(this.roomId); + this.ChatSystemService.hidingRoom(this.roomId); } else if (res.data == 'delete') { this.closeAllDesktopComponents.emit(); @@ -589,7 +548,17 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe this.openEditGroupPage.emit(this.roomId); } else { - this.roomName = res.data.name.split('-').join(' '); + + if(res?.data?.name) { + try { + this.roomName = res.data.name.split('-').join(' '); + } catch (error) { + console.log(error); + console.log(res.data) + this.roomName = res.data.name + + } + } }; @@ -767,7 +736,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": "application/img", "guid": '', @@ -796,7 +765,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": "application/img", "guid": '' @@ -837,7 +806,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe if (data.selected) { - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "name": res.data.selected.Assunto, "type": "application/webtrix", @@ -883,7 +852,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": "application/img", "guid": '' @@ -916,7 +885,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe const formData = new FormData(); formData.append("blobFile", blob); - this.wsChatMethodsService.getGroupRoom(roomId).send({ + this.ChatSystemService.getGroupRoom(roomId).send({ file: { "type": file.type, "guid": '', @@ -1118,23 +1087,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe if (this.platform.is('desktop') || this.platform.is('mobileweb')) { - if (msg.file.type == "application/img") { - const modal = await this.modalController.create({ - component: ViewMediaPage, - cssClass: 'modal modal-desktop', - componentProps: { - image: msg.attachments[0].image_url, - type: msg.file.type, - username: msg.u.name, - _updatedAt: msg._updatedAt - } - }); - modal.present(); - } else { - this.downloadFileFromBrowser(msg.attachments[0].name, str) - } + console.log(msg) - } else { if (msg.file.type == "application/img") { const modal = await this.modalController.create({ component: ViewMediaPage, @@ -1148,8 +1102,10 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe }); modal.present(); } else { - this.openFile(str, msg.attachments[0].name, msg.file.type); + this.downloadFileFromBrowser("file", str) } + } else { + this.openFile(str, msg.attachments[0].name, msg.file.type); } } diff --git a/src/app/shared/chat/messages/contacts/contacts.page.html b/src/app/shared/chat/messages/contacts/contacts.page.html index ba60cce1e..11b11f721 100644 --- a/src/app/shared/chat/messages/contacts/contacts.page.html +++ b/src/app/shared/chat/messages/contacts/contacts.page.html @@ -2,12 +2,14 @@
-
- - +
+ + +
- Nova Conversa + + Nova Conversas
@@ -22,25 +24,24 @@ - - - - + + + +
- +
{{header}}
-

{{user.name}}

- - - - +

{{user.name}}

+ + +
diff --git a/src/app/shared/chat/messages/contacts/contacts.page.ts b/src/app/shared/chat/messages/contacts/contacts.page.ts index cf0821c9b..1cf48b0bb 100644 --- a/src/app/shared/chat/messages/contacts/contacts.page.ts +++ b/src/app/shared/chat/messages/contacts/contacts.page.ts @@ -1,11 +1,10 @@ -import { HttpErrorResponse, HttpHeaders } from '@angular/common/http'; -import { Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { HttpHeaders } from '@angular/common/http'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { ModalController } from '@ionic/angular'; -import { AuthService } from 'src/app/services/auth.service'; import { ChatService } from 'src/app/services/chat.service'; import { MessagesPage } from '../messages.page'; import { ThemeService } from 'src/app/services/theme.service' -import { WsChatMethodsService} from 'src/app/services/chat/ws-chat-methods.service' +import { ChatSystemService } from 'src/app/services/chat/chat-system.service' import { SessionStore } from 'src/app/store/session.service'; @Component({ @@ -14,44 +13,43 @@ import { SessionStore } from 'src/app/store/session.service'; styleUrls: ['./contacts.page.scss'], }) export class ContactsPage implements OnInit { - showLoader: boolean; loggedUser: any; - users = []; headers: HttpHeaders; options:any; - contacts:any; textSearch:string; room:any; dm:any; sessionStore = SessionStore + @Input() roomId: string; @Output() openMessage:EventEmitter = new EventEmitter(); + @Output() emptyTextDescriptionOpen:EventEmitter = new EventEmitter(); + @Output() backToChat:EventEmitter = new EventEmitter(); + @Output() closeAllDesktopComponents:EventEmitter = new EventEmitter(); constructor( private modalController: ModalController, private chatService: ChatService, - private authService: AuthService, public ThemeService: ThemeService, - public WsChatMethodsService: WsChatMethodsService + public ChatSystemService: ChatSystemService ) { - this.loggedUser = authService.ValidatedUserChat['data']; + this.loggedUser = SessionStore.user.ChatData['data']; this.textSearch=""; this.dm=null; this.room=null; } - ngOnInit() { + async ngOnInit() { this.loadUsers(); - this.chatService.refreshtoken(); } - onChange(event){ + onChange(event) { this.textSearch = event.detail.value; } - openMessagesPage(username:string){ + openMessagesPage(username:string) { if( window.innerWidth < 701){ this.createRoom(username); } @@ -67,49 +65,37 @@ export class ContactsPage implements OnInit { } } - loadUsers(){ - this.options = { - headers: this.headers, - }; - this.chatService.getAllUsers().subscribe((res:any)=>{ - - //this.contacts = res.users.filter(data => data.username != this.sessionStore.user.UserName); - this.contacts = res.users.filter(data => data.username != this.sessionStore.user.UserName); - this.users = this.contacts.sort((a,b) => { - if(a.name < b.name){ - return -1; - } - if(a.name > b.name){ - return 1; - } - return 0; - }); - this.showLoader = false; - }); + loadUsers() { + this.ChatSystemService.getUser() } - separateLetter(record, recordIndex, records){ - if(recordIndex == 0){ + separateLetter(record, recordIndex, records) { + if(recordIndex == 0) { return record.name[0]; } let first_prev = records[recordIndex - 1].name[0]; let first_current = record.name[0]; - if(first_prev != first_current){ + if(first_prev != first_current) { return first_current; } return null; } - doRefresh(event){ + doRefresh(event) { } - close(){ - this.modalController.dismiss(); + close() { + if(this.roomId) { + this.backToChat.emit({roomId: this.roomId}); + } else { + this.closeAllDesktopComponents.emit(); + } + } - clicked(){ + clicked() { } @@ -121,7 +107,7 @@ export class ContactsPage implements OnInit { this.room = res['room']; this.openMessagesModal(this.room._id); - this.WsChatMethodsService.getAllRooms() + this.ChatSystemService.getAllRooms() }); } @@ -145,22 +131,8 @@ export class ContactsPage implements OnInit { let dm:any; //Create new room - this.createRoom(username); - //Get direct messages (dm) - /* this.getDirectMessage(this.room._id); */ - + this.createRoom(username); - - /* const modal = await this.modalController.create({ - component: MessagesPage, - cssClass: 'group-messages', - backdropDismiss: false, - componentProps: { - dm: dm, - }, - }); - await modal.present(); - modal.onDidDismiss(); */ } } diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 66482dde6..f4236f3bd 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -3,8 +3,9 @@
- {{ wsChatMethodsService.getDmRoom(roomId).name }} - + {{ ChatSystemService.getDmRoom(this.roomId).name }} + +