mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-13 16:33:01 -06:00
Version 6.3.2
This commit is contained in:
parent
c57489f376
commit
6beae3869b
|
|
@ -13,6 +13,12 @@ _v6.3.1_
|
|||
- Playback mode catch up to live, then swith to livefeed mode.
|
||||
- Removed the mutex lock on Clients.Count which led to a deadlock and froze call ingestion.
|
||||
|
||||
_v6.3.2_
|
||||
|
||||
- New #TGLBL metatag for dirwatch for ProScan (%C) or alike.
|
||||
- Fix `semacquire` lockup in Clients (issue #177, #181, #182).
|
||||
- Replay button now replays from history if pressed multiple times quickly (issue #186).
|
||||
|
||||
## Version 6.2
|
||||
|
||||
- New max clients options which is 200 by default.
|
||||
|
|
|
|||
16
COMPILING.md
16
COMPILING.md
|
|
@ -27,13 +27,13 @@ Clone the official repository on your computer and start the build process.
|
|||
|
||||
When finished, you will find the precompiled versions for various platforms in the `dist` folder.
|
||||
|
||||
rdio-scanner-darwin-amd64-v6.3.1.zip
|
||||
rdio-scanner-darwin-arm64-v6.3.1.zip
|
||||
rdio-scanner-freebsd-amd64-v6.3.1.zip
|
||||
rdio-scanner-linux-386-v6.3.1.zip
|
||||
rdio-scanner-linux-amd64-v6.3.1.zip
|
||||
rdio-scanner-linux-arm64-v6.3.1.zip
|
||||
rdio-scanner-linux-arm-v6.3.1.zip
|
||||
rdio-scanner-windows-amd64-v6.3.1.zip
|
||||
rdio-scanner-darwin-amd64-v6.3.2.zip
|
||||
rdio-scanner-darwin-arm64-v6.3.2.zip
|
||||
rdio-scanner-freebsd-amd64-v6.3.2.zip
|
||||
rdio-scanner-linux-386-v6.3.2.zip
|
||||
rdio-scanner-linux-amd64-v6.3.2.zip
|
||||
rdio-scanner-linux-arm64-v6.3.2.zip
|
||||
rdio-scanner-linux-arm-v6.3.2.zip
|
||||
rdio-scanner-windows-amd64-v6.3.2.zip
|
||||
|
||||
**Happy Rdio scanning !**
|
||||
4
Makefile
4
Makefile
|
|
@ -16,8 +16,8 @@
|
|||
################################################################################
|
||||
|
||||
app := rdio-scanner
|
||||
date := 2022/05/20
|
||||
ver := 6.3.1
|
||||
date := 2022/05/21
|
||||
ver := 6.3.2
|
||||
|
||||
client := $(wildcard client/*.json client/*.ts)
|
||||
server := $(wildcard server/*.go)
|
||||
|
|
|
|||
390
client/package-lock.json
generated
390
client/package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "rdio-scanner",
|
||||
"version": "6.3.1",
|
||||
"version": "6.3.2",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "rdio-scanner",
|
||||
"version": "6.3.1",
|
||||
"version": "6.3.2",
|
||||
"license": "LICENSE",
|
||||
"dependencies": {
|
||||
"@angular/animations": "^13.3.9",
|
||||
|
|
@ -477,21 +477,21 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@angular/compiler-cli/node_modules/@babel/core": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.12.tgz",
|
||||
"integrity": "sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz",
|
||||
"integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.1.0",
|
||||
"@babel/code-frame": "^7.16.7",
|
||||
"@babel/generator": "^7.17.12",
|
||||
"@babel/generator": "^7.18.0",
|
||||
"@babel/helper-compilation-targets": "^7.17.10",
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helpers": "^7.17.9",
|
||||
"@babel/parser": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helpers": "^7.18.0",
|
||||
"@babel/parser": "^7.18.0",
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.12",
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/traverse": "^7.18.0",
|
||||
"@babel/types": "^7.18.0",
|
||||
"convert-source-map": "^1.7.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.2",
|
||||
|
|
@ -516,12 +516,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@angular/compiler-cli/node_modules/@babel/generator": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.12.tgz",
|
||||
"integrity": "sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz",
|
||||
"integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/types": "^7.18.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"jsesc": "^2.5.1"
|
||||
},
|
||||
|
|
@ -828,9 +828,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz",
|
||||
"integrity": "sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz",
|
||||
"integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-annotate-as-pure": "^7.16.7",
|
||||
|
|
@ -966,9 +966,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helper-module-transforms": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz",
|
||||
"integrity": "sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz",
|
||||
"integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-environment-visitor": "^7.16.7",
|
||||
|
|
@ -977,8 +977,8 @@
|
|||
"@babel/helper-split-export-declaration": "^7.16.7",
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.12",
|
||||
"@babel/types": "^7.17.12"
|
||||
"@babel/traverse": "^7.18.0",
|
||||
"@babel/types": "^7.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
|
@ -1105,14 +1105,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
|
||||
"integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz",
|
||||
"integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.9",
|
||||
"@babel/types": "^7.17.0"
|
||||
"@babel/traverse": "^7.18.0",
|
||||
"@babel/types": "^7.18.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
|
@ -1133,9 +1133,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.12.tgz",
|
||||
"integrity": "sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz",
|
||||
"integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
|
|
@ -1210,12 +1210,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-proposal-class-static-block": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz",
|
||||
"integrity": "sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz",
|
||||
"integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-create-class-features-plugin": "^7.17.12",
|
||||
"@babel/helper-create-class-features-plugin": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"@babel/plugin-syntax-class-static-block": "^7.14.5"
|
||||
},
|
||||
|
|
@ -1323,9 +1323,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-proposal-object-rest-spread": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz",
|
||||
"integrity": "sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz",
|
||||
"integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.17.10",
|
||||
|
|
@ -1701,9 +1701,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-destructuring": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz",
|
||||
"integrity": "sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz",
|
||||
"integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.17.12"
|
||||
|
|
@ -1763,9 +1763,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-for-of": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz",
|
||||
"integrity": "sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg==",
|
||||
"version": "7.18.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz",
|
||||
"integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.17.12"
|
||||
|
|
@ -1825,12 +1825,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-modules-amd": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz",
|
||||
"integrity": "sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz",
|
||||
"integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3"
|
||||
},
|
||||
|
|
@ -1842,12 +1842,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz",
|
||||
"integrity": "sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz",
|
||||
"integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"@babel/helper-simple-access": "^7.17.7",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3"
|
||||
|
|
@ -1860,13 +1860,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-modules-systemjs": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz",
|
||||
"integrity": "sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz",
|
||||
"integrity": "sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-hoist-variables": "^7.16.7",
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3"
|
||||
|
|
@ -1879,12 +1879,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-modules-umd": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz",
|
||||
"integrity": "sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz",
|
||||
"integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12"
|
||||
},
|
||||
"engines": {
|
||||
|
|
@ -1972,11 +1972,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-regenerator": {
|
||||
"version": "7.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz",
|
||||
"integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz",
|
||||
"integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"regenerator-transform": "^0.15.0"
|
||||
},
|
||||
"engines": {
|
||||
|
|
@ -2277,19 +2278,19 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.12.tgz",
|
||||
"integrity": "sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz",
|
||||
"integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.16.7",
|
||||
"@babel/generator": "^7.17.12",
|
||||
"@babel/generator": "^7.18.0",
|
||||
"@babel/helper-environment-visitor": "^7.16.7",
|
||||
"@babel/helper-function-name": "^7.17.9",
|
||||
"@babel/helper-hoist-variables": "^7.16.7",
|
||||
"@babel/helper-split-export-declaration": "^7.16.7",
|
||||
"@babel/parser": "^7.17.12",
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/parser": "^7.18.0",
|
||||
"@babel/types": "^7.18.0",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
|
|
@ -2298,12 +2299,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/traverse/node_modules/@babel/generator": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.12.tgz",
|
||||
"integrity": "sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz",
|
||||
"integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/types": "^7.18.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"jsesc": "^2.5.1"
|
||||
},
|
||||
|
|
@ -2326,9 +2327,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.12.tgz",
|
||||
"integrity": "sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz",
|
||||
"integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
|
|
@ -2401,15 +2402,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz",
|
||||
"integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
|
||||
"integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.3.2",
|
||||
"globals": "^13.9.0",
|
||||
"globals": "^13.15.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
"js-yaml": "^4.1.0",
|
||||
|
|
@ -5686,12 +5687,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.15.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz",
|
||||
"integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==",
|
||||
"version": "8.16.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz",
|
||||
"integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint/eslintrc": "^1.2.3",
|
||||
"@eslint/eslintrc": "^1.3.0",
|
||||
"@humanwhocodes/config-array": "^0.9.2",
|
||||
"ajv": "^6.10.0",
|
||||
"chalk": "^4.0.0",
|
||||
|
|
@ -5709,7 +5710,7 @@
|
|||
"file-entry-cache": "^6.0.1",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"glob-parent": "^6.0.1",
|
||||
"globals": "^13.6.0",
|
||||
"globals": "^13.15.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
|
|
@ -8647,9 +8648,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/npm-registry-fetch/node_modules/make-fetch-happen": {
|
||||
"version": "10.1.4",
|
||||
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.4.tgz",
|
||||
"integrity": "sha512-hU1w68PqfH7FdMgjbiziJoACY0edlbIZ0CyKnpcEruVdCjsUrN+qoenOCIayNqVBK7toSWwbDxvQlrhH0gjRdg==",
|
||||
"version": "10.1.5",
|
||||
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.5.tgz",
|
||||
"integrity": "sha512-mucOj2H0Jn/ax7H9K9T1bf0p1nn/mBFa551Os7ed9xRfLEx20aZhZeLslmRYfAaAqXZUGipcs+m5KOKvOH0XKA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"agentkeepalive": "^4.2.1",
|
||||
|
|
@ -8703,9 +8704,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/npm-registry-fetch/node_modules/ssri": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.0.tgz",
|
||||
"integrity": "sha512-Y1Z6J8UYnexKFN1R/hxUaYoY2LVdKEzziPmVAFKiKX8fiwvCJTVzn/xYE9TEWod5OVyNfIHHuVfIEuBClL/uJQ==",
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
|
||||
"integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"minipass": "^3.1.1"
|
||||
|
|
@ -9371,9 +9372,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-color-functional-notation": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz",
|
||||
"integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==",
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz",
|
||||
"integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
|
|
@ -9381,6 +9382,10 @@
|
|||
"engines": {
|
||||
"node": "^12 || ^14 || >=16"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/csstools"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"postcss": "^8.4"
|
||||
}
|
||||
|
|
@ -9725,9 +9730,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-nesting": {
|
||||
"version": "10.1.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.6.tgz",
|
||||
"integrity": "sha512-8C0X0pOOShlgqYkCzB4wlWLyulos+GXFpw7r2+x7g+ROQ1RwN8MlN2NCcpNQScNBPfbjxbjwY8e25raTcEXqmg==",
|
||||
"version": "10.1.7",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.7.tgz",
|
||||
"integrity": "sha512-Btho5XzDTpl117SmB3tvUHP8txg5n7Ayv7vQ5m4b1zXkfs1Y52C67uZjZ746h7QvOJ+rLRg50OlhhjFW+IQY6A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@csstools/selector-specificity": "1.0.0",
|
||||
|
|
@ -12411,21 +12416,21 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@babel/core": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.12.tgz",
|
||||
"integrity": "sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz",
|
||||
"integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@ampproject/remapping": "^2.1.0",
|
||||
"@babel/code-frame": "^7.16.7",
|
||||
"@babel/generator": "^7.17.12",
|
||||
"@babel/generator": "^7.18.0",
|
||||
"@babel/helper-compilation-targets": "^7.17.10",
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helpers": "^7.17.9",
|
||||
"@babel/parser": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helpers": "^7.18.0",
|
||||
"@babel/parser": "^7.18.0",
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.12",
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/traverse": "^7.18.0",
|
||||
"@babel/types": "^7.18.0",
|
||||
"convert-source-map": "^1.7.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.2",
|
||||
|
|
@ -12442,12 +12447,12 @@
|
|||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.12.tgz",
|
||||
"integrity": "sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz",
|
||||
"integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/types": "^7.18.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"jsesc": "^2.5.1"
|
||||
}
|
||||
|
|
@ -12647,9 +12652,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.12.tgz",
|
||||
"integrity": "sha512-sZoOeUTkFJMyhqCei2+Z+wtH/BehW8NVKQt7IRUQlRiOARuXymJYfN/FCcI8CvVbR0XVyDM6eLFOlR7YtiXnew==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz",
|
||||
"integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.16.7",
|
||||
|
|
@ -12751,9 +12756,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.12.tgz",
|
||||
"integrity": "sha512-t5s2BeSWIghhFRPh9XMn6EIGmvn8Lmw5RVASJzkIx1mSemubQQBNIZiQD7WzaFmaHIrjAec4x8z9Yx8SjJ1/LA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz",
|
||||
"integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-environment-visitor": "^7.16.7",
|
||||
|
|
@ -12762,8 +12767,8 @@
|
|||
"@babel/helper-split-export-declaration": "^7.16.7",
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.12",
|
||||
"@babel/types": "^7.17.12"
|
||||
"@babel/traverse": "^7.18.0",
|
||||
"@babel/types": "^7.18.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-optimise-call-expression": {
|
||||
|
|
@ -12857,14 +12862,14 @@
|
|||
}
|
||||
},
|
||||
"@babel/helpers": {
|
||||
"version": "7.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
|
||||
"integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz",
|
||||
"integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/template": "^7.16.7",
|
||||
"@babel/traverse": "^7.17.9",
|
||||
"@babel/types": "^7.17.0"
|
||||
"@babel/traverse": "^7.18.0",
|
||||
"@babel/types": "^7.18.0"
|
||||
}
|
||||
},
|
||||
"@babel/highlight": {
|
||||
|
|
@ -12879,9 +12884,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.12.tgz",
|
||||
"integrity": "sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz",
|
||||
"integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
|
||||
|
|
@ -12926,12 +12931,12 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-proposal-class-static-block": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.12.tgz",
|
||||
"integrity": "sha512-8ILyDG6eL14F8iub97dVc8q35Md0PJYAnA5Kz9NACFOkt6ffCcr0FISyUPKHsvuAy36fkpIitxZ9bVYPFMGQHA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz",
|
||||
"integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-create-class-features-plugin": "^7.17.12",
|
||||
"@babel/helper-create-class-features-plugin": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"@babel/plugin-syntax-class-static-block": "^7.14.5"
|
||||
}
|
||||
|
|
@ -12997,9 +13002,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-proposal-object-rest-spread": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.12.tgz",
|
||||
"integrity": "sha512-6l9cO3YXXRh4yPCPRA776ZyJ3RobG4ZKJZhp7NDRbKIOeV3dBPG8FXCF7ZtiO2RTCIOkQOph1xDDcc01iWVNjQ==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz",
|
||||
"integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/compat-data": "^7.17.10",
|
||||
|
|
@ -13252,9 +13257,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-destructuring": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.12.tgz",
|
||||
"integrity": "sha512-P8pt0YiKtX5UMUL5Xzsc9Oyij+pJE6JuC+F1k0/brq/OOGs5jDa1If3OY0LRWGvJsJhI+8tsiecL3nJLc0WTlg==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz",
|
||||
"integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.17.12"
|
||||
|
|
@ -13290,9 +13295,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-for-of": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.17.12.tgz",
|
||||
"integrity": "sha512-76lTwYaCxw8ldT7tNmye4LLwSoKDbRCBzu6n/DcK/P3FOR29+38CIIaVIZfwol9By8W/QHORYEnYSLuvcQKrsg==",
|
||||
"version": "7.18.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz",
|
||||
"integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.17.12"
|
||||
|
|
@ -13328,48 +13333,48 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-amd": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.17.12.tgz",
|
||||
"integrity": "sha512-p5rt9tB5Ndcc2Za7CeNxVf7YAjRcUMR6yi8o8tKjb9KhRkEvXwa+C0hj6DA5bVDkKRxB0NYhMUGbVKoFu4+zEA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz",
|
||||
"integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.12.tgz",
|
||||
"integrity": "sha512-tVPs6MImAJz+DiX8Y1xXEMdTk5Lwxu9jiPjlS+nv5M2A59R7+/d1+9A8C/sbuY0b3QjIxqClkj6KAplEtRvzaA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz",
|
||||
"integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"@babel/helper-simple-access": "^7.17.7",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-systemjs": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.12.tgz",
|
||||
"integrity": "sha512-NVhDb0q00hqZcuLduUf/kMzbOQHiocmPbIxIvk23HLiEqaTKC/l4eRxeC7lO63M72BmACoiKOcb9AkOAJRerpw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz",
|
||||
"integrity": "sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-hoist-variables": "^7.16.7",
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
"babel-plugin-dynamic-import-node": "^2.3.3"
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-umd": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.17.12.tgz",
|
||||
"integrity": "sha512-BnsPkrUHsjzZGpnrmJeDFkOMMljWFHPjDc9xDcz71/C+ybF3lfC3V4m3dwXPLZrE5b3bgd4V+3/Pj+3620d7IA==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz",
|
||||
"integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-module-transforms": "^7.17.12",
|
||||
"@babel/helper-module-transforms": "^7.18.0",
|
||||
"@babel/helper-plugin-utils": "^7.17.12"
|
||||
}
|
||||
},
|
||||
|
|
@ -13421,11 +13426,12 @@
|
|||
}
|
||||
},
|
||||
"@babel/plugin-transform-regenerator": {
|
||||
"version": "7.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz",
|
||||
"integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz",
|
||||
"integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.17.12",
|
||||
"regenerator-transform": "^0.15.0"
|
||||
}
|
||||
},
|
||||
|
|
@ -13649,30 +13655,30 @@
|
|||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.12.tgz",
|
||||
"integrity": "sha512-zULPs+TbCvOkIFd4FrG53xrpxvCBwLIgo6tO0tJorY7YV2IWFxUfS/lXDJbGgfyYt9ery/Gxj2niwttNnB0gIw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz",
|
||||
"integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.16.7",
|
||||
"@babel/generator": "^7.17.12",
|
||||
"@babel/generator": "^7.18.0",
|
||||
"@babel/helper-environment-visitor": "^7.16.7",
|
||||
"@babel/helper-function-name": "^7.17.9",
|
||||
"@babel/helper-hoist-variables": "^7.16.7",
|
||||
"@babel/helper-split-export-declaration": "^7.16.7",
|
||||
"@babel/parser": "^7.17.12",
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/parser": "^7.18.0",
|
||||
"@babel/types": "^7.18.0",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/generator": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.12.tgz",
|
||||
"integrity": "sha512-V49KtZiiiLjH/CnIW6OjJdrenrGoyh6AmKQ3k2AZFKozC1h846Q4NYlZ5nqAigPDUXfGzC88+LOUuG8yKd2kCw==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz",
|
||||
"integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.17.12",
|
||||
"@babel/types": "^7.18.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.0",
|
||||
"jsesc": "^2.5.1"
|
||||
}
|
||||
|
|
@ -13691,9 +13697,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.17.12",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.12.tgz",
|
||||
"integrity": "sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg==",
|
||||
"version": "7.18.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz",
|
||||
"integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.16.7",
|
||||
|
|
@ -13738,15 +13744,15 @@
|
|||
"dev": true
|
||||
},
|
||||
"@eslint/eslintrc": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz",
|
||||
"integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz",
|
||||
"integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.3.2",
|
||||
"globals": "^13.9.0",
|
||||
"globals": "^13.15.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.2.1",
|
||||
"js-yaml": "^4.1.0",
|
||||
|
|
@ -16135,12 +16141,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "8.15.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz",
|
||||
"integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==",
|
||||
"version": "8.16.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz",
|
||||
"integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@eslint/eslintrc": "^1.2.3",
|
||||
"@eslint/eslintrc": "^1.3.0",
|
||||
"@humanwhocodes/config-array": "^0.9.2",
|
||||
"ajv": "^6.10.0",
|
||||
"chalk": "^4.0.0",
|
||||
|
|
@ -16158,7 +16164,7 @@
|
|||
"file-entry-cache": "^6.0.1",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"glob-parent": "^6.0.1",
|
||||
"globals": "^13.6.0",
|
||||
"globals": "^13.15.0",
|
||||
"ignore": "^5.2.0",
|
||||
"import-fresh": "^3.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
|
|
@ -18353,9 +18359,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"make-fetch-happen": {
|
||||
"version": "10.1.4",
|
||||
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.4.tgz",
|
||||
"integrity": "sha512-hU1w68PqfH7FdMgjbiziJoACY0edlbIZ0CyKnpcEruVdCjsUrN+qoenOCIayNqVBK7toSWwbDxvQlrhH0gjRdg==",
|
||||
"version": "10.1.5",
|
||||
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.5.tgz",
|
||||
"integrity": "sha512-mucOj2H0Jn/ax7H9K9T1bf0p1nn/mBFa551Os7ed9xRfLEx20aZhZeLslmRYfAaAqXZUGipcs+m5KOKvOH0XKA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"agentkeepalive": "^4.2.1",
|
||||
|
|
@ -18400,9 +18406,9 @@
|
|||
}
|
||||
},
|
||||
"ssri": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.0.tgz",
|
||||
"integrity": "sha512-Y1Z6J8UYnexKFN1R/hxUaYoY2LVdKEzziPmVAFKiKX8fiwvCJTVzn/xYE9TEWod5OVyNfIHHuVfIEuBClL/uJQ==",
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
|
||||
"integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"minipass": "^3.1.1"
|
||||
|
|
@ -18914,9 +18920,9 @@
|
|||
}
|
||||
},
|
||||
"postcss-color-functional-notation": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.2.tgz",
|
||||
"integrity": "sha512-DXVtwUhIk4f49KK5EGuEdgx4Gnyj6+t2jBSEmxvpIK9QI40tWrpS2Pua8Q7iIZWBrki2QOaeUdEaLPPa91K0RQ==",
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz",
|
||||
"integrity": "sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"postcss-value-parser": "^4.2.0"
|
||||
|
|
@ -19124,9 +19130,9 @@
|
|||
}
|
||||
},
|
||||
"postcss-nesting": {
|
||||
"version": "10.1.6",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.6.tgz",
|
||||
"integrity": "sha512-8C0X0pOOShlgqYkCzB4wlWLyulos+GXFpw7r2+x7g+ROQ1RwN8MlN2NCcpNQScNBPfbjxbjwY8e25raTcEXqmg==",
|
||||
"version": "10.1.7",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.7.tgz",
|
||||
"integrity": "sha512-Btho5XzDTpl117SmB3tvUHP8txg5n7Ayv7vQ5m4b1zXkfs1Y52C67uZjZ746h7QvOJ+rLRg50OlhhjFW+IQY6A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@csstools/selector-specificity": "1.0.0",
|
||||
|
|
|
|||
|
|
@ -38,5 +38,5 @@
|
|||
"build": "ng build --base-href ./ --configuration production",
|
||||
"start": "ng serve"
|
||||
},
|
||||
"version": "6.3.1"
|
||||
"version": "6.3.2"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -717,7 +717,7 @@ export class RdioScannerAdminService implements OnDestroy {
|
|||
return null;
|
||||
}
|
||||
|
||||
const masks = ['#DATE', '#GROUP', '#HZ', '#KHZ', '#MHZ', '#SYS', '#SYSLBL', '#TAG', '#TG', '#TGAFS', '#TGHZ', '#TGKHZ', '#TGMHZ', '#TIME', '#UNIT', '#ZTIME'];
|
||||
const masks = ['#DATE', '#GROUP', '#HZ', '#KHZ', '#MHZ', '#SYS', '#SYSLBL', '#TAG', '#TG', '#TGAFS', '#TGHZ', '#TGKHZ', '#TGLBL', '#TGMHZ', '#TIME', '#UNIT', '#ZTIME'];
|
||||
|
||||
const metas = control.value.match(/(#[A-Z]+)/g) || [];
|
||||
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
<li><b>#TGAFS</b> - extract the talkgroup id like 11-061 in AFS (agency-fleet-subfleet) format.</li>
|
||||
<li><b>#TGHZ</b> - extract the frequency in hertz like 119100000 and set the talkgroup id to 119100.</li>
|
||||
<li><b>#TGKHZ</b> - extract the frequency in kilohertz like 119100.000 or 119100 and set the talkgroup id to 119100.</li>
|
||||
<li><b>#TGLBL</b> - extract the talkgroup label.</li>
|
||||
<li><b>#TGMHZ</b> - extract the frequency in megahertz like 119.100000 or 119 and set the talkgroup id to 119100.</li>
|
||||
<li><b>#TIME</b> - extract the local time like 0853439 (HHMMSS), 08-34-39 (HH-MM-SS) or 08:34:39 (HH:MM:SS).</li>
|
||||
<li><b>#UNIT</b> - extract the unit id like 4424001.</li>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
call: RdioScannerCall | undefined;
|
||||
callError = '0';
|
||||
callFrequency: string = this.formatFrequency(0);
|
||||
callHistory: RdioScannerCall[] = new Array<RdioScannerCall>(5);
|
||||
callHistory: RdioScannerCall[] | undefined;
|
||||
callPrevious: RdioScannerCall | undefined;
|
||||
callProgress = new Date(0, 0, 0, 0, 0, 0);
|
||||
callQueue = 0;
|
||||
|
|
@ -125,7 +125,9 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
private rdioScannerService: RdioScannerService,
|
||||
private ngChangeDetectorRef: ChangeDetectorRef,
|
||||
private ngFormBuilder: FormBuilder,
|
||||
) { }
|
||||
) {
|
||||
this.callHistory = this.rdioScannerService.getHistory();
|
||||
}
|
||||
|
||||
authenticate(password = this.authForm.value.password): void {
|
||||
this.authForm.disable();
|
||||
|
|
@ -356,7 +358,7 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
const password = this.authForm.get('password')?.value;
|
||||
|
||||
if (password) {
|
||||
window?.localStorage?.setItem(LOCAL_STORAGE_KEY, btoa(password));
|
||||
window?.localStorage?.setItem(LOCAL_STORAGE_KEY, window.btoa(password));
|
||||
|
||||
this.authForm.reset();
|
||||
}
|
||||
|
|
@ -374,6 +376,10 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
this.authForm.get('password')?.setErrors({ expired: true });
|
||||
}
|
||||
|
||||
if ('history' in event) {
|
||||
this.callHistory = event.history || [];
|
||||
}
|
||||
|
||||
if ('holdSys' in event) {
|
||||
this.holdSys = event.holdSys || false;
|
||||
}
|
||||
|
|
@ -524,16 +530,6 @@ export class RdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
|
||||
this.callUnit = typeof this.call.source === 'number' ? `${this.call.source}` : '';
|
||||
}
|
||||
|
||||
if (
|
||||
this.callPrevious &&
|
||||
this.callPrevious.id !== this.call.id &&
|
||||
!this.callHistory.find((call: RdioScannerCall) => call?.id === this.callPrevious?.id)
|
||||
) {
|
||||
this.callHistory.pop();
|
||||
|
||||
this.callHistory.unshift(this.callPrevious);
|
||||
}
|
||||
}
|
||||
|
||||
const call = this.call || this.callPrevious;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
private beepContext: AudioContext | undefined;
|
||||
|
||||
private call: RdioScannerCall | undefined;
|
||||
private callPrevious: RdioScannerCall | undefined;
|
||||
private callHistory: RdioScannerCall[] = new Array<RdioScannerCall>(5);
|
||||
private callQueue: RdioScannerCall[] = [];
|
||||
|
||||
private categories: RdioScannerCategory[] = [];
|
||||
|
|
@ -98,6 +98,9 @@ export class RdioScannerService implements OnDestroy {
|
|||
private playbackPending: number | undefined;
|
||||
private playbackRefreshing = false;
|
||||
|
||||
private replayDelay: Subscription | undefined;
|
||||
private replayOffset = 0;
|
||||
|
||||
private skipDelay: Subscription | undefined;
|
||||
|
||||
private websocket: WebSocket | undefined;
|
||||
|
|
@ -114,7 +117,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
}
|
||||
|
||||
authenticate(password: string): void {
|
||||
this.sendtoWebsocket(WebsocketCommand.Pin, btoa(password));
|
||||
this.sendtoWebsocket(WebsocketCommand.Pin, window.btoa(password));
|
||||
}
|
||||
|
||||
avoid(options: RdioScannerAvoidOptions = {}): void {
|
||||
|
|
@ -153,7 +156,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
});
|
||||
|
||||
} else {
|
||||
const call = this.call || this.callPrevious;
|
||||
const call = this.call || this.callHistory[0];
|
||||
|
||||
if (call) {
|
||||
const sys = call.system;
|
||||
|
|
@ -222,8 +225,12 @@ export class RdioScannerService implements OnDestroy {
|
|||
});
|
||||
}
|
||||
|
||||
getHistory(): RdioScannerCall[] {
|
||||
return this.callHistory;
|
||||
}
|
||||
|
||||
holdSystem(options?: { resubscribe?: boolean }): void {
|
||||
const call = this.call || this.callPrevious;
|
||||
const call = this.call || this.callHistory[0];
|
||||
|
||||
if (call && this.livefeedMap) {
|
||||
if (this.livefeedMapPriorToHoldSystem) {
|
||||
|
|
@ -277,7 +284,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
}
|
||||
|
||||
holdTalkgroup(options?: { resubscribe?: boolean }): void {
|
||||
const call = this.call || this.callPrevious;
|
||||
const call = this.call || this.callHistory[0];
|
||||
|
||||
if (call && this.livefeedMap) {
|
||||
if (this.livefeedMapPriorToHoldTalkgroup) {
|
||||
|
|
@ -501,7 +508,17 @@ export class RdioScannerService implements OnDestroy {
|
|||
}
|
||||
|
||||
replay(): void {
|
||||
this.play(this.call || this.callPrevious);
|
||||
if (this.replayDelay instanceof Subscription) {
|
||||
this.replayDelay.unsubscribe();
|
||||
this.replayOffset = Math.min(this.callHistory.length - 1, this.replayOffset + 1);
|
||||
}
|
||||
|
||||
this.replayDelay = timer(750).subscribe(() => {
|
||||
this.replayDelay = undefined;
|
||||
this.replayOffset = 0;
|
||||
});
|
||||
|
||||
this.play(this.replayOffset > 0 ? this.callHistory[this.replayOffset] : this.call || this.callHistory[0]);
|
||||
}
|
||||
|
||||
searchCalls(options: RdioScannerSearchOptions): void {
|
||||
|
|
@ -556,7 +573,11 @@ export class RdioScannerService implements OnDestroy {
|
|||
}
|
||||
|
||||
if (this.call) {
|
||||
this.callPrevious = this.call;
|
||||
if (!this.callHistory.find((call: RdioScannerCall) => call?.id === this.call?.id)) {
|
||||
this.callHistory.pop();
|
||||
this.callHistory.unshift(this.call);
|
||||
this.event.emit({ history: this.callHistory });
|
||||
}
|
||||
|
||||
this.call = undefined;
|
||||
}
|
||||
|
|
@ -750,7 +771,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
this.sendtoWebsocket(WebsocketCommand.Call, `${id}`, flags);
|
||||
}
|
||||
|
||||
private getPlaybackQueueCount(id = this.call?.id || this.callPrevious?.id): number {
|
||||
private getPlaybackQueueCount(id = this.call?.id || this.callHistory[0]?.id): number {
|
||||
let queueCount = 0;
|
||||
|
||||
if (id && this.playbackList) {
|
||||
|
|
@ -901,7 +922,7 @@ export class RdioScannerService implements OnDestroy {
|
|||
return;
|
||||
}
|
||||
|
||||
const index = this.playbackList.results.findIndex((call) => call.id === this.callPrevious?.id);
|
||||
const index = this.playbackList.results.findIndex((call) => call.id === this.callHistory[0]?.id);
|
||||
|
||||
if (this.playbackList.options.sort === -1) {
|
||||
if (index === -1) {
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ export interface RdioScannerEvent {
|
|||
call?: RdioScannerCall;
|
||||
config?: RdioScannerConfig;
|
||||
expired?: boolean;
|
||||
history?: RdioScannerCall[];
|
||||
holdSys?: boolean;
|
||||
holdTg?: boolean;
|
||||
linked?: boolean;
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
rdio@macos ~ % mkdir rdio-scanner
|
||||
rdio@macos ~ % cd rdio-scanner
|
||||
rdio@macos rdio-scanner % unzip \
|
||||
> ~/Downloads/rdio-scanner-darwin-arm64-v6.3.1.zip
|
||||
Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.3.1.zip
|
||||
> ~/Downloads/rdio-scanner-darwin-arm64-v6.3.2.zip
|
||||
Archive: /Users/rdio/Downloads/rdio-scanner-darwin-arm64-v6.3.2.zip
|
||||
inflating: rdio-scanner
|
||||
inflating: rdio-scanner.pdf
|
||||
|
||||
|
|
@ -51,11 +51,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
|
||||
rdio@macos rdio-scanner % ./rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 08:38:06 server started
|
||||
2022/05/19 08:38:06 main interface at http://macos.local:3000
|
||||
2022/05/19 08:38:06 admin interface at http://macos.local:3000/admin
|
||||
2022/05/21 08:38:06 server started
|
||||
2022/05/21 08:38:06 main interface at http://macos.local:3000
|
||||
2022/05/21 08:38:06 admin interface at http://macos.local:3000/admin
|
||||
|
||||
4. Access the administrative dashboard to finalize the configuration.
|
||||
|
||||
|
|
@ -77,11 +77,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance
|
|||
|
||||
rdio@macos rdio-scanner % ./rdio-scanner --listen :80
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 08:48:03 server started
|
||||
2022/05/19 08:48:03 main interface at http://macos.local
|
||||
2022/05/19 08:48:03 admin interface at http://macos.local/admin
|
||||
2022/05/21 08:48:03 server started
|
||||
2022/05/21 08:48:03 main interface at http://macos.local
|
||||
2022/05/21 08:48:03 admin interface at http://macos.local/admin
|
||||
|
||||
## Listening on a SSL port
|
||||
|
||||
|
|
@ -95,12 +95,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer
|
|||
> -ssl_key_file mykey.key \
|
||||
> -ssl_listen :443
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 08:50:58 server started
|
||||
2022/05/19 08:50:58 main interface at http://macos.local
|
||||
2022/05/19 08:50:58 main interface at https://macos.local
|
||||
2022/05/19 08:50:58 admin interface at https://macos.local/admin
|
||||
2022/05/21 08:50:58 server started
|
||||
2022/05/21 08:50:58 main interface at http://macos.local
|
||||
2022/05/21 08:50:58 main interface at https://macos.local
|
||||
2022/05/21 08:50:58 admin interface at https://macos.local/admin
|
||||
|
||||
If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal.
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
> -ssl_auto_cert mydomain.com \
|
||||
> -ssl_listen :443 \
|
||||
> -config_save
|
||||
2022/05/19 08:52:24 rdio-scanner.ini file created
|
||||
2022/05/21 08:52:24 rdio-scanner.ini file created
|
||||
|
||||
All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list.
|
||||
|
||||
|
|
@ -132,12 +132,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
|
|||
|
||||
rdio@macos rdio-scanner % ./rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 08:54:08 server started
|
||||
2022/05/19 08:54:08 main interface at http://macos.local
|
||||
2022/05/19 08:54:08 main interface at https://macos.local
|
||||
2022/05/19 08:54:08 admin interface at https://macos.local/admin
|
||||
2022/05/21 08:54:08 server started
|
||||
2022/05/21 08:54:08 main interface at http://macos.local
|
||||
2022/05/21 08:54:08 main interface at https://macos.local
|
||||
2022/05/21 08:54:08 admin interface at https://macos.local/admin
|
||||
|
||||
## Install Rdio Scanner as a service
|
||||
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
rdio@pc-freebsd:~ $ mkdir rdio-scanner
|
||||
rdio@pc-freebsd:~ $ cd rdio-scanner
|
||||
rdio@pc-freebsd:~/rdio-scanner $ unzip \
|
||||
> ~/rdio-scanner-freebsd-amd64-v6.3.1.zip
|
||||
Archive: ../rdio-scanner-freebsd-amd64-v6.3.1.zip
|
||||
> ~/rdio-scanner-freebsd-amd64-v6.3.2.zip
|
||||
Archive: ../rdio-scanner-freebsd-amd64-v6.3.2.zip
|
||||
extracting: rdio-scanner
|
||||
extracting: rdio-scanner.pdf
|
||||
|
||||
|
|
@ -51,11 +51,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
|
||||
rdio@pc-freebsd:~/rdio-scanner $ ./rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 08:16:36 server started
|
||||
2022/05/19 08:16:36 main interface at http://pc-freebsd:3000
|
||||
2022/05/19 08:16:36 admin interface at http://pc-freebsd:3000/admin
|
||||
2022/05/21 08:16:36 server started
|
||||
2022/05/21 08:16:36 main interface at http://pc-freebsd:3000
|
||||
2022/05/21 08:16:36 admin interface at http://pc-freebsd:3000/admin
|
||||
|
||||
4. Access the administrative dashboard to finalize the configuration.
|
||||
|
||||
|
|
@ -81,11 +81,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance
|
|||
Password:
|
||||
root@pc-freebsd:/home/rdio/rdio-scanner # ./rdio-scanner -listen :80
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 08:19:38 server started
|
||||
2022/05/19 08:19:38 main interface at http://pc-freebsd
|
||||
2022/05/19 08:19:38 admin interface at http://pc-freebsd/admin
|
||||
2022/05/21 08:19:38 server started
|
||||
2022/05/21 08:19:38 main interface at http://pc-freebsd
|
||||
2022/05/21 08:19:38 admin interface at http://pc-freebsd/admin
|
||||
|
||||
## Listening on a SSL port
|
||||
|
||||
|
|
@ -101,12 +101,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer
|
|||
> -ssl_key_file mykey.key \
|
||||
> -ssl_listen :443
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 10:34:29 server started
|
||||
2022/05/19 10:34:29 main interface at http://pc-freebsd
|
||||
2022/05/19 10:34:29 main interface at https://pc-freebsd
|
||||
2022/05/19 10:34:29 admin interface at https://pc-freebsd/admin
|
||||
2022/05/21 10:34:29 server started
|
||||
2022/05/21 10:34:29 main interface at http://pc-freebsd
|
||||
2022/05/21 10:34:29 main interface at https://pc-freebsd
|
||||
2022/05/21 10:34:29 admin interface at https://pc-freebsd/admin
|
||||
|
||||
If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal.
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
> -ssl_auto_cert mydomain.com \
|
||||
> -ssl_listen :443 \
|
||||
> -config_save
|
||||
2022/05/19 10:37:00 rdio-scanner.ini file created
|
||||
2022/05/21 10:37:00 rdio-scanner.ini file created
|
||||
|
||||
All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list.
|
||||
|
||||
|
|
@ -142,12 +142,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
|
|||
Password:
|
||||
root@pc-freebsd:/home/rdio/rdio-scanner # ./rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 10:38:28 server started
|
||||
2022/05/19 10:38:29 main interface at http://pc-freebsd
|
||||
2022/05/19 10:38:29 main interface at https://pc-freebsd
|
||||
2022/05/19 10:38:29 admin interface at https://pc-freebsd/admin
|
||||
2022/05/21 10:38:28 server started
|
||||
2022/05/21 10:38:29 main interface at http://pc-freebsd
|
||||
2022/05/21 10:38:29 main interface at https://pc-freebsd
|
||||
2022/05/21 10:38:29 admin interface at https://pc-freebsd/admin
|
||||
|
||||
## Install Rdio Scanner as a service
|
||||
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
[rdio@pc-linux ~]$ mkdir rdio-scanner
|
||||
[rdio@pc-linux ~]$ cd rdio-scanner
|
||||
[rdio@pc-linux rdio-scanner]$ unzip \
|
||||
> ~/Downloads/rdio-scanner-linux-amd64-v6.3.1.zip
|
||||
Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.3.1.zip
|
||||
> ~/Downloads/rdio-scanner-linux-amd64-v6.3.2.zip
|
||||
Archive: /home/rdio/Downloads/rdio-scanner-linux-amd64-v6.3.2.zip
|
||||
inflating: rdio-scanner
|
||||
inflating: rdio-scanner.pdf
|
||||
|
||||
|
|
@ -51,11 +51,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
|
||||
[rdio@pc-linux rdio-scanner]$ ./rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 09:11:48 server started
|
||||
2022/05/19 09:11:48 main interface at http://pc-linux:3000
|
||||
2022/05/19 09:11:48 admin interface at http://pc-linux:3000/admin
|
||||
2022/05/21 09:11:48 server started
|
||||
2022/05/21 09:11:48 main interface at http://pc-linux:3000
|
||||
2022/05/21 09:11:48 admin interface at http://pc-linux:3000/admin
|
||||
|
||||
4. Access the administrative dashboard to finalize the configuration.
|
||||
|
||||
|
|
@ -78,11 +78,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance
|
|||
[rdio@pc-linux rdio-scanner]$ sudo ./rdio-scanner -listen :80
|
||||
[sudo] password for rdio:
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 09:14:00 server started
|
||||
2022/05/19 09:14:00 main interface at http://pc-linux
|
||||
2022/05/19 09:14:00 admin interface at http://pc-linux/admin
|
||||
2022/05/21 09:14:00 server started
|
||||
2022/05/21 09:14:00 main interface at http://pc-linux
|
||||
2022/05/21 09:14:00 admin interface at http://pc-linux/admin
|
||||
|
||||
## Listening on a SSL port
|
||||
|
||||
|
|
@ -97,12 +97,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer
|
|||
> -ssl_listen :443
|
||||
[sudo] password for rdio:
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 09:16:47 server started
|
||||
2022/05/19 09:16:47 main interface at http://pc-linux
|
||||
2022/05/19 09:16:47 main interface at https://pc-linux
|
||||
2022/05/19 09:16:47 admin interface at https://pc-linux/admin
|
||||
2022/05/21 09:16:47 server started
|
||||
2022/05/21 09:16:47 main interface at http://pc-linux
|
||||
2022/05/21 09:16:47 main interface at https://pc-linux
|
||||
2022/05/21 09:16:47 admin interface at https://pc-linux/admin
|
||||
|
||||
If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal.
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
> -ssl_auto_cert mydomain.com \
|
||||
> -ssl_listen :443 \
|
||||
> -config_save
|
||||
2022/05/19 09:19:29 rdio-scanner.ini file created
|
||||
2022/05/21 09:19:29 rdio-scanner.ini file created
|
||||
|
||||
All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list.
|
||||
|
||||
|
|
@ -135,12 +135,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
|
|||
[rdio@pc-linux rdio-scanner]$ sudo ./rdio-scanner
|
||||
[sudo] Mot de passe de rdio :
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 09:20:40 server started
|
||||
2022/05/19 09:20:40 main interface at http://pc-linux
|
||||
2022/05/19 09:20:40 main interface at https://pc-linux
|
||||
2022/05/19 09:20:40 admin interface at https://pc-linux/admin
|
||||
2022/05/21 09:20:40 server started
|
||||
2022/05/21 09:20:40 main interface at http://pc-linux
|
||||
2022/05/21 09:20:40 main interface at https://pc-linux
|
||||
2022/05/21 09:20:40 admin interface at https://pc-linux/admin
|
||||
|
||||
## Install Rdio Scanner as a service
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
C:\Users\rdio> cd rdio-scanner
|
||||
|
||||
C:\Users\rdio\rdio-scanner> tar -xvf ^
|
||||
..\downloads\rdio-scanner-windows-amd64-v6.3.1.zip
|
||||
..\downloads\rdio-scanner-windows-amd64-v6.3.2.zip
|
||||
x rdio-scanner.exe
|
||||
x rdio-scanner.pdf
|
||||
|
||||
|
|
@ -52,11 +52,11 @@ ALWAYS DOWNLOAD THE LATEST VERSION OF [RDIO SCANNER](https://github.com/chuot/rd
|
|||
|
||||
C:\Users\rdio\rdio-scanner>rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 13:48:48 server started
|
||||
2022/05/19 13:48:48 main interface at http://pc-windows:3000
|
||||
2022/05/19 13:48:48 admin interface at http://pc-windows:3000/admin
|
||||
2022/05/21 13:48:48 server started
|
||||
2022/05/21 13:48:48 main interface at http://pc-windows:3000
|
||||
2022/05/21 13:48:48 admin interface at http://pc-windows:3000/admin
|
||||
|
||||
4. Access the administrative dashboard to finalize the configuration.
|
||||
|
||||
|
|
@ -78,11 +78,11 @@ Here we want our [Rdio Scanner](https://guthub.com/chuot/rdio-scanner) instance
|
|||
|
||||
C:\Users\rdio\rdio-scanner>rdio-scanner -listen :80
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 10:53:31 server started
|
||||
2022/05/19 10:53:31 main interface at http://pc-windows
|
||||
2022/05/19 10:53:31 admin interface at http://pc-windows/admin
|
||||
2022/05/21 10:53:31 server started
|
||||
2022/05/21 10:53:31 main interface at http://pc-windows
|
||||
2022/05/21 10:53:31 admin interface at http://pc-windows/admin
|
||||
|
||||
## Listening on a SSL port
|
||||
|
||||
|
|
@ -96,12 +96,12 @@ You can use your own SSL certificates that match your domain name with `-ssl_cer
|
|||
-ssl_key_file meykey.key ^
|
||||
-ssl_listen :443
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 11:05:43 server started
|
||||
2022/05/19 11:05:43 main interface at http://pc-windows
|
||||
2022/05/19 11:05:43 main interface at https://pc-windows
|
||||
2022/05/19 11:05:43 admin interface at https://pc-windows/admin
|
||||
2022/05/21 11:05:43 server started
|
||||
2022/05/21 11:05:43 main interface at http://pc-windows
|
||||
2022/05/21 11:05:43 main interface at https://pc-windows
|
||||
2022/05/21 11:05:43 admin interface at https://pc-windows/admin
|
||||
|
||||
If you don't want to worry about SSL certificates, you can use the built-in Let's Encrypt auto-cert feature. This requires that you have both port 80 (HTTP) and port 443 (HTTPS) open to the world. Also, your domain name should point to your IP address where [Rdio Scanner](https://github.com/chuot/rdio-scanner/) is running. The advantage of this approach is that everything is done automatically, no certificate request, no certificate renewal.
|
||||
|
||||
|
|
@ -119,7 +119,7 @@ You don't want to have to type everytime a long list of arguments. No problem, y
|
|||
-ssl_auto_cert mydomain.com ^
|
||||
-ssl_listen :443 ^
|
||||
-config_save
|
||||
2022/05/19 11:08:28 rdio-scanner.ini file created
|
||||
2022/05/21 11:08:28 rdio-scanner.ini file created
|
||||
|
||||
All of your parameters passed as arguments to [Rdio Scanner](https://github.com/chuot/rdio-scanner) have been saved to an INI file which has the same arguments/values list.
|
||||
|
||||
|
|
@ -133,12 +133,12 @@ Then simply run [Rdio Scanner](https://github.com/chuot/rdio-scanner) without an
|
|||
|
||||
C:\Users\rdio\rdio-scanner>rdio-scanner
|
||||
|
||||
Rdio Scanner v6.3.1
|
||||
Rdio Scanner v6.3.2
|
||||
----------------------------------
|
||||
2022/05/19 11:11:28 server started
|
||||
2022/05/19 11:11:28 main interface at http://pc-windows
|
||||
2022/05/19 11:11:28 main interface at https://pc-windows
|
||||
2022/05/19 11:11:28 admin interface at https://pc-windows/admin
|
||||
2022/05/21 11:11:28 server started
|
||||
2022/05/21 11:11:28 main interface at http://pc-windows
|
||||
2022/05/21 11:11:28 main interface at https://pc-windows
|
||||
2022/05/21 11:11:28 admin interface at https://pc-windows/admin
|
||||
|
||||
\pagebreak{}
|
||||
|
||||
|
|
|
|||
|
|
@ -178,85 +178,94 @@ func (client *Client) SendListenersCount(count int) {
|
|||
}
|
||||
|
||||
type Clients struct {
|
||||
Map map[*Client]bool
|
||||
mutex sync.Mutex
|
||||
Map sync.Map
|
||||
}
|
||||
|
||||
func NewClients() *Clients {
|
||||
return &Clients{
|
||||
Map: make(map[*Client]bool),
|
||||
mutex: sync.Mutex{},
|
||||
}
|
||||
return &Clients{Map: sync.Map{}}
|
||||
}
|
||||
|
||||
func (clients *Clients) AccessCount(client *Client) int {
|
||||
clients.mutex.Lock()
|
||||
defer clients.mutex.Unlock()
|
||||
|
||||
count := 0
|
||||
|
||||
for c := range clients.Map {
|
||||
if c.Access == client.Access {
|
||||
count++
|
||||
clients.Map.Range(func(k interface{}, _ interface{}) bool {
|
||||
switch c := k.(type) {
|
||||
case *Client:
|
||||
if c.Access == client.Access {
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
return count
|
||||
}
|
||||
|
||||
func (clients *Clients) Add(client *Client) {
|
||||
clients.mutex.Lock()
|
||||
defer clients.mutex.Unlock()
|
||||
|
||||
clients.Map[client] = true
|
||||
clients.Map.Store(client, true)
|
||||
}
|
||||
|
||||
func (clients *Clients) Count() int {
|
||||
return len(clients.Map)
|
||||
count := 0
|
||||
|
||||
clients.Map.Range(func(k, v interface{}) bool {
|
||||
count++
|
||||
|
||||
return true
|
||||
})
|
||||
|
||||
return count
|
||||
}
|
||||
|
||||
func (clients *Clients) EmitCall(call *Call, restricted bool) {
|
||||
clients.mutex.Lock()
|
||||
defer clients.mutex.Unlock()
|
||||
|
||||
for c := range clients.Map {
|
||||
if (!restricted || c.Access.HasAccess(call)) && c.Livefeed.IsEnabled(call) {
|
||||
c.Send <- &Message{Command: MessageCommandCall, Payload: call}
|
||||
clients.Map.Range(func(k interface{}, _ interface{}) bool {
|
||||
switch c := k.(type) {
|
||||
case *Client:
|
||||
if (!restricted || c.Access.HasAccess(call)) && c.Livefeed.IsEnabled(call) {
|
||||
c.Send <- &Message{Command: MessageCommandCall, Payload: call}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func (clients *Clients) EmitConfig(groups *Groups, options *Options, systems *Systems, tags *Tags, restricted bool) {
|
||||
clients.mutex.Lock()
|
||||
defer clients.mutex.Unlock()
|
||||
count := clients.Count()
|
||||
|
||||
for c := range clients.Map {
|
||||
if restricted {
|
||||
c.Send <- &Message{Command: MessageCommandPin}
|
||||
} else {
|
||||
c.SendConfig(groups, options, systems, tags)
|
||||
clients.Map.Range(func(k interface{}, _ interface{}) bool {
|
||||
switch c := k.(type) {
|
||||
case *Client:
|
||||
if restricted {
|
||||
c.Send <- &Message{Command: MessageCommandPin}
|
||||
} else {
|
||||
c.SendConfig(groups, options, systems, tags)
|
||||
}
|
||||
|
||||
if options.ShowListenersCount {
|
||||
c.SendListenersCount(count)
|
||||
}
|
||||
}
|
||||
|
||||
if options.ShowListenersCount {
|
||||
c.SendListenersCount(len(clients.Map))
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func (clients *Clients) EmitListenersCount() {
|
||||
clients.mutex.Lock()
|
||||
defer clients.mutex.Unlock()
|
||||
count := clients.Count()
|
||||
|
||||
for c := range clients.Map {
|
||||
c.SendListenersCount(len(clients.Map))
|
||||
}
|
||||
clients.Map.Range(func(k interface{}, _ interface{}) bool {
|
||||
switch c := k.(type) {
|
||||
case *Client:
|
||||
c.SendListenersCount(count)
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func (clients *Clients) Remove(client *Client) {
|
||||
clients.mutex.Lock()
|
||||
defer clients.mutex.Unlock()
|
||||
|
||||
delete(clients.Map, client)
|
||||
clients.Map.Delete(client)
|
||||
|
||||
close(client.Send)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -326,16 +326,17 @@ func (dirwatch *Dirwatch) ingestTrunkRecorder(p string) error {
|
|||
func (dirwatch *Dirwatch) parseMask(call *Call) {
|
||||
var meta = [][]string{
|
||||
{"date", "#DATE", `[\d-_]+`},
|
||||
{"group", "#GROUP", `[a-zA-Z0-9\ \.-]+`},
|
||||
{"group", "#GROUP", `[a-zA-Z0-9\.\ -]+`},
|
||||
{"hz", "#HZ", `\d+`},
|
||||
{"khz", "#KHZ", `[\d\.]+`},
|
||||
{"mhz", "#MHZ", `[\d\.]+`},
|
||||
{"syslbl", "#SYSLBL", `[a-zA-Z0-9\ \.-]+`},
|
||||
{"syslbl", "#SYSLBL", `[a-zA-Z0-9,\.\ -]+`},
|
||||
{"sys", "#SYS", `\d+`},
|
||||
{"tag", "#TAG", `[a-zA-Z0-9\ \.-]+`},
|
||||
{"tag", "#TAG", `[a-zA-Z0-9\.\ -]+`},
|
||||
{"tgafs", "#TGAFS", `\d{2}-\d{3}`},
|
||||
{"tghz", "#TGHZ", `\d+`},
|
||||
{"tgkhz", "#TGKHZ", `[\d\.]+`},
|
||||
{"tglbl", "#TGLBL", `[a-zA-Z0-9,\.\ -]+`},
|
||||
{"tgmhz", "#TGMHZ", `[\d\.]+`},
|
||||
{"tg", "#TG", `\d+`},
|
||||
{"time", "#TIME", `[\d-:]+`},
|
||||
|
|
@ -456,7 +457,7 @@ func (dirwatch *Dirwatch) parseMask(call *Call) {
|
|||
switch v := metaval["tag"].(type) {
|
||||
case string:
|
||||
if len(v) > 0 && v != "-" {
|
||||
call.talkgroupGroup = v
|
||||
call.talkgroupTag = v
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -504,6 +505,13 @@ func (dirwatch *Dirwatch) parseMask(call *Call) {
|
|||
}
|
||||
}
|
||||
|
||||
switch v := metaval["tglbl"].(type) {
|
||||
case string:
|
||||
if len(v) > 0 {
|
||||
call.talkgroupLabel = v
|
||||
}
|
||||
}
|
||||
|
||||
switch v := metaval["unit"].(type) {
|
||||
case string:
|
||||
if i, err := strconv.Atoi(v); err == nil {
|
||||
|
|
|
|||
|
|
@ -15,4 +15,4 @@
|
|||
|
||||
package main
|
||||
|
||||
const Version = "6.3.1"
|
||||
const Version = "6.3.2"
|
||||
|
|
|
|||
Loading…
Reference in a new issue