mirror of
https://github.com/chuot/rdio-scanner.git
synced 2026-08-13 16:33:01 -06:00
Happy new year: new version 2.5
This commit is contained in:
parent
15afca79a1
commit
193d346d8c
|
|
@ -1,14 +1,16 @@
|
|||
# Rdio Scanner v2.1
|
||||
# Rdio Scanner v2.5
|
||||
|
||||
*Rdio Scanner* is a progressive web interface designed to resemble an old school radio scanner. It integrates all frontend / backend components to manage audio files from different sources.
|
||||
|
||||
For now, only [Trunk Recorder](https://github.com/robotastic/trunk-recorder) software files can be used, but other audio sources can be added later on request.
|
||||
|
||||
Need help?
|
||||
|
||||
[](https://gitter.im/rdio-scanner/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link)
|
||||
|
||||
## What's new in this version
|
||||
|
||||
Version 2.1 focuses on various speed improvements for searching stored calls.
|
||||
Version 2.5 add a new feature where you can toggle talkgroups according to their defined group (emergency, fire, law, transport, ...).
|
||||
|
||||
Version 2.0 is a major rewrite in which Meteor has been replaced by [The Apollo Data Graph Platform](https://www.apollographql.com/) for its API. MongoDB is also replaced by [SQLite](https://www.sqlite.org/) to facilitate the entire installation process. It is still possible to use another database by changing [Sequelize ORM](https://sequelize.org/) settings accordingly.
|
||||
|
||||
|
|
@ -67,7 +69,7 @@ Note that if you change the talkgroups selection while holding a system or a tal
|
|||
|
||||
### Talkgroups selection screen
|
||||
|
||||
The talkgroups selection screen is where you select the talkgroups. You can either select them individually, by system or globally.
|
||||
The talkgroups selection screen is where you select the talkgroups. You can either select them individually, by system, by group or globally.
|
||||
|
||||
Enabled talkgroup calls will be queued for listening.
|
||||
|
||||
|
|
|
|||
20
client/package-lock.json
generated
20
client/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner-client",
|
||||
"version": "2.1.0",
|
||||
"version": "2.5.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -1056,9 +1056,9 @@
|
|||
}
|
||||
},
|
||||
"@angular/flex-layout": {
|
||||
"version": "8.0.0-beta.26",
|
||||
"resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-8.0.0-beta.26.tgz",
|
||||
"integrity": "sha512-lXDLlMSNQhidW0grvisIsj/3gqLuYyN2MvABuRYybnFTc233sXGZuOAaulqq663LA0/DP/GNcz6a+A4ZAAlmPA==",
|
||||
"version": "8.0.0-beta.27",
|
||||
"resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-8.0.0-beta.27.tgz",
|
||||
"integrity": "sha512-qmpvQPesU4ZQ56IscwgmVRpK2UnyV+gwvXUql7TMv0QV215hLcHczjGsrKkLfW2By5E7XEyDat9br72uVXcPMw==",
|
||||
"requires": {
|
||||
"tslib": "^1.7.1"
|
||||
}
|
||||
|
|
@ -2025,9 +2025,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "12.12.21",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.21.tgz",
|
||||
"integrity": "sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA=="
|
||||
"version": "13.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.4.tgz",
|
||||
"integrity": "sha512-Lue/mlp2egZJoHXZr4LndxDAd7i/7SQYhV0EjWfb/a4/OZ6tuVwMCVPiwkU5nsEipxEf7hmkSU7Em5VQ8P5NGA=="
|
||||
},
|
||||
"@types/source-list-map": {
|
||||
"version": "0.1.2",
|
||||
|
|
@ -8235,9 +8235,9 @@
|
|||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "6.5.3",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
|
||||
"integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
|
||||
"version": "6.5.4",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
|
||||
"integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner-client",
|
||||
"version": "2.1.0",
|
||||
"version": "2.5.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "ng build --cross-origin use-credentials --prod $*",
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
"@angular/common": "~8.2.14",
|
||||
"@angular/compiler": "~8.2.14",
|
||||
"@angular/core": "~8.2.14",
|
||||
"@angular/flex-layout": "^8.0.0-beta.26",
|
||||
"@angular/flex-layout": "^8.0.0-beta.27",
|
||||
"@angular/forms": "~8.2.14",
|
||||
"@angular/material": "^8.2.3",
|
||||
"@angular/platform-browser": "~8.2.14",
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
"apollo-link-ws": "^1.0.19",
|
||||
"graphql": "^14.5.8",
|
||||
"graphql-tag": "^2.10.1",
|
||||
"rxjs": "~6.5.3",
|
||||
"rxjs": "~6.5.4",
|
||||
"subscriptions-transport-ws": "^0.9.16",
|
||||
"tslib": "^1.10.0",
|
||||
"zone.js": "~0.10.2"
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
"@angular/cli": "~8.3.21",
|
||||
"@angular/compiler-cli": "~8.2.14",
|
||||
"@angular/language-service": "~8.2.14",
|
||||
"@types/node": "~12.12.21",
|
||||
"@types/node": "~13.1.4",
|
||||
"codelyzer": "^5.2.1",
|
||||
"ts-node": "~8.5.4",
|
||||
"tslint": "~5.20.1",
|
||||
|
|
|
|||
|
|
@ -149,21 +149,27 @@
|
|||
<button (click)="toggleSelectPanel(false)" mat-icon-button>
|
||||
<mat-icon>arrow_back</mat-icon>
|
||||
</button>
|
||||
<ng-container *ngIf="systems.length > 1">
|
||||
</mat-toolbar>
|
||||
<fieldset>
|
||||
<div fxLayout="row wrap" fxLayoutAlign="space-between">
|
||||
<button *ngFor="let group of groups" class="rdio-button" (click)="toggleGroup(group.name)"
|
||||
[ngClass]="group.status">
|
||||
{{ group.name }}
|
||||
</button>
|
||||
<button class="rdio-button-mini all-off" (click)="avoid({ all: false })">
|
||||
OFF
|
||||
</button>
|
||||
<button class="rdio-button-mini all-on" (click)="avoid({ all: true })">
|
||||
ON
|
||||
</button>
|
||||
</ng-container>
|
||||
</mat-toolbar>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset *ngFor="let system of systems">
|
||||
<legend>
|
||||
{{ system.name }}
|
||||
</legend>
|
||||
<div fxLayout="row wrap" fxLayoutAlign="space-between">
|
||||
<button *ngFor="let talkgroup of system.talkgroups" class="rdio-button on"
|
||||
<button *ngFor="let talkgroup of system.talkgroups" class="rdio-button"
|
||||
(click)="avoid({ system: system, talkgroup: talkgroup })"
|
||||
[ngClass]="{ off: !(selection[system.system] && selection[system.system][talkgroup.dec]), on: selection[system.system] && selection[system.system][talkgroup.dec] }">
|
||||
{{ talkgroup.alphaTag }}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
* {
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
|
||||
&,
|
||||
.mat-sidenav,
|
||||
|
|
@ -59,10 +59,13 @@
|
|||
|
||||
&:active {
|
||||
top: 4px;
|
||||
transform: scale(.98);
|
||||
transform-origin: bottom center;
|
||||
}
|
||||
|
||||
&.off::after,
|
||||
&.on::after {
|
||||
&.on::after,
|
||||
&.partial::after {
|
||||
content: '';
|
||||
border-radius: 4px;
|
||||
display: block;
|
||||
|
|
@ -82,6 +85,11 @@
|
|||
background: rgb(100, 230, 50);
|
||||
box-shadow: 1px 1px 1px rgb(255, 255, 255) inset, 0 0 3px 2px rgb(100, 230, 50);
|
||||
}
|
||||
|
||||
&.partial::after {
|
||||
background: rgb(230, 165, 50);
|
||||
box-shadow: 1px 1px 1px rgb(255, 255, 255) inset, 0 0 3px 2px rgb(230, 165, 50);
|
||||
}
|
||||
}
|
||||
|
||||
.rdio-button {
|
||||
|
|
@ -200,6 +208,12 @@
|
|||
}
|
||||
}
|
||||
|
||||
.rdio-main,
|
||||
.rdio-search,
|
||||
.rdio-select {
|
||||
min-width: 370px;
|
||||
}
|
||||
|
||||
.rdio-main {
|
||||
box-sizing: border-box;
|
||||
margin: auto;
|
||||
|
|
@ -208,7 +222,6 @@
|
|||
justify-content: center;
|
||||
max-width: 640px;
|
||||
min-height: 100%;
|
||||
min-width: 270px;
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
|
|
@ -311,4 +324,24 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 720px) {
|
||||
.rdio-button {
|
||||
width: calc(20% - 8px);
|
||||
}
|
||||
|
||||
.rdio-button-mini {
|
||||
width: calc(10% - 8px);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.rdio-button {
|
||||
width: calc(10% - 8px);
|
||||
}
|
||||
|
||||
.rdio-button-mini {
|
||||
width: calc(5% - 8px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,17 @@ declare var webkitAudioContext: any;
|
|||
|
||||
const LOCAL_STORAGE_KEY = 'rdio-scanner';
|
||||
|
||||
enum RdioScannerGroupStatus {
|
||||
Off = 'off',
|
||||
On = 'on',
|
||||
Partial = 'partial',
|
||||
}
|
||||
|
||||
interface RdioScannerGroup {
|
||||
name: string;
|
||||
status: RdioScannerGroupStatus;
|
||||
}
|
||||
|
||||
interface RdioScannerSelection {
|
||||
[key: string]: {
|
||||
[key: string]: boolean;
|
||||
|
|
@ -40,6 +51,7 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
get displayTag() { return this._displayTag; }
|
||||
get displayTalkgroup() { return this._displayTalkgroup; }
|
||||
get displayUnit() { return this._displayUnit; }
|
||||
get groups() { return this._groups; }
|
||||
get livefeedPaused() { return this._livefeedPaused; }
|
||||
get livefeedStatus() { return !!this.livefeedSubscription; }
|
||||
get searchForm() { return this._searchForm; }
|
||||
|
|
@ -71,6 +83,7 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
private _displayTag = 'Tag';
|
||||
private _displayTalkgroup = 0;
|
||||
private _displayUnit = 0;
|
||||
private _groups: RdioScannerGroup[] = [];
|
||||
private _livefeedPaused = false;
|
||||
private _searchForm: FormGroup = this.ngFormBuilder.group({
|
||||
date: [null],
|
||||
|
|
@ -162,6 +175,8 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
this.buildGroups();
|
||||
|
||||
if (this.call && !(this.selection && this.selection[this.call.system] &&
|
||||
this._selection[this.call.system][this.call.talkgroup])) {
|
||||
this.skip();
|
||||
|
|
@ -422,6 +437,38 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
toggleGroup(name: string): void {
|
||||
const group = this.groups.find((_group) => _group.name === name);
|
||||
|
||||
if (group) {
|
||||
const status = group.status === RdioScannerGroupStatus.On ? false : true;
|
||||
|
||||
this.systems.forEach((system) => {
|
||||
system.talkgroups.forEach((talkgroup) => {
|
||||
if (talkgroup.group === name) {
|
||||
this.selection[system.system][talkgroup.dec] = status;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
this.buildGroups();
|
||||
|
||||
if (this.call && !(this.selection && this.selection[this.call.system] &&
|
||||
this._selection[this.call.system][this.call.talkgroup])) {
|
||||
this.skip();
|
||||
}
|
||||
|
||||
if (this.livefeedStatus) {
|
||||
this.unsubscribeLivefeed();
|
||||
this.subscribeLivefeed();
|
||||
}
|
||||
|
||||
this.writeSelection();
|
||||
|
||||
this.cleanQueue();
|
||||
}
|
||||
}
|
||||
|
||||
toggleSearchPanel(opened = !this.searchPanelOpened): void {
|
||||
if (opened) {
|
||||
this.loadStoredCalls();
|
||||
|
|
@ -460,9 +507,42 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
events.forEach((event) => document.body.addEventListener(event, bootstrap));
|
||||
}
|
||||
|
||||
private cleanQueue(): void {
|
||||
const queueLength = this.callQueue.length;
|
||||
private buildGroups(): void {
|
||||
const groups: RdioScannerGroup[] = [];
|
||||
|
||||
this.systems.forEach((system: RdioScannerSystem) => {
|
||||
system.talkgroups
|
||||
.forEach((talkgroup: RdioScannerTalkgroup) => {
|
||||
const group = groups.find((_group) => _group.name === talkgroup.group);
|
||||
|
||||
if (!group) {
|
||||
const allOn = this.systems.every((sys) => {
|
||||
return sys.talkgroups.filter((tg) => tg.group === talkgroup.group)
|
||||
.every((tg) => this.selection[sys.system][tg.dec]);
|
||||
});
|
||||
|
||||
const allOff = this.systems.every((sys) => {
|
||||
return sys.talkgroups.filter((tg) => tg.group === talkgroup.group)
|
||||
.every((tg) => !this.selection[sys.system][tg.dec]);
|
||||
});
|
||||
|
||||
const name = talkgroup.group;
|
||||
|
||||
const status = allOn ? RdioScannerGroupStatus.On
|
||||
: allOff ? RdioScannerGroupStatus.Off
|
||||
: RdioScannerGroupStatus.Partial;
|
||||
|
||||
groups.push({ name, status });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
groups.sort((a, b) => a.name.localeCompare(b.name));
|
||||
|
||||
this.groups.splice(0, this.groups.length, ...groups);
|
||||
}
|
||||
|
||||
private cleanQueue(): void {
|
||||
this._callQueue = this.callQueue.filter((call: RdioScannerCall) => {
|
||||
return this.selection && this.selection[call.system] && this.selection[call.system][call.talkgroup];
|
||||
});
|
||||
|
|
@ -476,53 +556,6 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
.concat(' Hz');
|
||||
}
|
||||
|
||||
private processCall(call: RdioScannerCall): void {
|
||||
if (call !== null && typeof call === 'object') {
|
||||
call = this.transformCall(call);
|
||||
this.queue(call);
|
||||
}
|
||||
}
|
||||
|
||||
private processSystems(systems: RdioScannerSystem[]): void {
|
||||
if (Array.isArray(systems)) {
|
||||
this.systems.splice(0, this.systems.length, ...systems);
|
||||
|
||||
this.readSelection();
|
||||
this.rebuildSelection();
|
||||
this.writeSelection();
|
||||
}
|
||||
}
|
||||
|
||||
private readSelection(): any {
|
||||
if (window instanceof Window && window.localStorage instanceof Storage) {
|
||||
try {
|
||||
this._selection = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY));
|
||||
} catch (err) {
|
||||
this._selection = {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private rebuildSelection(): void {
|
||||
this._selection = this.systems.reduce((sa, sv) => {
|
||||
const tgs = sv.talkgroups.map((tg) => tg.dec.toString());
|
||||
|
||||
if (Array.isArray(sa[sv.system])) {
|
||||
Object.keys(sa[sv.system]).forEach((tg) => {
|
||||
if (!tgs.includes(tg)) {
|
||||
delete sa[sv.system][tg];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
sa[sv.system] = sv.talkgroups.reduce((ta, tv) => {
|
||||
ta[tv.dec] = typeof ta[tv.dec] === 'boolean' ? ta[tv.dec] : true;
|
||||
return ta;
|
||||
}, sa[sv.system] || {});
|
||||
return sa;
|
||||
}, this.selection || {});
|
||||
}
|
||||
|
||||
private async loadStoredCalls(filters?: any): Promise<void> {
|
||||
const limit = this.searchResultsBuffer.length;
|
||||
|
||||
|
|
@ -602,6 +635,55 @@ export class AppRdioScannerComponent implements OnDestroy, OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
private processCall(call: RdioScannerCall): void {
|
||||
if (call !== null && typeof call === 'object') {
|
||||
call = this.transformCall(call);
|
||||
this.queue(call);
|
||||
}
|
||||
}
|
||||
|
||||
private processSystems(systems: RdioScannerSystem[]): void {
|
||||
if (Array.isArray(systems)) {
|
||||
this.systems.splice(0, this.systems.length, ...systems);
|
||||
|
||||
this.readSelection();
|
||||
this.rebuildSelection();
|
||||
this.writeSelection();
|
||||
|
||||
this.buildGroups();
|
||||
}
|
||||
}
|
||||
|
||||
private readSelection(): any {
|
||||
if (window instanceof Window && window.localStorage instanceof Storage) {
|
||||
try {
|
||||
this._selection = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY));
|
||||
} catch (err) {
|
||||
this._selection = {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private rebuildSelection(): void {
|
||||
this._selection = this.systems.reduce((sa, sv) => {
|
||||
const tgs = sv.talkgroups.map((tg) => tg.dec.toString());
|
||||
|
||||
if (Array.isArray(sa[sv.system])) {
|
||||
Object.keys(sa[sv.system]).forEach((tg) => {
|
||||
if (!tgs.includes(tg)) {
|
||||
delete sa[sv.system][tg];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
sa[sv.system] = sv.talkgroups.reduce((ta, tv) => {
|
||||
ta[tv.dec] = typeof ta[tv.dec] === 'boolean' ? ta[tv.dec] : true;
|
||||
return ta;
|
||||
}, sa[sv.system] || {});
|
||||
return sa;
|
||||
}, this.selection || {});
|
||||
}
|
||||
|
||||
private subscribeSearchForm(): void {
|
||||
let lastValue = this.searchForm.value;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
1001,3e9,D,BLAINVILLE *1,HQ Blainville Main,Utilities,Utilities,1
|
||||
1002,3ea,D,BLAINVILLE *2,HQ Blainville Travail,Utilities,1
|
||||
1003,3eb,D,BLAINVILLE *3,HQ Blainville Autre,Utilities,2
|
||||
1001,3e9,D,BLAINVILLE *1,HQ Blainville Main,Utilities,UTILITY,1
|
||||
1002,3ea,D,BLAINVILLE *2,HQ Blainville Travail,Utilities,UTILITY,1
|
||||
1003,3eb,D,BLAINVILLE *3,HQ Blainville Autre,Utilities,UTILITY,1
|
||||
|
|
|
|||
|
|
|
@ -1,37 +1,37 @@
|
|||
54241,d3e1,D,ALPHA 1,MRC TDB Fire Alpha 1,Fire Dispatch,Fire,1
|
||||
54242,d3e2,D,BRAVO 1,MRC TDB Fire Bravo 1,Fire Talk,Fire,1
|
||||
54243,d3e3,D,BRAVO 2,MRC TDB Fire Bravo 2,Fire Talk,Fire,1
|
||||
54248,d3e8,D,BRAVO 3,MRC TDB Fire Bravo 3,Fire Talk,Fire,1
|
||||
54251,d3eb,D,BRAVO 4,MRC TDB Fire Bravo 4,Fire Talk,Fire,1
|
||||
54261,d3f5,D,BRAVO 5,MRC TDB Fire Bravo 5,Fire Talk,Fire,1
|
||||
54244,d3e4,D,BRAVO 6,MRC TDB Fire Bravo 6,Fire Talk,Fire,1
|
||||
54129,d371,D,BRAVO 7,MRC TDB Fire Bravo 7,Fire Talk,Fire,1
|
||||
54125,d36d,D,BRAVO 8,MRC TDB Fire Bravo 8,Fire Talk,Fire,1
|
||||
54005,d2f5,D,D-M FD,Deux-Montagnes Fire Dispatch,Fire Dispatch,Fire,1
|
||||
54239,d3df,D,SADP FD,Ste-Anne-des-Plaines Fire Dispatch,Fire Dispatch,Fire,1
|
||||
54200,d3b8,D,ST ANN,St-Eustache General Announcement,Fire Talk,Fire,2
|
||||
54201,d3b9,D,SE GEN,St-Eustache General,Fire Talk,Fire,2
|
||||
54202,d3ba,D,SE OP1,St-Eustache Operations,Fire Talk,Fire,2
|
||||
54203,d3bb,D,SE PRV,St-Eustache Prevention,Fire Tac,Fire,2
|
||||
54206,d3be,D,SE CCU,St-Eustache Mesure d'Urgence,Interop,Fire,2
|
||||
56201,db89,D,DSURGEN,YUL Security Dispatch,Security,Security,2
|
||||
56202,db8a,D,DSURTAC,YUL Security Tactical,Security,Security,2
|
||||
56203,db8b,D,DSUROP,YUL Security Operations,Security,Security,2
|
||||
56211,db93,D,DINCOPS,YUL Fire Dispatch,Fire Dispatch,Fire,1
|
||||
56212,db94,D,DINCTAC,YUL Tactical,Fire Tac,Fire,1
|
||||
56218,db9a,D,DCCU,YUL CCU,Utilities,Utility,3
|
||||
56221,db9d,D,DBATIM,YUL Batiment,Utilities,Utility,3
|
||||
56222,db9e,D,DSCHAMP,YUL SCHAMP,Utilities,Utility,3
|
||||
56223,db9f,D,DFOULE,YUL Foule,Utilities,Utility,3
|
||||
56224,dba0,D,DACCES,YUL Acces,Utilities,Utility,3
|
||||
56225,dba1,D,DELECTR,YUL Electricity,Utilities,Utility,3
|
||||
56226,dba2,D,DPISTE,YUL Piste,Utilities,Utility,3
|
||||
56227,dba3,D,DTABLIER,YUL Tablier,Utilities,Utility,3
|
||||
56228,dba4,D,DVTP,YUL VTP,Utilities,Utility,3
|
||||
56229,dba5,D,DPONT,YUL Pont,Utilities,Utility,3
|
||||
56232,dba8,D,DINSTALL,YUL Install,Utilities,Utility,3
|
||||
56204,db8c,D,MSURGEN,YMX Security Dispatch,Security,Security,3
|
||||
56213,db95,D,MINCOPS,YMX Fire Dispatch,Fire Dispatch,Fire,1
|
||||
56214,db96,D,MINCTAC,YMX Fire Tactical,Fire Tac,Fire,1
|
||||
56219,db9b,D,MCCU,YMX CCU,Utilities,Utility,3
|
||||
56231,dba7,D,MPISTE,YMX PISTE,Utilities,Utility,3
|
||||
54241,d3e1,D,ALPHA 1,MRC TDB Fire Alpha 1,Fire Dispatch,FIRE,1
|
||||
54242,d3e2,D,BRAVO 1,MRC TDB Fire Bravo 1,Fire Talk,FIRE,1
|
||||
54243,d3e3,D,BRAVO 2,MRC TDB Fire Bravo 2,Fire Talk,FIRE,1
|
||||
54248,d3e8,D,BRAVO 3,MRC TDB Fire Bravo 3,Fire Talk,FIRE,1
|
||||
54251,d3eb,D,BRAVO 4,MRC TDB Fire Bravo 4,Fire Talk,FIRE,1
|
||||
54261,d3f5,D,BRAVO 5,MRC TDB Fire Bravo 5,Fire Talk,FIRE,1
|
||||
54244,d3e4,D,BRAVO 6,MRC TDB Fire Bravo 6,Fire Talk,FIRE,1
|
||||
54129,d371,D,BRAVO 7,MRC TDB Fire Bravo 7,Fire Talk,FIRE,1
|
||||
54125,d36d,D,BRAVO 8,MRC TDB Fire Bravo 8,Fire Talk,FIRE,1
|
||||
54005,d2f5,D,D-M FD,Deux-Montagnes Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
54239,d3df,D,SADP FD,Ste-Anne-des-Plaines Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
54200,d3b8,D,ST ANN,St-Eustache General Announcement,Fire Talk,FIRE,2
|
||||
54201,d3b9,D,SE GEN,St-Eustache General,Fire Talk,FIRE,2
|
||||
54202,d3ba,D,SE OP1,St-Eustache Operations,Fire Talk,FIRE,2
|
||||
54203,d3bb,D,SE PRV,St-Eustache Prevention,Fire Tac,FIRE,2
|
||||
54206,d3be,D,SE CCU,St-Eustache Mesure d'urgence,Interop,EMERGENCY,2
|
||||
56201,db89,D,DSURGEN,YUL Security Dispatch,Security,SECURITY,2
|
||||
56202,db8a,D,DSURTAC,YUL Security Tactical,Security,SECURITY,2
|
||||
56203,db8b,D,DSUROP,YUL Security Operations,Security,SECURITY,2
|
||||
56211,db93,D,DINCOPS,YUL Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
56212,db94,D,DINCTAC,YUL Tactical,Fire Tac,FIRE,1
|
||||
56218,db9a,D,DCCU,YUL CCU,Mesure d'urgence,EMERGENCY,3
|
||||
56221,db9d,D,DBATIM,YUL Batiment,Utilities,UTILITY,3
|
||||
56222,db9e,D,DSCHAMP,YUL SCHAMP,Utilities,UTILITY,3
|
||||
56223,db9f,D,DFOULE,YUL Foule,Utilities,UTILITY,3
|
||||
56224,dba0,D,DACCES,YUL Acces,Utilities,UTILITY,3
|
||||
56225,dba1,D,DELECTR,YUL Electricity,Utilities,UTILITY,3
|
||||
56226,dba2,D,DPISTE,YUL Piste,Utilities,UTILITY,3
|
||||
56227,dba3,D,DTABLIER,YUL Tablier,Utilities,UTILITY,3
|
||||
56228,dba4,D,DVTP,YUL VTP,Utilities,UTILITY,3
|
||||
56229,dba5,D,DPONT,YUL Pont,Utilities,UTILITY,3
|
||||
56232,dba8,D,DINSTALL,YUL Install,Utilities,UTILITY,3
|
||||
56204,db8c,D,MSURGEN,YMX Security Dispatch,Security,SECURITY,3
|
||||
56213,db95,D,MINCOPS,YMX Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
56214,db96,D,MINCTAC,YMX Fire Tactical,Fire Tac,FIRE,1
|
||||
56219,db9b,D,MCCU,YMX CCU,Mesure d'urgence,EMERGENCY,3
|
||||
56231,dba7,D,MPISTE,YMX PISTE,Utilities,UTILITY,3
|
||||
|
|
|
|||
|
|
|
@ -1,9 +1,9 @@
|
|||
54153,d389,D,ASSOMP FD,L'Assomption Fire Dispatch,Fire Dispatch,Fire,1
|
||||
54171,d39b,D,MASCOU FD,Mascouche Fire Dispatch,Fire Dispatch,Fire,1
|
||||
54141,d37d,D,REPENT FD1,Repentigny Fire Dispatch 1,Fire Dispatch,Fire,1
|
||||
54142,d37e,D,REPENT FD2,Repentigny Fire Dispatch 2,Fire Talk,Fire,1
|
||||
54143,d37f,D,REPENT FO,Repentigny Fire Operations,Fire Talk,Fire,1
|
||||
54144,d380,D,REPENT FP,Repentigny Fire Prevention,Fire Talk,Fire,1
|
||||
54145,d381,D,REPENT EM,Repentigny Emergency Measure,Fire Talk,Fire,1
|
||||
54231,d3d7,D,TERREB FD,Terrebonne Fire Dispatch,Fire Dispatch,Fire,1
|
||||
54232,d3d8,D,TERREB FO,Terrebonne Fire Operations,Fire Tac,Fire,1
|
||||
54153,d389,D,ASSOMP FD,L'Assomption Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
54171,d39b,D,MASCOU FD,Mascouche Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
54141,d37d,D,REPENT FD1,Repentigny Fire Dispatch 1,Fire Dispatch,FIRE,1
|
||||
54142,d37e,D,REPENT FD2,Repentigny Fire Dispatch 2,Fire Talk,FIRE,1
|
||||
54143,d37f,D,REPENT FO,Repentigny Fire Operations,Fire Talk,FIRE,1
|
||||
54144,d380,D,REPENT FP,Repentigny Fire Prevention,Fire Talk,FIRE,1
|
||||
54145,d381,D,REPENT EM,Repentigny Emergency Measure,Fire Talk,FIRE,1
|
||||
54231,d3d7,D,TERREB FD,Terrebonne Fire Dispatch,Fire Dispatch,FIRE,1
|
||||
54232,d3d8,D,TERREB FO,Terrebonne Fire Operations,Fire Tac,FIRE,1
|
||||
|
|
|
|||
|
|
|
@ -1,47 +1,47 @@
|
|||
60040,ea88,D,GENERALE,SERAM Appel generale,Fire Dispatch,Fire,1
|
||||
60041,ea89,D,A1 REPART,Repartition,Fire Dispatch,Fire,1
|
||||
50001,c351,D,SG 1,SERAM Regroupement 1,Fire Dispatch,Fire,1
|
||||
50002,c352,D,SG 2,SERAM Regroupement 2,Fire Dispatch,Fire,1
|
||||
50003,c353,D,SG 3,SERAM Regroupement 3,Fire Dispatch,Fire,1
|
||||
50004,c354,D,SG 4,SERAM Regroupement 4,Fire Dispatch,Fire,1
|
||||
50005,c355,D,SG 5,SERAM Regroupement 5,Fire Dispatch,Fire,1
|
||||
50006,c356,D,SG 6,SERAM Regroupement 6,Fire Dispatch,Fire,1
|
||||
50007,c357,D,SG 7,SERAM Regroupement 7,Fire Dispatch,Fire,1
|
||||
50008,c358,D,SG 8,SERAM Regroupement 8,Fire Dispatch,Fire,1
|
||||
60051,ea93,D,CMD 3,SERAM Commandement 3,Fire Dispatch,Fire,1
|
||||
60052,ea94,D,CMD 4,SERAM Commandement 4,Fire Dispatch,Fire,1
|
||||
60053,ea95,D,CMD 5,SERAM Commandement 5,Fire Dispatch,Fire,1
|
||||
60054,ea96,D,CMD 6,SERAM Commandement 6,Fire Dispatch,Fire,1
|
||||
60055,ea97,D,CMD 7,SERAM Commandement 7,Fire Dispatch,Fire,1
|
||||
60056,ea98,D,CMD 8,SERAM Commandement 8,Fire Dispatch,Fire,1
|
||||
60059,ea9b,D,CMD 11,SERAM Commandement 11,Fire Dispatch,Fire,1
|
||||
60091,eabb,D,CMD 12,SERAM Commandement 12,Fire Dispatch,Fire,1
|
||||
60092,eabc,D,CMD 13,SERAM Commandement 13,Fire Dispatch,Fire,1
|
||||
60057,ea99,D,CMD 14,SERAM Commandement 14,Fire Dispatch,Fire,1
|
||||
60061,ea9d,D,OPS 3,SERAM Operations 3,Fire Tac,Fire,1
|
||||
60062,ea9e,D,OPS 4,SERAM Operations 4,Fire Tac,Fire,1
|
||||
60063,ea9f,D,OPS 5,SERAM Operations 5,Fire Tac,Fire,1
|
||||
60064,eaa0,D,OPS 6,SERAM Operations 6,Fire Tac,Fire,1
|
||||
60065,eaa1,D,OPS 7,SERAM Operations 7,Fire Tac,Fire,1
|
||||
60066,eaa2,D,OPS 8,SERAM Operations 8,Fire Tac,Fire,1
|
||||
60069,eaa2,D,OPS 11,SERAM Operations 11,Fire Tac,Fire,1
|
||||
60093,eabd,D,OPS 12,SERAM Operations 12,Fire Tac,Fire,1
|
||||
60094,eabe,D,OPS 13,SERAM Operations 13,Fire Tac,Fire,1
|
||||
60067,eaa3,D,OPS 14,SERAM Operations 14,Fire Tac,Fire,1
|
||||
60042,ea8a,D,PR A,SERAM First Responders A,Fire Dispatch,Fire,1
|
||||
60043,ea8b,D,PR B,SERAM First Responders B,Fire Dispatch,Fire,1
|
||||
60058,ea9a,D,PCM A,SERAM Commandement A,Fire Tac,Fire,1
|
||||
60068,eaa4,D,PCM B,SERAM Commandement B,Fire Tac,Fire,1
|
||||
60080,eab0,D,PCM C,SERAM Commandement C,Fire Tac,Fire,1
|
||||
60081,eab1,D,935 A,SERAM 935 A,Fire Tac,Fire,1
|
||||
60082,eab2,D,935 B,SERAM 935 B,Fire Tac,Fire,1
|
||||
60079,eaaf,D,935 C,SERAM 935 C,Fire Tac,Fire,1
|
||||
60149,eaf5,D,EMERGENCY,SERAM Emergency,Fire-Tac,Fire,1
|
||||
60071,eaa7,D,SC 1,SERAM Civil Security 1,Emergency Ops,Emergency,1
|
||||
60072,eaa8,D,SC 2,SERAM Civil Security 2,Emergency Ops,Emergency,1
|
||||
60101,eac5,D,FORM 1,SERAM Training 1,Fire-Talk,Fire,2
|
||||
60102,eac6,D,FORM 2,SERAM Training 2,Fire-Talk,Fire,2
|
||||
60111,eacf,D,LIAISON,SERAM Liaison,Fire-Talk,Fire,2
|
||||
60112,ead0,D,LOGISTIC,SERAM Logistic,Fire-Talk,Fire,2
|
||||
60114,ead4,D,PREV RCI,SERAM Prevention RCI,Fire-Talk,Fire,2
|
||||
60294,eb86,D,DSRC MEDIA,SERAM Media,Info,Info,2
|
||||
60040,ea88,D,GENERALE,SERAM Appel generale,Fire Dispatch,FIRE,1
|
||||
60041,ea89,D,A1 REPART,Repartition,Fire Dispatch,FIRE,1
|
||||
50001,c351,D,SG 1,SERAM Regroupement 1,Fire Dispatch,FIRE,1
|
||||
50002,c352,D,SG 2,SERAM Regroupement 2,Fire Dispatch,FIRE,1
|
||||
50003,c353,D,SG 3,SERAM Regroupement 3,Fire Dispatch,FIRE,1
|
||||
50004,c354,D,SG 4,SERAM Regroupement 4,Fire Dispatch,FIRE,1
|
||||
50005,c355,D,SG 5,SERAM Regroupement 5,Fire Dispatch,FIRE,1
|
||||
50006,c356,D,SG 6,SERAM Regroupement 6,Fire Dispatch,FIRE,1
|
||||
50007,c357,D,SG 7,SERAM Regroupement 7,Fire Dispatch,FIRE,1
|
||||
50008,c358,D,SG 8,SERAM Regroupement 8,Fire Dispatch,FIRE,1
|
||||
60051,ea93,D,CMD 3,SERAM Commandement 3,Fire Dispatch,FIRE,1
|
||||
60052,ea94,D,CMD 4,SERAM Commandement 4,Fire Dispatch,FIRE,1
|
||||
60053,ea95,D,CMD 5,SERAM Commandement 5,Fire Dispatch,FIRE,1
|
||||
60054,ea96,D,CMD 6,SERAM Commandement 6,Fire Dispatch,FIRE,1
|
||||
60055,ea97,D,CMD 7,SERAM Commandement 7,Fire Dispatch,FIRE,1
|
||||
60056,ea98,D,CMD 8,SERAM Commandement 8,Fire Dispatch,FIRE,1
|
||||
60059,ea9b,D,CMD 11,SERAM Commandement 11,Fire Dispatch,FIRE,1
|
||||
60091,eabb,D,CMD 12,SERAM Commandement 12,Fire Dispatch,FIRE,1
|
||||
60092,eabc,D,CMD 13,SERAM Commandement 13,Fire Dispatch,FIRE,1
|
||||
60057,ea99,D,CMD 14,SERAM Commandement 14,Fire Dispatch,FIRE,1
|
||||
60061,ea9d,D,OPS 3,SERAM Operations 3,Fire Tac,FIRE,1
|
||||
60062,ea9e,D,OPS 4,SERAM Operations 4,Fire Tac,FIRE,1
|
||||
60063,ea9f,D,OPS 5,SERAM Operations 5,Fire Tac,FIRE,1
|
||||
60064,eaa0,D,OPS 6,SERAM Operations 6,Fire Tac,FIRE,1
|
||||
60065,eaa1,D,OPS 7,SERAM Operations 7,Fire Tac,FIRE,1
|
||||
60066,eaa2,D,OPS 8,SERAM Operations 8,Fire Tac,FIRE,1
|
||||
60069,eaa2,D,OPS 11,SERAM Operations 11,Fire Tac,FIRE,1
|
||||
60093,eabd,D,OPS 12,SERAM Operations 12,Fire Tac,FIRE,1
|
||||
60094,eabe,D,OPS 13,SERAM Operations 13,Fire Tac,FIRE,1
|
||||
60067,eaa3,D,OPS 14,SERAM Operations 14,Fire Tac,FIRE,1
|
||||
60042,ea8a,D,PR A,SERAM First Responders A,Fire Dispatch,FIRE,1
|
||||
60043,ea8b,D,PR B,SERAM First Responders B,Fire Dispatch,FIRE,1
|
||||
60058,ea9a,D,PCM A,SERAM Commandement A,Fire Tac,FIRE,1
|
||||
60068,eaa4,D,PCM B,SERAM Commandement B,Fire Tac,FIRE,1
|
||||
60080,eab0,D,PCM C,SERAM Commandement C,Fire Tac,FIRE,1
|
||||
60081,eab1,D,935 A,SERAM 935 A,Fire Tac,FIRE,1
|
||||
60082,eab2,D,935 B,SERAM 935 B,Fire Tac,FIRE,1
|
||||
60079,eaaf,D,935 C,SERAM 935 C,Fire Tac,FIRE,1
|
||||
60149,eaf5,D,EMERGENCY,SERAM Emergency,Fire-Tac,EMERGENCY,1
|
||||
60071,eaa7,D,SC 1,SERAM Civil Security 1,Emergency Ops,EMERGENCY,1
|
||||
60072,eaa8,D,SC 2,SERAM Civil Security 2,Emergency Ops,EMERGENCY,1
|
||||
60101,eac5,D,FORM 1,SERAM Training 1,Fire-Talk,FIRE,2
|
||||
60102,eac6,D,FORM 2,SERAM Training 2,Fire-Talk,FIRE,2
|
||||
60111,eacf,D,LIAISON,SERAM Liaison,Fire-Talk,FIRE,2
|
||||
60112,ead0,D,LOGISTIC,SERAM Logistic,Fire-Talk,FIRE,2
|
||||
60114,ead4,D,PREV RCI,SERAM Prevention RCI,Fire-Talk,FIRE,2
|
||||
60294,eb86,D,DSRC MEDIA,SERAM Media,Info,INFO,2
|
||||
|
|
|
|||
|
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 205 KiB |
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner",
|
||||
"version": "2.1.0",
|
||||
"version": "2.5.0",
|
||||
"private": true,
|
||||
"main": "run.js",
|
||||
"scripts": {
|
||||
|
|
|
|||
283
server/package-lock.json
generated
283
server/package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner-server",
|
||||
"version": "2.1.0",
|
||||
"version": "2.5.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
@ -25,9 +25,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "10.17.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.11.tgz",
|
||||
"integrity": "sha512-dNd2pp8qTzzNLAs3O8nH3iU9DG9866KHq9L3ISPB7DOGERZN81nW/5/g/KzMJpCU8jrbCiMRBzV9/sCEdRosig=="
|
||||
"version": "10.17.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz",
|
||||
"integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -211,9 +211,9 @@
|
|||
"integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ=="
|
||||
},
|
||||
"@types/keygrip": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.1.tgz",
|
||||
"integrity": "sha1-/1QEYtL7TQqIRBzq8n0oewHD2Hg="
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz",
|
||||
"integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
|
||||
},
|
||||
"@types/koa": {
|
||||
"version": "2.11.0",
|
||||
|
|
@ -368,35 +368,36 @@
|
|||
}
|
||||
},
|
||||
"apollo-cache-control": {
|
||||
"version": "0.8.9",
|
||||
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.8.9.tgz",
|
||||
"integrity": "sha512-EFRAEL13QkMbXhl0NSABVS0wfiKYIVV4sDR+XNtRy3EWf2rWw7xulYFDMPiujjtElF2qjTswzcpLtYOXgOZN9A==",
|
||||
"version": "0.8.10",
|
||||
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.8.10.tgz",
|
||||
"integrity": "sha512-1/CAEidIoY1PWw2mhwZChchK4fvLdHfdoB7AEikWMYFSbjYY6ZiayT+Q3z48wsiS/LTNugF/YJDJHQi4+qjuug==",
|
||||
"requires": {
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"graphql-extensions": "^0.10.8"
|
||||
"graphql-extensions": "^0.10.9"
|
||||
}
|
||||
},
|
||||
"apollo-datasource": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.6.3.tgz",
|
||||
"integrity": "sha512-gRYyFVpJgHE2hhS+VxMeOerxXQ/QYxWG7T6QddfugJWYAG9DRCl65e2b7txcGq2NP3r+O1iCm4GNwhRBDJbd8A==",
|
||||
"version": "0.6.4",
|
||||
"resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.6.4.tgz",
|
||||
"integrity": "sha512-u4eu6Q94q6KuZacZfdo4vCevA81F4QWeTYEXUvoksQMJpiacPHHe0DJrofKVKvxngUp5kCi1RnPXSc6kBY+/oA==",
|
||||
"requires": {
|
||||
"apollo-server-caching": "^0.5.0",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
"apollo-server-env": "^2.4.3"
|
||||
}
|
||||
},
|
||||
"apollo-engine-reporting": {
|
||||
"version": "1.4.12",
|
||||
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.4.12.tgz",
|
||||
"integrity": "sha512-W1PpXaXSrqZu4Ae9NrjWXtTL9HFbQPynQLiGDAsDmCsL/wRAVyl6qRhVteSj7drwgXgAH5TwtUCnjJgSI+ixlg==",
|
||||
"version": "1.4.13",
|
||||
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.4.13.tgz",
|
||||
"integrity": "sha512-p5fVmQigNGXoxCHnu8Bb6itNfwtjGnoyLf9i4oP0vfdSnTjaNI8KM7zXv16t1YnE/wsqYuieCnleoPSBReTy9Q==",
|
||||
"requires": {
|
||||
"apollo-engine-reporting-protobuf": "^0.4.4",
|
||||
"apollo-graphql": "^0.3.4",
|
||||
"apollo-server-caching": "^0.5.0",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"apollo-server-types": "^0.2.9",
|
||||
"apollo-server-errors": "^2.3.4",
|
||||
"apollo-server-types": "^0.2.10",
|
||||
"async-retry": "^1.2.1",
|
||||
"graphql-extensions": "^0.10.8"
|
||||
"graphql-extensions": "^0.10.9"
|
||||
}
|
||||
},
|
||||
"apollo-engine-reporting-protobuf": {
|
||||
|
|
@ -438,33 +439,33 @@
|
|||
}
|
||||
},
|
||||
"apollo-server-caching": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.0.tgz",
|
||||
"integrity": "sha512-l7ieNCGxUaUAVAAp600HjbUJxVaxjJygtPV0tPTe1Q3HkPy6LEWoY6mNHV7T268g1hxtPTxcdRu7WLsJrg7ufw==",
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.1.tgz",
|
||||
"integrity": "sha512-L7LHZ3k9Ao5OSf2WStvQhxdsNVplRQi7kCAPfqf9Z3GBEnQ2uaL0EgO0hSmtVHfXTbk5CTRziMT1Pe87bXrFIw==",
|
||||
"requires": {
|
||||
"lru-cache": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"apollo-server-core": {
|
||||
"version": "2.9.14",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.9.14.tgz",
|
||||
"integrity": "sha512-Vc8TicXFFZGuEgo5AY1Ey0XuvHn7NQS1y7WxOQnr85KJ2zeRa6uIT8tU+73ZObzan3nlm9ysYtfSXh2QL21oyg==",
|
||||
"version": "2.9.15",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.9.15.tgz",
|
||||
"integrity": "sha512-MgqtxZkUO2u7cSDQjp8feQlyHT/iZlKv3TV5kNy+xa9ewbfiR/qjziMsz46x+oVPBah+VH9WbGShSbVO0b2TJA==",
|
||||
"requires": {
|
||||
"@apollographql/apollo-tools": "^0.4.0",
|
||||
"@apollographql/graphql-playground-html": "1.6.24",
|
||||
"@types/graphql-upload": "^8.0.0",
|
||||
"@types/ws": "^6.0.0",
|
||||
"apollo-cache-control": "^0.8.9",
|
||||
"apollo-datasource": "^0.6.3",
|
||||
"apollo-engine-reporting": "^1.4.12",
|
||||
"apollo-server-caching": "^0.5.0",
|
||||
"apollo-cache-control": "^0.8.10",
|
||||
"apollo-datasource": "^0.6.4",
|
||||
"apollo-engine-reporting": "^1.4.13",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"apollo-server-errors": "^2.3.4",
|
||||
"apollo-server-plugin-base": "^0.6.9",
|
||||
"apollo-server-types": "^0.2.9",
|
||||
"apollo-tracing": "^0.8.9",
|
||||
"apollo-server-plugin-base": "^0.6.10",
|
||||
"apollo-server-types": "^0.2.10",
|
||||
"apollo-tracing": "^0.8.10",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"graphql-extensions": "^0.10.8",
|
||||
"graphql-extensions": "^0.10.9",
|
||||
"graphql-tag": "^2.9.2",
|
||||
"graphql-tools": "^4.0.0",
|
||||
"graphql-upload": "^8.0.2",
|
||||
|
|
@ -488,9 +489,9 @@
|
|||
"integrity": "sha512-Y0PKQvkrb2Kd18d1NPlHdSqmlr8TgqJ7JQcNIfhNDgdb45CnqZlxL1abuIRhr8tiw8OhVOcFxz2KyglBi8TKdA=="
|
||||
},
|
||||
"apollo-server-express": {
|
||||
"version": "2.9.14",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.9.14.tgz",
|
||||
"integrity": "sha512-ai+VKPlOUzJsbSQcazjATNtWwdgcvZBWBCbTF7ZUC9Uo6FfSlKOmP3raQAq+gKqsnFwv34p4k17c/Asw5ZjSMQ==",
|
||||
"version": "2.9.15",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.9.15.tgz",
|
||||
"integrity": "sha512-RrPFAW6QqxAGAlubdvxjluGc7SOr70H69ElLxDgXy3HREXN25Y4XZoCE+L3PoURwFy2mNtITZeDO7JKW1cbHNg==",
|
||||
"requires": {
|
||||
"@apollographql/graphql-playground-html": "1.6.24",
|
||||
"@types/accepts": "^1.3.5",
|
||||
|
|
@ -498,8 +499,8 @@
|
|||
"@types/cors": "^2.8.4",
|
||||
"@types/express": "4.17.1",
|
||||
"accepts": "^1.3.5",
|
||||
"apollo-server-core": "^2.9.14",
|
||||
"apollo-server-types": "^0.2.9",
|
||||
"apollo-server-core": "^2.9.15",
|
||||
"apollo-server-types": "^0.2.10",
|
||||
"body-parser": "^1.18.3",
|
||||
"cors": "^2.8.4",
|
||||
"express": "^4.17.1",
|
||||
|
|
@ -511,30 +512,30 @@
|
|||
}
|
||||
},
|
||||
"apollo-server-plugin-base": {
|
||||
"version": "0.6.9",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.6.9.tgz",
|
||||
"integrity": "sha512-75rorl0y07PK7A/U1Oe9unLIGgbmy1T6uaCQ5zl8zy+mtmFFcH1nYERfXZha1eTDWLCx0F/xNI6YJmWxSisc5w==",
|
||||
"version": "0.6.10",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.6.10.tgz",
|
||||
"integrity": "sha512-/xT7UT/tbCDIoTQ4lcEQsJ0ACh7h7QG0BDmeSlDXjwDuENRI50bQ2QoluCMPitZXGe+FCQfLhvzFgzbsZGT0IA==",
|
||||
"requires": {
|
||||
"apollo-server-types": "^0.2.9"
|
||||
"apollo-server-types": "^0.2.10"
|
||||
}
|
||||
},
|
||||
"apollo-server-types": {
|
||||
"version": "0.2.9",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.2.9.tgz",
|
||||
"integrity": "sha512-Iu9twx3lycH41F8shmrb33b4y0mNBz1chBdTIaSgIMmNwPDR4xs4eB6iyTK5swnaYC1eW+c+t5lHRUk7yexs/g==",
|
||||
"version": "0.2.10",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.2.10.tgz",
|
||||
"integrity": "sha512-ke9ViPEWfW+2XLe66CaKGVZdS7duSLbamSKSprmmeMBd8s6tmjf0FumUVxV7X4quxPZi0OPo8x0LoLU7GWsmaA==",
|
||||
"requires": {
|
||||
"apollo-engine-reporting-protobuf": "^0.4.4",
|
||||
"apollo-server-caching": "^0.5.0",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
"apollo-server-env": "^2.4.3"
|
||||
}
|
||||
},
|
||||
"apollo-tracing": {
|
||||
"version": "0.8.9",
|
||||
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.8.9.tgz",
|
||||
"integrity": "sha512-DYHPUW0rFcxxtI8+qU3leNU+fKfq9NPTjgPMr/AJmxKfsdOI6QgfVzVP/khiik0kU0+BMl5zBplwEDDdgbkUlg==",
|
||||
"version": "0.8.10",
|
||||
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.8.10.tgz",
|
||||
"integrity": "sha512-EjToHqHdDrjj0xBRnbie57lz3U81Onrs55YqHhvzaMv8gDAeKX3rnXiw5EfYZNxR7uutoyXH0iNKaYPyolWbZA==",
|
||||
"requires": {
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"graphql-extensions": "^0.10.8"
|
||||
"graphql-extensions": "^0.10.9"
|
||||
}
|
||||
},
|
||||
"apollo-utilities": {
|
||||
|
|
@ -606,9 +607,9 @@
|
|||
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
|
||||
},
|
||||
"async-retry": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.2.3.tgz",
|
||||
"integrity": "sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==",
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz",
|
||||
"integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==",
|
||||
"requires": {
|
||||
"retry": "0.12.0"
|
||||
}
|
||||
|
|
@ -1031,9 +1032,9 @@
|
|||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
|
||||
},
|
||||
"core-js": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.0.tgz",
|
||||
"integrity": "sha512-AHPTNKzyB+YwgDWoSOCaid9PUSEF6781vsfiK8qUz62zRR448/XgK2NtCbpiUGizbep8Lrpt0Du19PpGGZvw3Q=="
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.2.tgz",
|
||||
"integrity": "sha512-hIE5dXkRzRvnZ5vhkRfQxUvDxQZmD9oueA08jDYRBKJHx+VIl/Pne/e0A4x9LObEEthC/TqiZybUoNM4tRgnKg=="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
|
|
@ -1279,26 +1280,27 @@
|
|||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"es-abstract": {
|
||||
"version": "1.16.0",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
|
||||
"integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz",
|
||||
"integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==",
|
||||
"requires": {
|
||||
"es-to-primitive": "^1.2.0",
|
||||
"es-to-primitive": "^1.2.1",
|
||||
"function-bind": "^1.1.1",
|
||||
"has": "^1.0.3",
|
||||
"has-symbols": "^1.0.0",
|
||||
"is-callable": "^1.1.4",
|
||||
"is-regex": "^1.0.4",
|
||||
"object-inspect": "^1.6.0",
|
||||
"has-symbols": "^1.0.1",
|
||||
"is-callable": "^1.1.5",
|
||||
"is-regex": "^1.0.5",
|
||||
"object-inspect": "^1.7.0",
|
||||
"object-keys": "^1.1.1",
|
||||
"string.prototype.trimleft": "^2.1.0",
|
||||
"string.prototype.trimright": "^2.1.0"
|
||||
"object.assign": "^4.1.0",
|
||||
"string.prototype.trimleft": "^2.1.1",
|
||||
"string.prototype.trimright": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"es-to-primitive": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
|
||||
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
|
||||
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
|
||||
"requires": {
|
||||
"is-callable": "^1.1.4",
|
||||
"is-date-object": "^1.0.1",
|
||||
|
|
@ -1356,9 +1358,9 @@
|
|||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
},
|
||||
"eslint": {
|
||||
"version": "6.7.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz",
|
||||
"integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==",
|
||||
"version": "6.8.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
|
||||
"integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
|
|
@ -1922,13 +1924,13 @@
|
|||
}
|
||||
},
|
||||
"graphql-extensions": {
|
||||
"version": "0.10.8",
|
||||
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.10.8.tgz",
|
||||
"integrity": "sha512-cUcc014vz+pfwcER8pc4ts/WWhDCrC9jhNFIiWYYntd2TshS+tZFsZ362i4P2VYLbpYCgFiO+xRY1f2mylyz5A==",
|
||||
"version": "0.10.9",
|
||||
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.10.9.tgz",
|
||||
"integrity": "sha512-NJdV8aGVGCrcm1Pbq8IbmV5FfLCAEPxgplh9EJU7qAP+Z4PenkuH6V6RAPRqIwwZ287m8/aDXKW+X0qFe8gyUQ==",
|
||||
"requires": {
|
||||
"@apollographql/apollo-tools": "^0.4.0",
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"apollo-server-types": "^0.2.9"
|
||||
"apollo-server-types": "^0.2.10"
|
||||
}
|
||||
},
|
||||
"graphql-subscriptions": {
|
||||
|
|
@ -1995,9 +1997,9 @@
|
|||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||
},
|
||||
"has-symbols": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
|
||||
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
|
||||
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
|
||||
},
|
||||
"has-unicode": {
|
||||
"version": "2.0.1",
|
||||
|
|
@ -2173,9 +2175,9 @@
|
|||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz",
|
||||
"integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==",
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz",
|
||||
"integrity": "sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-escapes": "^4.2.1",
|
||||
|
|
@ -2254,9 +2256,9 @@
|
|||
"integrity": "sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI="
|
||||
},
|
||||
"is-callable": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
|
||||
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
|
||||
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q=="
|
||||
},
|
||||
"is-ci": {
|
||||
"version": "1.2.1",
|
||||
|
|
@ -2267,9 +2269,9 @@
|
|||
}
|
||||
},
|
||||
"is-date-object": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
|
||||
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
|
||||
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
|
||||
},
|
||||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
|
|
@ -2337,11 +2339,11 @@
|
|||
"integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ="
|
||||
},
|
||||
"is-regex": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
|
||||
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
|
||||
"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
|
||||
"requires": {
|
||||
"has": "^1.0.1"
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"is-retry-allowed": {
|
||||
|
|
@ -2355,11 +2357,11 @@
|
|||
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
|
||||
},
|
||||
"is-symbol": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
|
||||
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
|
||||
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
|
||||
"requires": {
|
||||
"has-symbols": "^1.0.0"
|
||||
"has-symbols": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"is-typedarray": {
|
||||
|
|
@ -2543,12 +2545,12 @@
|
|||
}
|
||||
},
|
||||
"mariadb": {
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://registry.npmjs.org/mariadb/-/mariadb-2.1.4.tgz",
|
||||
"integrity": "sha512-CMLbIKZCzxero94luo25IKpboEuUCvA2g2+NMUBdRYpBCDmnsiQ8kwdgqvuVQ13a4/ZKr87BC1nbe4b3UZXXmQ==",
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/mariadb/-/mariadb-2.1.5.tgz",
|
||||
"integrity": "sha512-uRHtjc0bg+Rt91LvIaZNo8tLcYs9YPiiW9Mke/BavFzg0MnctJBDkqZW9X59NyrRGDd7Oz9UshTWgmUpfDZc0Q==",
|
||||
"requires": {
|
||||
"@types/geojson": "^7946.0.7",
|
||||
"@types/node": "^12.12.11",
|
||||
"@types/node": "^13.1.4",
|
||||
"denque": "^1.4.1",
|
||||
"iconv-lite": "^0.5.0",
|
||||
"long": "^4.0.0",
|
||||
|
|
@ -2556,9 +2558,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "12.12.21",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.21.tgz",
|
||||
"integrity": "sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA=="
|
||||
"version": "13.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.4.tgz",
|
||||
"integrity": "sha512-Lue/mlp2egZJoHXZr4LndxDAd7i/7SQYhV0EjWfb/a4/OZ6tuVwMCVPiwkU5nsEipxEf7hmkSU7Em5VQ8P5NGA=="
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.5.0",
|
||||
|
|
@ -2743,9 +2745,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"mysql2": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.0.2.tgz",
|
||||
"integrity": "sha512-n9Tiw8LzrfOnH1CLFw0AWJlkQLOWMSr2Q+/aF5jRJ7SRRJLGrY9FidhyoTEhF0FxQYE+xABvXwiZl4b61Mt4eg==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.1.0.tgz",
|
||||
"integrity": "sha512-9kGVyi930rG2KaHrz3sHwtc6K+GY9d8wWk1XRSYxQiunvGcn4DwuZxOwmK11ftuhhwrYDwGx9Ta4VBwznJn36A==",
|
||||
"requires": {
|
||||
"cardinal": "^2.1.1",
|
||||
"denque": "^1.4.1",
|
||||
|
|
@ -2994,9 +2996,9 @@
|
|||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"object-inspect": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
|
||||
"integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ=="
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
|
||||
"integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="
|
||||
},
|
||||
"object-keys": {
|
||||
"version": "1.1.1",
|
||||
|
|
@ -3008,13 +3010,24 @@
|
|||
"resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz",
|
||||
"integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk="
|
||||
},
|
||||
"object.getownpropertydescriptors": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
|
||||
"integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
|
||||
"object.assign": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
|
||||
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.2",
|
||||
"es-abstract": "^1.5.1"
|
||||
"function-bind": "^1.1.1",
|
||||
"has-symbols": "^1.0.0",
|
||||
"object-keys": "^1.0.11"
|
||||
}
|
||||
},
|
||||
"object.getownpropertydescriptors": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
|
||||
"integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.17.0-next.1"
|
||||
}
|
||||
},
|
||||
"on-finished": {
|
||||
|
|
@ -3174,14 +3187,15 @@
|
|||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"pg": {
|
||||
"version": "7.15.1",
|
||||
"resolved": "https://registry.npmjs.org/pg/-/pg-7.15.1.tgz",
|
||||
"integrity": "sha512-o293Pxx5bNRpTv3Dh4+IIhPbTw19Bo4zvppLgR+MAV2I7AF3sMr9gPB4JPvBffWb24pDfC+7Ghe6xh2VxVMBpQ==",
|
||||
"version": "7.17.0",
|
||||
"resolved": "https://registry.npmjs.org/pg/-/pg-7.17.0.tgz",
|
||||
"integrity": "sha512-70Q4ZzIdPgwMPb3zUIzAUwigNJ4v5vsWdMED6OzXMfOECeYTvTm7iSC3FpKizu/R1BHL8Do3bLs6ltGfOTAnqg==",
|
||||
"requires": {
|
||||
"buffer-writer": "2.0.0",
|
||||
"packet-reader": "1.0.0",
|
||||
"pg-connection-string": "0.1.3",
|
||||
"pg-pool": "^2.0.7",
|
||||
"pg-packet-stream": "^1.1.0",
|
||||
"pg-pool": "^2.0.9",
|
||||
"pg-types": "^2.1.0",
|
||||
"pgpass": "1.x",
|
||||
"semver": "4.3.2"
|
||||
|
|
@ -3204,10 +3218,15 @@
|
|||
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
|
||||
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
|
||||
},
|
||||
"pg-packet-stream": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/pg-packet-stream/-/pg-packet-stream-1.1.0.tgz",
|
||||
"integrity": "sha512-kRBH0tDIW/8lfnnOyTwKD23ygJ/kexQVXZs7gEyBljw4FYqimZFxnMMx50ndZ8In77QgfGuItS5LLclC2TtjYg=="
|
||||
},
|
||||
"pg-pool": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.8.tgz",
|
||||
"integrity": "sha512-UE4H+4PT53RbwYaGxkeVDcMcp1g8EmYo91qeUugijsHwzV/RDpYVRWzmfiDisEQZhVDzyf/GUctNOrh+ZPJCGA=="
|
||||
"version": "2.0.9",
|
||||
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-2.0.9.tgz",
|
||||
"integrity": "sha512-gNiuIEKNCT3OnudQM2kvgSnXsLkSpd6mS/fRnqs6ANtrke6j8OY5l9mnAryf1kgwJMWLg0C1N1cYTZG1xmEYHQ=="
|
||||
},
|
||||
"pg-types": {
|
||||
"version": "2.2.0",
|
||||
|
|
@ -3550,9 +3569,9 @@
|
|||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "6.5.3",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
|
||||
"integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
|
||||
"version": "6.5.4",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
|
||||
"integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
|
|
@ -3826,18 +3845,18 @@
|
|||
}
|
||||
},
|
||||
"string.prototype.trimleft": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
|
||||
"integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
|
||||
"integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"function-bind": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimright": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
|
||||
"integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
|
||||
"integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"function-bind": "^1.1.1"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rdio-scanner-server",
|
||||
"version": "2.1.0",
|
||||
"version": "2.5.0",
|
||||
"private": true,
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
|
@ -10,25 +10,25 @@
|
|||
"author": "Chrystian Huot",
|
||||
"license": "LICENSE",
|
||||
"dependencies": {
|
||||
"apollo-datasource": "^0.6.3",
|
||||
"apollo-server-express": "^2.9.14",
|
||||
"apollo-datasource": "^0.6.4",
|
||||
"apollo-server-express": "^2.9.15",
|
||||
"camelcase": "^5.3.1",
|
||||
"cors": "^2.8.5",
|
||||
"dotenv": "^8.2.0",
|
||||
"express": "^4.17.1",
|
||||
"graphql": "^14.5.8",
|
||||
"helmet": "^3.21.2",
|
||||
"mariadb": "^2.1.4",
|
||||
"mariadb": "^2.1.5",
|
||||
"multer": "^1.4.2",
|
||||
"mysql2": "^2.0.2",
|
||||
"mysql2": "^2.1.0",
|
||||
"nodemon": "^2.0.2",
|
||||
"pg": "^7.15.1",
|
||||
"pg": "^7.17.0",
|
||||
"sequelize": "^5.21.3",
|
||||
"sequelize-cli": "^5.5.1",
|
||||
"sqlite3": "^4.1.1",
|
||||
"uuid": "^3.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^6.7.2"
|
||||
"eslint": "^6.8.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ module.exports = ({ pubsub, store }) => (req, res) => upload.fields([
|
|||
}
|
||||
|
||||
const emit = () => {
|
||||
store.rdioScannerSystem.findAll().then((systems) => {
|
||||
store.rdioScannerSystem.findAll({ order: [['system', 'ASC']]}).then((systems) => {
|
||||
pubsub.publish('rdioScannerSystems', { rdioScannerSystems: systemReducer(systems) });
|
||||
})
|
||||
};
|
||||
|
|
@ -60,12 +60,21 @@ module.exports = ({ pubsub, store }) => (req, res) => upload.fields([
|
|||
if (system.talkgroups.length) {
|
||||
system.talkgroups = JSON.stringify(system.talkgroups);
|
||||
|
||||
store.rdioScannerSystem.upsert(system)
|
||||
.then(() => {
|
||||
emit();
|
||||
res.send(`System ${system.name} imported successfully.\n`);
|
||||
})
|
||||
.catch((err) => res.send(err.message));
|
||||
store.rdioScannerSystem.findOne({ where: { system: system.system } })
|
||||
.then((rdioScannerSystem) => {
|
||||
if (rdioScannerSystem) {
|
||||
rdioScannerSystem.update(system).then(() => {
|
||||
emit();
|
||||
res.send(`System ${system.name} updated successfully.\n`);
|
||||
});
|
||||
|
||||
} else {
|
||||
store.rdioScannerSystem.create(system).then(() => {
|
||||
emit();
|
||||
res.send(`System ${system.name} imported successfully.\n`);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
store.rdioScannerSystem.destroy({ where: { system: system.system } })
|
||||
|
|
|
|||
Loading…
Reference in a new issue