mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-14 17:03:02 -06:00
Version 4.9.0
This commit is contained in:
parent
3b0f2ac843
commit
f0752640c2
|
|
@ -1,3 +1,11 @@
|
|||
# Version 4.9
|
||||
|
||||
- Add basic duplicate call detection and rejection.
|
||||
- Add keyboard shortcuts for the main buttons.
|
||||
- Add an avoid indicator when the talkgroup is avoided.
|
||||
- Add an no link indicator when websocket connection is down.
|
||||
- Node modules update.
|
||||
|
||||
# Version 4.8
|
||||
|
||||
- Add downstream.system.id_as property to allow export system with a different id.
|
||||
|
|
|
|||
8
client/package-lock.json
generated
8
client/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner-client",
|
||||
"version": "4.8.5",
|
||||
"version": "4.9.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -1609,9 +1609,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "14.14.16",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.16.tgz",
|
||||
"integrity": "sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==",
|
||||
"version": "14.14.19",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.19.tgz",
|
||||
"integrity": "sha512-4nhBPStMK04rruRVtVc6cDqhu7S9GZai0fpXgPXrFpcPX6Xul8xnrjSdGB4KPBVYG/R5+fXWdCM8qBoiULWGPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/parse-json": {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"@angular-devkit/build-angular": "~0.1100.5",
|
||||
"@angular/cli": "^11.0.5",
|
||||
"@angular/compiler-cli": "~11.0.5",
|
||||
"@types/node": "~14.14.16",
|
||||
"@types/node": "~14.14.19",
|
||||
"codelyzer": "^6.0.1",
|
||||
"ts-node": "~9.1.1",
|
||||
"tslint": "~6.1.3",
|
||||
|
|
@ -32,5 +32,5 @@
|
|||
"build": "ng build --base-href ./ --prod",
|
||||
"start": "ng serve"
|
||||
},
|
||||
"version": "4.8.5"
|
||||
"version": "4.9.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -2,14 +2,18 @@
|
|||
<div class="led" [ngClass]="ledStyle"></div>
|
||||
</div>
|
||||
<div class="rdio-display" [ngClass]="{ idle: !dimmer }" (dblclick)="toggleFullscreen.emit()">
|
||||
<div class="row margin">
|
||||
<div class="row">
|
||||
<div>
|
||||
<span>{{ clock | date:'HH:mm' }}</span>
|
||||
</div>
|
||||
<div *ngIf="!linked">
|
||||
<span>NO LINK</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>Q: {{ callQueue }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row small"></div>
|
||||
<div class="row">
|
||||
<div>
|
||||
<span>{{ callSystem }}</span>
|
||||
|
|
@ -26,7 +30,7 @@
|
|||
<span>{{ callProgress | date:'HH:mm' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row bold">
|
||||
<div class="row big">
|
||||
<span>{{ callTalkgroupName }}</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
|
@ -37,7 +41,7 @@
|
|||
<span>TGID: {{ callTalkgroupId || 0 }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row margin">
|
||||
<div class="row">
|
||||
<div>
|
||||
<span>E: {{ callError || 0 }} S: {{ callSpike || 0 }}</span>
|
||||
</div>
|
||||
|
|
@ -45,6 +49,12 @@
|
|||
<span *ngIf="callUnit">UID: {{ callUnit }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row small">
|
||||
<div></div>
|
||||
<div>
|
||||
<span class="avoid" [ngClass]="{ avoided: avoided }">AVOID</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper">
|
||||
<div class="auth" [ngClass]="{ visible: auth }">
|
||||
<form class="mat-elevation-z8" autocomplete="off" [formGroup]="authForm" (ngSubmit)="authenticate()">
|
||||
|
|
|
|||
|
|
@ -35,6 +35,22 @@
|
|||
|
||||
&.idle {
|
||||
background: rgb(190, 190, 174);
|
||||
|
||||
.avoid {
|
||||
color: rgb(190, 190, 174);
|
||||
}
|
||||
}
|
||||
|
||||
.avoid {
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
border-radius: 3px;
|
||||
color: rgb(209, 238, 238);
|
||||
padding: 0 3px;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.avoided {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
* {
|
||||
|
|
@ -80,14 +96,16 @@
|
|||
height: 20px;
|
||||
justify-content: space-between;
|
||||
|
||||
&.bold {
|
||||
&.big {
|
||||
font-size: 24px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
&.margin {
|
||||
margin-bottom: 12px;
|
||||
&.small {
|
||||
font-size: 12px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -17,12 +17,20 @@
|
|||
* ****************************************************************************
|
||||
*/
|
||||
|
||||
import { ChangeDetectorRef, Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';
|
||||
import { ChangeDetectorRef, Component, EventEmitter, HostListener, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';
|
||||
import { FormBuilder } from '@angular/forms';
|
||||
import { MatInput } from '@angular/material/input';
|
||||
import { Subscription, timer } from 'rxjs';
|
||||
import { name as appName, version } from '../../../../../package.json';
|
||||
import { RdioScannerAvoidOptions, RdioScannerBeepStyle, RdioScannerCall, RdioScannerConfig, RdioScannerEvent, RdioScannerLivefeedMode } from '../rdio-scanner';
|
||||
import {
|
||||
RdioScannerAvoidOptions,
|
||||
RdioScannerBeepStyle,
|
||||
RdioScannerCall,
|
||||
RdioScannerConfig,
|
||||
RdioScannerEvent,
|
||||
RdioScannerLivefeedMap,
|
||||
RdioScannerLivefeedMode,
|
||||
} from '../rdio-scanner';
|
||||
import { AppRdioScannerService } from '../rdio-scanner.service';
|
||||
|
||||
const LOCAL_STORAGE_KEY = AppRdioScannerService.LOCAL_STORAGE_KEY + '-pin';
|
||||
|
|
@ -39,6 +47,8 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
auth = false;
|
||||
authForm = this.ngFormBuilder.group({ password: [] });
|
||||
|
||||
avoided = false;
|
||||
|
||||
call: RdioScannerCall | undefined;
|
||||
callError = '0';
|
||||
callFrequency: string = this.formatFrequency(0);
|
||||
|
|
@ -64,10 +74,14 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
|
||||
ledStyle = '';
|
||||
|
||||
linked = false;
|
||||
|
||||
livefeedOffline = true;
|
||||
livefeedOnline = false;
|
||||
livefeedPaused = false;
|
||||
|
||||
map: RdioScannerLivefeedMap = {};
|
||||
|
||||
playbackMode = false;
|
||||
|
||||
@Output() openSearchPanel = new EventEmitter<void>();
|
||||
|
|
@ -104,16 +118,24 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.a')
|
||||
avoid(options?: RdioScannerAvoidOptions): void {
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
||||
} else {
|
||||
if (options || this.call || this.callPrevious) {
|
||||
this.appRdioScannerService.beep(RdioScannerBeepStyle.Activate);
|
||||
const call = this.call || this.callPrevious;
|
||||
|
||||
if (options || call) {
|
||||
this.appRdioScannerService.avoid(options);
|
||||
|
||||
if (call && !this.map[call.system][call.talkgroup]) {
|
||||
this.appRdioScannerService.beep(RdioScannerBeepStyle.Activate);
|
||||
|
||||
} else {
|
||||
this.appRdioScannerService.beep(RdioScannerBeepStyle.Deactivate);
|
||||
}
|
||||
|
||||
} else {
|
||||
this.appRdioScannerService.beep(RdioScannerBeepStyle.Denied);
|
||||
}
|
||||
|
|
@ -122,6 +144,7 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.s')
|
||||
holdSystem(): void {
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
|
@ -140,6 +163,7 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.t')
|
||||
holdTalkgroup(): void {
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
|
@ -158,6 +182,7 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.l')
|
||||
livefeed(): void {
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
|
@ -181,7 +206,11 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
this.syncClock();
|
||||
}
|
||||
|
||||
pause(): void {
|
||||
@HostListener('document:keydown.space', ['$event'])
|
||||
@HostListener('document:keydown.p')
|
||||
pause(event?: KeyboardEvent): void {
|
||||
event?.preventDefault();
|
||||
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
||||
|
|
@ -199,6 +228,7 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.r')
|
||||
replay(): void {
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
|
@ -247,6 +277,7 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.n')
|
||||
skip(options?: { delay?: boolean }): void {
|
||||
if (this.auth) {
|
||||
this.authFocus();
|
||||
|
|
@ -334,6 +365,10 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
this.holdTg = event.holdTg || false;
|
||||
}
|
||||
|
||||
if ('linked' in event) {
|
||||
this.linked = event.linked || false;
|
||||
}
|
||||
|
||||
if ('livefeedMode' in event && event.livefeedMode) {
|
||||
this.livefeedOffline = event.livefeedMode === RdioScannerLivefeedMode.Offline;
|
||||
|
||||
|
|
@ -342,6 +377,10 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
this.playbackMode = event.livefeedMode === RdioScannerLivefeedMode.Playback;
|
||||
}
|
||||
|
||||
if ('map' in event) {
|
||||
this.map = event.map || {};
|
||||
}
|
||||
|
||||
if ('pause' in event) {
|
||||
this.livefeedPaused = event.pause || false;
|
||||
}
|
||||
|
|
@ -456,6 +495,15 @@ export class AppRdioScannerMainComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
const call = this.call || this.callPrevious;
|
||||
|
||||
if (call && this.map[call.system]) {
|
||||
this.avoided = !this.map[call.system][call.talkgroup];
|
||||
|
||||
} else {
|
||||
this.avoided = false;
|
||||
}
|
||||
|
||||
const colors = ['blue', 'cyan', 'green', 'magenta', 'red', 'white', 'yellow'];
|
||||
|
||||
this.ledStyle = this.call && this.livefeedPaused ? 'on paused' : this.call ? 'on' : 'off';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -58,7 +58,6 @@ export class AppRdioScannerComponent implements OnDestroy {
|
|||
this.appRdioScannerService.stopLivefeed();
|
||||
|
||||
this.searchPanel?.close();
|
||||
|
||||
this.selectPanel?.close();
|
||||
}
|
||||
|
||||
|
|
@ -66,7 +65,11 @@ export class AppRdioScannerComponent implements OnDestroy {
|
|||
this.eventSubscription.unsubscribe();
|
||||
}
|
||||
|
||||
toggleFullscreen(): void {
|
||||
@HostListener('document:keydown.f')
|
||||
@HostListener('document:keydown.tab', ['$event'])
|
||||
toggleFullscreen(event?: KeyboardEvent): void {
|
||||
event?.preventDefault();
|
||||
|
||||
if (document.fullscreenElement) {
|
||||
const el: {
|
||||
exitFullscreen?: () => void;
|
||||
|
|
@ -111,4 +114,28 @@ export class AppRdioScannerComponent implements OnDestroy {
|
|||
this.livefeedMode = event.livefeedMode;
|
||||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.arrowleft', ['$event'])
|
||||
private keyLeftArrow(event?: KeyboardEvent): void {
|
||||
event?.preventDefault();
|
||||
|
||||
if (this.selectPanel?.opened) {
|
||||
this.selectPanel?.close();
|
||||
|
||||
} else {
|
||||
this.searchPanel?.open();
|
||||
}
|
||||
}
|
||||
|
||||
@HostListener('document:keydown.arrowright', ['$event'])
|
||||
private keyRightArrow(event?: KeyboardEvent): void {
|
||||
event?.preventDefault();
|
||||
|
||||
if (this.searchPanel?.opened) {
|
||||
this.searchPanel?.close();
|
||||
|
||||
} else {
|
||||
this.selectPanel?.open();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -152,7 +152,9 @@ export class AppRdioScannerService implements OnDestroy {
|
|||
}
|
||||
}
|
||||
|
||||
this.cleanQueue();
|
||||
if (this.livefeedMode !== RdioScannerLivefeedMode.Playback) {
|
||||
this.cleanQueue();
|
||||
}
|
||||
|
||||
this.rebuildGroups();
|
||||
|
||||
|
|
@ -731,14 +733,18 @@ export class AppRdioScannerService implements OnDestroy {
|
|||
this.websocket = new WebSocket(websocketUrl);
|
||||
|
||||
this.websocket.onclose = (ev: CloseEvent) => {
|
||||
this.event.emit({ linked: false });
|
||||
|
||||
if (ev.code !== 1000) {
|
||||
timer(2000).subscribe(() => this.reconnectWebsocket());
|
||||
}
|
||||
};
|
||||
|
||||
this.websocket.onerror = () => { };
|
||||
this.websocket.onerror = () => this.event.emit({ linked: false });
|
||||
|
||||
this.websocket.onopen = () => {
|
||||
this.event.emit({ linked: true });
|
||||
|
||||
if (this.websocket instanceof WebSocket) {
|
||||
this.websocket.onmessage = (ev: MessageEvent) => this.parseWebsocketMessage(ev.data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -85,6 +85,7 @@ export interface RdioScannerEvent {
|
|||
groups?: RdioScannerGroup[];
|
||||
holdSys?: boolean;
|
||||
holdTg?: boolean;
|
||||
linked?: boolean;
|
||||
livefeedMode?: RdioScannerLivefeedMode;
|
||||
map?: RdioScannerLivefeedMap;
|
||||
pause?: boolean;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
##
|
||||
## #############################################################################
|
||||
## Copyright (C) 2019-2020 Chrystian Huot
|
||||
## Copyright (C) 2019-2021 Chrystian Huot
|
||||
##
|
||||
## This program is free software: you can redistribute it and/or modify
|
||||
## it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -36,23 +36,23 @@ The color is _green_ by default, but can be customized in `config.json` by the s
|
|||
- **UID: 4612205** - the unit ID or alias name
|
||||
- History - The last five played audio files
|
||||
|
||||
> Note that you can double-click or double-tap the display area to switch to full-screen display (also on mobile devices).
|
||||
> Note that you can double-click, double-tap the display area, press the `f key` or the `tab key` to switch to full-screen display (also on mobile devices).
|
||||
|
||||
### Control area
|
||||
|
||||

|
||||
|
||||
| Button | Description |
|
||||
| ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
|  | When active, incoming audio will be played according to the active systems/talkgroups on the **SELECT TG** panel. The LED can also be _yellow_ if playing audio from the archive while **LIVE FEED** is inactive, this is called **offline playback mode**. Disabling **LIVE FEED** will also stop any playing audio and will clear the listening queue. |
|
||||
|  | Temporarily maintain the current system in live feed mode. |
|
||||
|  | Temporarily maintain the current talkgroup in live feed mode. |
|
||||
|  | Replay the current audio from the beginning or the previous one if there is none active. |
|
||||
|  | Stop the audio currently playing and play the next one in the listening queue. This is useful when playing boring or encrypted sound. |
|
||||
|  | Activate and deactivate the talkgroup from the current or previous audio. |
|
||||
|  | Display the archived audio panel. |
|
||||
|  | Stop playing queue audio. Useful if you have to answer the phone without losing what's queued up for playing. |
|
||||
|  | Display the systems/talkgroups selection panel where you decide which audio you want to listen to in \*_LIVE FEED_ (not in offline playback mode). |
|
||||
| Button | Keyboard | Description |
|
||||
| ------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
|  | l | When active, incoming audio will be played according to the active systems/talkgroups on the **SELECT TG** panel. The LED can also be _yellow_ if playing audio from the archive while **LIVE FEED** is inactive, this is called **offline playback mode**. Disabling **LIVE FEED** will also stop any playing audio and will clear the listening queue. |
|
||||
|  | s | Temporarily maintain the current system in live feed mode. |
|
||||
|  | t | Temporarily maintain the current talkgroup in live feed mode. |
|
||||
|  | r | Replay the current audio from the beginning or the previous one if there is none active. |
|
||||
|  | n | Stop the audio currently playing and play the next one in the listening queue. This is useful when playing boring or encrypted sound. |
|
||||
|  | a | Activate and deactivate the talkgroup from the current or previous audio. |
|
||||
|  | ← | Display the archived audio panel. |
|
||||
|  | p, space | Stop playing queue audio. Useful if you have to answer the phone without losing what's queued up for playing. |
|
||||
|  | → | Display the systems/talkgroups selection panel where you decide which audio you want to listen to in \*_LIVE FEED_ (not in offline playback mode). |
|
||||
|
||||
### Systems/Talkgroups selection panel
|
||||
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@
|
|||
"start": "node run",
|
||||
"update": "node update"
|
||||
},
|
||||
"version": "4.8.5"
|
||||
"version": "4.9.0"
|
||||
}
|
||||
|
|
|
|||
2
run.js
2
run.js
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -492,6 +492,29 @@ class Controller extends EventEmitter {
|
|||
return;
|
||||
}
|
||||
|
||||
const dateFrom = new Date(call.dateTime);
|
||||
const dateTo = new Date(call.dateTime);
|
||||
|
||||
dateFrom.setMilliseconds(dateFrom.getMilliseconds() - 500);
|
||||
dateTo.setMilliseconds(dateTo.getMilliseconds() + 500);
|
||||
|
||||
const duplicateCall = await this.models.call.findOne({
|
||||
where: {
|
||||
dateTime: {
|
||||
[Op.gte]: dateFrom,
|
||||
[Op.lte]: dateTo,
|
||||
},
|
||||
system: call.system,
|
||||
talkgroup: call.talkgroup,
|
||||
},
|
||||
});
|
||||
|
||||
if (duplicateCall) {
|
||||
console.log(`NewCall: system=${call.system} talkgroup=${call.talkgroup} file=${call.audioName} Duplicate call rejected`);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.config.disableAudioConversion && call.audioType !== 'audio/aac') {
|
||||
try {
|
||||
call = await this.convertCallAudio(call);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
407
server/package-lock.json
generated
407
server/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner-server",
|
||||
"version": "4.8.5",
|
||||
"version": "4.9.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -67,6 +67,12 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"@discoveryjs/json-ext": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz",
|
||||
"integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==",
|
||||
"dev": true
|
||||
},
|
||||
"@eslint/eslintrc": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz",
|
||||
|
|
@ -339,18 +345,18 @@
|
|||
}
|
||||
},
|
||||
"@webpack-cli/info": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.1.0.tgz",
|
||||
"integrity": "sha512-uNWSdaYHc+f3LdIZNwhdhkjjLDDl3jP2+XBqAq9H8DjrJUvlOKdP8TNruy1yEaDfgpAIgbSAN7pye4FEHg9tYQ==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz",
|
||||
"integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"envinfo": "^7.7.3"
|
||||
}
|
||||
},
|
||||
"@webpack-cli/serve": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.1.0.tgz",
|
||||
"integrity": "sha512-7RfnMXCpJ/NThrhq4gYQYILB18xWyoQcBey81oIyVbmgbc6m5ZHHyFK+DyH7pLHJf0p14MxL4mTsoPAgBSTpIg==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz",
|
||||
"integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw==",
|
||||
"dev": true
|
||||
},
|
||||
"@xtuc/ieee754": {
|
||||
|
|
@ -518,12 +524,6 @@
|
|||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"array-back": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
|
||||
"integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
|
||||
"dev": true
|
||||
},
|
||||
"array-flatten": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
|
|
@ -727,9 +727,9 @@
|
|||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001170",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001170.tgz",
|
||||
"integrity": "sha512-Dd4d/+0tsK0UNLrZs3CvNukqalnVTRrxb5mcQm8rHL49t7V5ZaTygwXkrq+FB+dVDf++4ri8eJnFEJAB8332PA==",
|
||||
"version": "1.0.30001171",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001171.tgz",
|
||||
"integrity": "sha512-5Alrh8TTYPG9IH4UkRqEBZoEToWRLvPbSQokvzSz0lii8/FOWKG4keO1HoYfPWs8IF/NH/dyNPg1cmJGvV3Zlg==",
|
||||
"dev": true
|
||||
},
|
||||
"caseless": {
|
||||
|
|
@ -841,55 +841,6 @@
|
|||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"command-line-usage": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.1.tgz",
|
||||
"integrity": "sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"array-back": "^4.0.1",
|
||||
"chalk": "^2.4.2",
|
||||
"table-layout": "^1.0.1",
|
||||
"typical": "^5.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-convert": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^3.2.1",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"supports-color": "^5.3.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.3",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
|
|
@ -1222,9 +1173,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"eslint": {
|
||||
"version": "7.16.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz",
|
||||
"integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==",
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz",
|
||||
"integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
|
|
@ -1454,30 +1405,27 @@
|
|||
"dev": true
|
||||
},
|
||||
"execa": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
|
||||
"integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
|
||||
"integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.0",
|
||||
"get-stream": "^5.0.0",
|
||||
"human-signals": "^1.1.1",
|
||||
"cross-spawn": "^7.0.3",
|
||||
"get-stream": "^6.0.0",
|
||||
"human-signals": "^2.1.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"merge-stream": "^2.0.0",
|
||||
"npm-run-path": "^4.0.0",
|
||||
"onetime": "^5.1.0",
|
||||
"signal-exit": "^3.0.2",
|
||||
"npm-run-path": "^4.0.1",
|
||||
"onetime": "^5.1.2",
|
||||
"signal-exit": "^3.0.3",
|
||||
"strip-final-newline": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"get-stream": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
|
||||
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pump": "^3.0.0"
|
||||
}
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz",
|
||||
"integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -1546,6 +1494,12 @@
|
|||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
||||
"dev": true
|
||||
},
|
||||
"fastest-levenshtein": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
|
||||
"integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
|
||||
"dev": true
|
||||
},
|
||||
"file-entry-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz",
|
||||
|
|
@ -1578,12 +1532,12 @@
|
|||
}
|
||||
},
|
||||
"find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
|
||||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"locate-path": "^5.0.0",
|
||||
"locate-path": "^6.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
}
|
||||
},
|
||||
|
|
@ -1864,9 +1818,9 @@
|
|||
"integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw=="
|
||||
},
|
||||
"helmet": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/helmet/-/helmet-4.2.0.tgz",
|
||||
"integrity": "sha512-aoiSxXMd0ks1ojYpSCFoCRzgv4rY/uB9jKStaw8PkXwsdLYa/Gq+Nc5l0soH0cwBIsLAlujPnx4HLQs+LaXCrQ=="
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/helmet/-/helmet-4.3.1.tgz",
|
||||
"integrity": "sha512-WsafDyKsIexB0+pUNkq3rL1rB5GVAghR68TP8ssM9DPEMzfBiluEQlVzJ/FEj6Vq2Ag3CNuxf7aYMjXrN0X49Q=="
|
||||
},
|
||||
"http-cache-semantics": {
|
||||
"version": "4.1.0",
|
||||
|
|
@ -1897,9 +1851,9 @@
|
|||
}
|
||||
},
|
||||
"human-signals": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
|
||||
"integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
||||
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
||||
"dev": true
|
||||
},
|
||||
"iconv-lite": {
|
||||
|
|
@ -1952,6 +1906,54 @@
|
|||
"requires": {
|
||||
"pkg-dir": "^4.2.0",
|
||||
"resolve-cwd": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"find-up": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"p-limit": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
|
||||
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"imurmurhash": {
|
||||
|
|
@ -2011,9 +2013,9 @@
|
|||
}
|
||||
},
|
||||
"is-core-module": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz",
|
||||
"integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==",
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
|
||||
"integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has": "^1.0.3"
|
||||
|
|
@ -2215,12 +2217,6 @@
|
|||
"package-json": "^6.3.0"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"dev": true
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
|
||||
|
|
@ -2238,12 +2234,12 @@
|
|||
"dev": true
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-locate": "^4.1.0"
|
||||
"p-locate": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
|
|
@ -2355,16 +2351,16 @@
|
|||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.44.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
|
||||
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
|
||||
"version": "1.45.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz",
|
||||
"integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.27",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
|
||||
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
|
||||
"version": "2.1.28",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz",
|
||||
"integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",
|
||||
"requires": {
|
||||
"mime-db": "1.44.0"
|
||||
"mime-db": "1.45.0"
|
||||
}
|
||||
},
|
||||
"mimic-fn": {
|
||||
|
|
@ -2803,21 +2799,21 @@
|
|||
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"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": {
|
||||
"p-try": "^2.0.0"
|
||||
"yocto-queue": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
|
||||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
||||
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-limit": "^2.2.0"
|
||||
"p-limit": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"p-try": {
|
||||
|
|
@ -2957,12 +2953,12 @@
|
|||
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
|
||||
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
|
||||
"integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^4.0.0"
|
||||
"find-up": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"please-upgrade-node": {
|
||||
|
|
@ -3134,12 +3130,6 @@
|
|||
"resolve": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"reduce-flatten": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
|
||||
"integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
|
||||
"dev": true
|
||||
},
|
||||
"regexpp": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
|
||||
|
|
@ -3215,6 +3205,12 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||
"dev": true
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
|
||||
|
|
@ -3654,27 +3650,35 @@
|
|||
}
|
||||
},
|
||||
"table": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz",
|
||||
"integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==",
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.0.6.tgz",
|
||||
"integrity": "sha512-OInCtPmDNieVBkVFi6C8RwU2S2H0h8mF3e3TQK4nreaUNCpooQUkI+A/KuEkm5FawfhWIfNqG+qfelVVR+V00g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.12.4",
|
||||
"ajv": "^7.0.2",
|
||||
"lodash": "^4.17.20",
|
||||
"slice-ansi": "^4.0.0",
|
||||
"string-width": "^4.2.0"
|
||||
}
|
||||
},
|
||||
"table-layout": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz",
|
||||
"integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"array-back": "^4.0.1",
|
||||
"deep-extend": "~0.6.0",
|
||||
"typical": "^5.2.0",
|
||||
"wordwrapjs": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz",
|
||||
"integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"tapable": {
|
||||
|
|
@ -3730,17 +3734,6 @@
|
|||
"serialize-javascript": "^5.0.1",
|
||||
"source-map": "^0.6.1",
|
||||
"terser": "^5.3.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"text-table": {
|
||||
|
|
@ -3847,12 +3840,6 @@
|
|||
"is-typedarray": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"typical": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
|
||||
"integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
|
||||
"dev": true
|
||||
},
|
||||
"umzug": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz",
|
||||
|
|
@ -3971,9 +3958,9 @@
|
|||
}
|
||||
},
|
||||
"webpack": {
|
||||
"version": "5.11.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.11.0.tgz",
|
||||
"integrity": "sha512-ubWv7iP54RqAC/VjixgpnLLogCFbAfSOREcSWnnOlZEU8GICC5eKmJSu6YEnph2N2amKqY9rvxSwgyHxVqpaRw==",
|
||||
"version": "5.11.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.11.1.tgz",
|
||||
"integrity": "sha512-tNUIdAmYJv+nupRs/U/gqmADm6fgrf5xE+rSlSsf2PgsGO7j2WG7ccU6AWNlOJlHFl+HnmXlBmHIkiLf+XA9mQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/eslint-scope": "^3.7.0",
|
||||
|
|
@ -4007,80 +3994,34 @@
|
|||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz",
|
||||
"integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==",
|
||||
"dev": true
|
||||
},
|
||||
"find-up": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"locate-path": "^6.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
||||
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-locate": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
||||
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-limit": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
|
||||
"integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^5.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"webpack-cli": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.2.0.tgz",
|
||||
"integrity": "sha512-EIl3k88vaF4fSxWSgtAQR+VwicfLMTZ9amQtqS4o+TDPW9HGaEpbFBbAZ4A3ZOT5SOnMxNOzROsSTPiE8tBJPA==",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.3.1.tgz",
|
||||
"integrity": "sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@webpack-cli/info": "^1.1.0",
|
||||
"@webpack-cli/serve": "^1.1.0",
|
||||
"@discoveryjs/json-ext": "^0.5.0",
|
||||
"@webpack-cli/info": "^1.2.1",
|
||||
"@webpack-cli/serve": "^1.2.1",
|
||||
"colorette": "^1.2.1",
|
||||
"command-line-usage": "^6.1.0",
|
||||
"commander": "^6.2.0",
|
||||
"enquirer": "^2.3.6",
|
||||
"execa": "^4.1.0",
|
||||
"execa": "^5.0.0",
|
||||
"fastest-levenshtein": "^1.0.12",
|
||||
"import-local": "^3.0.2",
|
||||
"interpret": "^2.2.0",
|
||||
"leven": "^3.1.0",
|
||||
"rechoir": "^0.7.0",
|
||||
"v8-compile-cache": "^2.2.0",
|
||||
"webpack-merge": "^4.2.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz",
|
||||
"integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
|
|
@ -4173,16 +4114,6 @@
|
|||
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
|
||||
"dev": true
|
||||
},
|
||||
"wordwrapjs": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz",
|
||||
"integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"reduce-flatten": "^2.0.0",
|
||||
"typical": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
|
|
@ -4200,9 +4131,9 @@
|
|||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz",
|
||||
"integrity": "sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ=="
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz",
|
||||
"integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA=="
|
||||
},
|
||||
"xdg-basedir": {
|
||||
"version": "4.0.0",
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
"dotenv": "^8.2.0",
|
||||
"express": "^4.17.1",
|
||||
"form-data": "^3.0.0",
|
||||
"helmet": "^4.2.0",
|
||||
"helmet": "^4.3.1",
|
||||
"mariadb": "^2.5.2",
|
||||
"mime-types": "^2.1.27",
|
||||
"mime-types": "^2.1.28",
|
||||
"multer": "^1.4.2",
|
||||
"mysql2": "^2.2.5",
|
||||
"nodemon": "^2.0.6",
|
||||
|
|
@ -17,12 +17,12 @@
|
|||
"sqlite3": "^5.0.0",
|
||||
"umzug": "^2.3.0",
|
||||
"uuid": "^8.3.2",
|
||||
"ws": "^7.4.1"
|
||||
"ws": "^7.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.16.0",
|
||||
"webpack": "^5.11.0",
|
||||
"webpack-cli": "^4.2.0",
|
||||
"eslint": "^7.17.0",
|
||||
"webpack": "^5.11.1",
|
||||
"webpack-cli": "^4.3.1",
|
||||
"webpack-node-externals": "^2.5.2"
|
||||
},
|
||||
"license": "LICENSE",
|
||||
|
|
@ -39,5 +39,5 @@
|
|||
"build": "webpack",
|
||||
"start": "nodemon"
|
||||
},
|
||||
"version": "4.8.5"
|
||||
"version": "4.9.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* *****************************************************************************
|
||||
* Copyright (C) 2019-2020 Chrystian Huot
|
||||
* Copyright (C) 2019-2021 Chrystian Huot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
Loading…
Reference in a new issue