mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-06-24 09:11:20 +00:00
Compare commits
2 Commits
master
...
refactor-p
Author | SHA1 | Date | |
---|---|---|---|
7658b0319d | |||
3300794aac |
@ -26,9 +26,8 @@
|
||||
"rxjs/add/operator/map",
|
||||
"rxjs-compat/add/operator/map",
|
||||
"classnames",
|
||||
"stylenames",
|
||||
"ipaddr.js"
|
||||
],
|
||||
"stylenames"
|
||||
],
|
||||
"outputPath": "dist",
|
||||
"index": "src/index.html",
|
||||
"main": "src/main.ts",
|
||||
@ -244,4 +243,4 @@
|
||||
"cli": {
|
||||
"analytics": false
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gns3-web-ui",
|
||||
"version": "2.2.54",
|
||||
"version": "2.2.43.dev1",
|
||||
"author": {
|
||||
"name": "GNS3 Technology Inc.",
|
||||
"email": "developers@gns3.com"
|
||||
@ -66,7 +66,6 @@
|
||||
"d3-ng2-service": "^2.2.0",
|
||||
"eev": "^0.1.5",
|
||||
"ini": "^2.0.0",
|
||||
"ipaddr.js": "^2.1.0",
|
||||
"material-design-icons": "^3.0.1",
|
||||
"mousetrap": "^1.6.5",
|
||||
"ng-circle-progress": "^1.6.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
setuptools==78.1.1
|
||||
setuptools==65.5.1
|
||||
cx_Freeze==5.1.1
|
||||
requests==2.32.4
|
||||
requests==2.31.0
|
||||
packaging==20.9
|
||||
appdirs==1.4.4
|
||||
psutil==5.8.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div [ngClass]="{ dark: darkThemeEnabled, light: !darkThemeEnabled }">
|
||||
<router-outlet></router-outlet>
|
||||
<!-- <app-adbutler></app-adbutler> -->
|
||||
<app-adbutler></app-adbutler>
|
||||
</div>
|
||||
|
@ -215,7 +215,6 @@ import { DefaultLayoutComponent } from './layouts/default-layout/default-layout.
|
||||
import { MATERIAL_IMPORTS } from './material.imports';
|
||||
import { ServerResolve } from './resolvers/server-resolve';
|
||||
import { ApplianceService } from './services/appliances.service';
|
||||
import { ProtocolHandlerService } from './services/protocol-handler.service';
|
||||
import { BuiltInTemplatesConfigurationService } from './services/built-in-templates-configuration.service';
|
||||
import { BuiltInTemplatesService } from './services/built-in-templates.service';
|
||||
import { ComputeService } from './services/compute.service';
|
||||
@ -539,7 +538,6 @@ import { RotationValidator } from './validators/rotation-validator';
|
||||
ComputeService,
|
||||
TracengService,
|
||||
PacketCaptureService,
|
||||
ProtocolHandlerService,
|
||||
NotificationService,
|
||||
Gns3vmService,
|
||||
ThemeService,
|
||||
|
@ -14,7 +14,6 @@ export class Properties {
|
||||
headless: boolean;
|
||||
linked_clone: boolean;
|
||||
on_close: string;
|
||||
aux: number;
|
||||
ram: number;
|
||||
nvram: number;
|
||||
usage: string;
|
||||
|
@ -90,7 +90,7 @@ export class InterfaceStatusWidget implements Widget {
|
||||
.merge(status_started_enter)
|
||||
.attr('class', 'status_started')
|
||||
.attr('width', (ls: LinkStatus) => {
|
||||
return ls.port.length * 10 + 5;
|
||||
return ls.port.length * 8 + 10;
|
||||
})
|
||||
.attr('height', 20)
|
||||
.attr('x', (ls: LinkStatus) => ls.x - 30)
|
||||
@ -122,7 +122,7 @@ export class InterfaceStatusWidget implements Widget {
|
||||
.merge(status_stopped_enter)
|
||||
.attr('class', 'status_stopped')
|
||||
.attr('width', (ls: LinkStatus) => {
|
||||
return ls.port.length * 10 + 5;
|
||||
return ls.port.length * 8 + 10;
|
||||
})
|
||||
.attr('height', 20)
|
||||
.attr('x', (ls: LinkStatus) => ls.x - 30)
|
||||
@ -154,7 +154,7 @@ export class InterfaceStatusWidget implements Widget {
|
||||
.merge(status_suspended_enter)
|
||||
.attr('class', 'status_suspended')
|
||||
.attr('width', (ls: LinkStatus) => {
|
||||
return ls.port.length * 10 + 5;
|
||||
return ls.port.length * 8 + 10;
|
||||
})
|
||||
.attr('height', 20)
|
||||
.attr('x', (ls: LinkStatus) => ls.x - 30)
|
||||
|
@ -22,10 +22,10 @@ export class BundledServerFinderComponent implements OnInit {
|
||||
this.progressService.activate();
|
||||
setTimeout(() => {
|
||||
let port;
|
||||
|
||||
|
||||
if (parseInt(this.document.location.port, 10)) {
|
||||
port = parseInt(this.document.location.port, 10);
|
||||
} else if (this.document.location.protocol == "https:") {
|
||||
} else if (this.document.location.protocol == "https") {
|
||||
port = 443;
|
||||
} else {
|
||||
port = 80;
|
||||
|
@ -23,8 +23,8 @@ export class DirectLinkComponent implements OnInit {
|
||||
{ key: 'basic', name: 'Basic authorization' },
|
||||
];
|
||||
protocols = [
|
||||
{ key: 'http:', name: 'HTTP' },
|
||||
{ key: 'https:', name: 'HTTPS' },
|
||||
{ key: 'http', name: 'HTTP' },
|
||||
{ key: 'https', name: 'HTTPS' },
|
||||
];
|
||||
locations = [
|
||||
{ key: 'local', name: 'Local' },
|
||||
@ -34,7 +34,7 @@ export class DirectLinkComponent implements OnInit {
|
||||
serverForm = new FormGroup({
|
||||
name: new FormControl('', [Validators.required]),
|
||||
location: new FormControl(''),
|
||||
protocol: new FormControl('http:'),
|
||||
protocol: new FormControl('http'),
|
||||
authorization: new FormControl('none'),
|
||||
login: new FormControl(''),
|
||||
password: new FormControl(''),
|
||||
|
@ -30,7 +30,6 @@ export class PortsComponent implements OnInit {
|
||||
}
|
||||
|
||||
onAdd() {
|
||||
this.newPort.name = "Ethernet" + this.newPort.port_number;
|
||||
this.ethernetPorts.push(this.newPort);
|
||||
|
||||
this.newPort = {
|
||||
|
@ -72,11 +72,11 @@ export class SymbolsComponent implements OnInit {
|
||||
}
|
||||
|
||||
private createSvgFileForImage(image: string | ArrayBuffer, imageToUpload: HTMLImageElement) {
|
||||
return `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" height=\"${imageToUpload.height}\"
|
||||
return `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" height=\"${imageToUpload.height}\"
|
||||
width=\"${imageToUpload.width}\">\n<image height=\"${imageToUpload.height}\" width=\"${imageToUpload.width}\" xlink:href=\"${image}\"/>\n</svg>`;
|
||||
}
|
||||
|
||||
getImageSourceForTemplate(symbol: string) {
|
||||
return `${this.server.protocol}//${this.server.host}:${this.server.port}/v2/symbols/${symbol}/raw`;
|
||||
return `${this.server.protocol}://${this.server.host}:${this.server.port}/v2/symbols/${symbol}/raw`;
|
||||
}
|
||||
}
|
||||
|
@ -59,15 +59,6 @@
|
||||
placeholder="Start command"
|
||||
/>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="form-field">
|
||||
<input
|
||||
matInput
|
||||
type="text"
|
||||
[ngModelOptions]="{ standalone: true }"
|
||||
[(ngModel)]="dockerTemplate.mac_address"
|
||||
placeholder="Base MAC"
|
||||
/>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="form-field">
|
||||
<input
|
||||
formControlName="adapter"
|
||||
|
@ -61,7 +61,7 @@
|
||||
<div *ngIf="newImageSelected">
|
||||
<input
|
||||
type="file"
|
||||
accept=".bin, .image, .iol"
|
||||
accept=".bin"
|
||||
#file
|
||||
class="nonvisible"
|
||||
(change)="uploadImageFile($event)"
|
||||
|
@ -52,7 +52,7 @@
|
||||
</mat-form-field>
|
||||
<input
|
||||
type="file"
|
||||
accept=".bin, .image, .iol"
|
||||
accept=".bin"
|
||||
#file
|
||||
class="nonvisible"
|
||||
(change)="uploadImageFile($event)"
|
||||
|
@ -2,11 +2,3 @@
|
||||
<mat-icon>web_asset</mat-icon>
|
||||
<span>Console</span>
|
||||
</button>
|
||||
<button
|
||||
mat-menu-item
|
||||
*ngIf="node.node_type === 'docker' || node.node_type === 'dynamips' || node.node_type === 'qemu'"
|
||||
(click)="openConsole(auxiliary=true)"
|
||||
>
|
||||
<mat-icon>web_asset</mat-icon>
|
||||
<span>Auxiliary console</span>
|
||||
</button>
|
||||
|
@ -4,9 +4,6 @@ import { Node } from '../../../../../cartography/models/node';
|
||||
import { Server } from '../../../../../models/server';
|
||||
import { NodeService } from '../../../../../services/node.service';
|
||||
import { ToasterService } from '../../../../../services/toaster.service';
|
||||
import { ProtocolHandlerService } from '../../../../../services/protocol-handler.service';
|
||||
|
||||
import * as ipaddr from 'ipaddr.js';
|
||||
|
||||
@Component({
|
||||
selector: 'app-console-device-action-browser',
|
||||
@ -16,16 +13,41 @@ export class ConsoleDeviceActionBrowserComponent {
|
||||
@Input() server: Server;
|
||||
@Input() node: Node;
|
||||
|
||||
constructor(private toasterService: ToasterService, private nodeService: NodeService, private protocolHandlerService: ProtocolHandlerService) {}
|
||||
constructor(private toasterService: ToasterService, private nodeService: NodeService, private deviceService: DeviceDetectorService) {}
|
||||
|
||||
openConsole(auxiliary: boolean = false) {
|
||||
openConsole() {
|
||||
this.nodeService.getNode(this.server, this.node).subscribe((node: Node) => {
|
||||
this.node = node;
|
||||
this.startConsole(auxiliary);
|
||||
this.startConsole();
|
||||
});
|
||||
}
|
||||
|
||||
startConsole(auxiliary: boolean) {
|
||||
createHiddenIframe(target: Element, uri: string) {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = uri;
|
||||
iframe.id = "hiddenIframe";
|
||||
iframe.style.display = "none";
|
||||
target.appendChild(iframe);
|
||||
return iframe;
|
||||
}
|
||||
|
||||
openUriUsingFirefox(uri: string) {
|
||||
var iframe = (document.querySelector("#hiddenIframe") as HTMLIFrameElement);
|
||||
|
||||
if (!iframe) {
|
||||
iframe = this.createHiddenIframe(document.body, "about:blank");
|
||||
}
|
||||
|
||||
try {
|
||||
iframe.contentWindow.location.href = uri;
|
||||
} catch (e) {
|
||||
if (e.name === "NS_ERROR_UNKNOWN_PROTOCOL") {
|
||||
this.toasterService.error('Protocol handler does not exist');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
startConsole() {
|
||||
if (this.node.status !== 'started') {
|
||||
this.toasterService.error('This node must be started before a console can be opened');
|
||||
} else {
|
||||
@ -37,38 +59,30 @@ export class ConsoleDeviceActionBrowserComponent {
|
||||
this.node.console_host = this.server.host;
|
||||
}
|
||||
|
||||
const device = this.deviceService.getDeviceInfo();
|
||||
|
||||
try {
|
||||
var uri;
|
||||
var host = this.node.console_host;
|
||||
if (ipaddr.IPv6.isValid(host)) {
|
||||
host = `[${host}]`;
|
||||
}
|
||||
if (this.node.console_type === 'telnet') {
|
||||
|
||||
var console_port;
|
||||
if (auxiliary === true) {
|
||||
console_port = this.node.properties.aux;
|
||||
if (console_port === undefined) {
|
||||
this.toasterService.error('Auxiliary console port is not set.');
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
console_port = this.node.console;
|
||||
}
|
||||
uri = `gns3+telnet://${host}:${console_port}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`;
|
||||
uri = `gns3+telnet://[${this.node.console_host}]:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`;
|
||||
} else if (this.node.console_type === 'vnc') {
|
||||
uri = `gns3+vnc://${host}:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`;
|
||||
uri = `gns3+vnc://[${this.node.console_host}]:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`;
|
||||
} else if (this.node.console_type.startsWith('spice')) {
|
||||
uri = `gns3+spice://${host}:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`
|
||||
uri = `gns3+spice://[${this.node.console_host}]:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`
|
||||
} else if (this.node.console_type.startsWith('http')) {
|
||||
uri = `${this.node.console_type}://${host}:${this.node.console}`
|
||||
uri = `${this.node.console_type}://[${this.node.console_host}]:${this.node.console}`
|
||||
return window.open(uri); // open an http console directly in a new window/tab
|
||||
} else {
|
||||
this.toasterService.error('Supported console types are: telnet, vnc, spice and spice+agent.');
|
||||
return;
|
||||
}
|
||||
|
||||
this.protocolHandlerService.open(uri);
|
||||
if (device.browser === "Firefox") {
|
||||
// Use a hidden iframe otherwise Firefox will disconnect
|
||||
// from the GNS3 controller websocket if we use location.assign()
|
||||
this.openUriUsingFirefox(uri);
|
||||
} else {
|
||||
location.assign(uri);
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
this.toasterService.error(e);
|
||||
|
@ -150,6 +150,6 @@ export class ImportApplianceComponent implements OnInit {
|
||||
}
|
||||
|
||||
private getUploadPath(server: Server, emulator: string, filename: string) {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/${emulator}/images/${filename}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/${emulator}/images/${filename}`;
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import { MatMenuModule } from '@angular/material/menu';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { RouterTestingModule } from '@angular/router/testing';
|
||||
import { ToasterService } from '../../../services/toaster.service';
|
||||
import { ProtocolHandlerService } from '../../../services/protocol-handler.service';
|
||||
import { of } from 'rxjs';
|
||||
import { NodesDataSource } from '../../../cartography/datasources/nodes-datasource';
|
||||
import { ProjectWebServiceHandler, WebServiceMessage } from '../../../handlers/project-web-service-handler';
|
||||
@ -39,7 +38,6 @@ describe('LogConsoleComponent', () => {
|
||||
let nodeConsoleService: NodeConsoleService;
|
||||
let mapSettingsService: MapSettingsService;
|
||||
let toasterService: ToasterService;
|
||||
let protocolHandlerService: ProtocolHandlerService;
|
||||
|
||||
let httpServer = new HttpServer({} as HttpClient, {} as ServerErrorHandler);
|
||||
|
||||
@ -54,7 +52,6 @@ describe('LogConsoleComponent', () => {
|
||||
{ provide: HttpServer, useValue: httpServer },
|
||||
NodeConsoleService,
|
||||
ToasterService,
|
||||
ProtocolHandlerService,
|
||||
MapSettingsService
|
||||
],
|
||||
declarations: [LogConsoleComponent],
|
||||
@ -62,7 +59,6 @@ describe('LogConsoleComponent', () => {
|
||||
}).compileComponents();
|
||||
|
||||
toasterService = TestBed.inject(ToasterService);
|
||||
protocolHandlerService = TestBed.inject(ProtocolHandlerService);
|
||||
mapSettingsService = TestBed.inject(MapSettingsService);
|
||||
nodeConsoleService = TestBed.inject(NodeConsoleService);
|
||||
}));
|
||||
|
@ -23,11 +23,9 @@ import { Server } from '../../../models/server';
|
||||
import { HttpServer } from '../../../services/http-server.service';
|
||||
import { NodeService } from '../../../services/node.service';
|
||||
import { NodeConsoleService } from '../../../services/nodeConsole.service';
|
||||
import { ProtocolHandlerService } from '../../../services/protocol-handler.service';
|
||||
import { ThemeService } from '../../../services/theme.service';
|
||||
import { version } from '../../../version';
|
||||
import { LogEventsDataSource } from './log-events-datasource';
|
||||
import * as ipaddr from 'ipaddr.js';
|
||||
|
||||
@Component({
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
@ -71,7 +69,6 @@ export class LogConsoleComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||
private projectWebServiceHandler: ProjectWebServiceHandler,
|
||||
private nodeService: NodeService,
|
||||
private nodesDataSource: NodesDataSource,
|
||||
private protocolHandlerService: ProtocolHandlerService,
|
||||
private logEventsDataSource: LogEventsDataSource,
|
||||
private httpService: HttpServer,
|
||||
private themeService: ThemeService,
|
||||
@ -227,24 +224,20 @@ export class LogConsoleComponent implements OnInit, AfterViewInit, OnDestroy {
|
||||
} else if (this.regexConsole.test(this.command)) {
|
||||
if (node.status === 'started') {
|
||||
this.showCommand(`Launching console for node ${splittedCommand[1]}...`);
|
||||
var host = node.console_host;
|
||||
if (ipaddr.IPv6.isValid(host)) {
|
||||
host = `[${host}]`;
|
||||
}
|
||||
if (node.console_type === 'telnet') {
|
||||
this.protocolHandlerService.open(
|
||||
`gns3+telnet://${host}:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
|
||||
location.assign(
|
||||
`gns3+telnet://[${node.console_host}]:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
|
||||
);
|
||||
} else if (node.console_type === 'vnc') {
|
||||
this.protocolHandlerService.open(
|
||||
`gns3+vnc://${host}:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
|
||||
location.assign(
|
||||
`gns3+vnc://[${node.console_host}]:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
|
||||
);
|
||||
} else if (node.console_type.startsWith('spice')) {
|
||||
this.protocolHandlerService.open(
|
||||
`gns3+spice://${host}:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
|
||||
location.assign(
|
||||
`gns3+spice://[${node.console_host}]:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
|
||||
);
|
||||
} else if (node.console_type.startsWith('http')) {
|
||||
window.open(`${node.console_type}://${host}:${node.console}`);
|
||||
window.open(`${node.console_type}://[${node.console_host}]:${node.console}`);
|
||||
} else {
|
||||
this.showCommand('Supported console types are: telnet, vnc, spice and spice+agent');
|
||||
}
|
||||
|
@ -170,7 +170,7 @@
|
||||
</mat-select>
|
||||
</div>
|
||||
<div>
|
||||
Install the required files
|
||||
Install required files
|
||||
<button
|
||||
mat-icon-button
|
||||
matTooltip="Refresh list of images"
|
||||
@ -441,7 +441,7 @@
|
||||
</mat-radio-group>
|
||||
</div>
|
||||
<div>
|
||||
Install the required images
|
||||
Install required files
|
||||
<button
|
||||
mat-icon-button
|
||||
matTooltip="Refresh list of images"
|
||||
@ -453,16 +453,10 @@
|
||||
<mat-list>
|
||||
<mat-list-item *ngFor="let image of applianceToInstall.images">
|
||||
<div class="list-item">
|
||||
<span>
|
||||
{{ image.filename }}
|
||||
</span>
|
||||
<div>
|
||||
<span *ngIf="checkImageFromVersion(image.filename)">
|
||||
<mat-icon matTooltip="Ready to install" matTooltipClass="custom-tooltip">check</mat-icon>
|
||||
</span>
|
||||
<span *ngIf="!checkImageFromVersion(image.filename)">
|
||||
<mat-icon matTooltip="Missing" matTooltipClass="custom-tooltip">close</mat-icon>
|
||||
</span>
|
||||
{{ image.filename }}
|
||||
</div>
|
||||
<div>
|
||||
<input
|
||||
type="file"
|
||||
class="non-visible"
|
||||
@ -505,7 +499,7 @@
|
||||
</mat-radio-group>
|
||||
</div>
|
||||
<div>
|
||||
Install the required images
|
||||
Install required files
|
||||
<button
|
||||
mat-icon-button
|
||||
matTooltip="Refresh list of images"
|
||||
@ -517,15 +511,9 @@
|
||||
<mat-list>
|
||||
<mat-list-item *ngFor="let image of applianceToInstall.images">
|
||||
<div class="list-item">
|
||||
<span>
|
||||
<div>
|
||||
{{ image.filename }}
|
||||
</span>
|
||||
<span *ngIf="checkImageFromVersion(image.filename)">
|
||||
<mat-icon matTooltip="Ready to install" matTooltipClass="custom-tooltip">check</mat-icon>
|
||||
</span>
|
||||
<span *ngIf="!checkImageFromVersion(image.filename)">
|
||||
<mat-icon matTooltip="Missing" matTooltipClass="custom-tooltip">close</mat-icon>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<input
|
||||
type="file"
|
||||
|
@ -143,7 +143,7 @@ export class NewTemplateDialogComponent implements OnInit {
|
||||
this.qemuBinaries = binaries;
|
||||
});
|
||||
|
||||
this.uploader = new FileUploader({url: ''});
|
||||
this.uploader = new FileUploader({});
|
||||
this.uploader.onAfterAddingFile = (file) => {
|
||||
file.withCredentials = false;
|
||||
};
|
||||
@ -162,7 +162,7 @@ export class NewTemplateDialogComponent implements OnInit {
|
||||
this.getAppliance(item.url);
|
||||
};
|
||||
|
||||
this.uploaderImage = new FileUploader({url: ''});
|
||||
this.uploaderImage = new FileUploader({});
|
||||
this.uploaderImage.onAfterAddingFile = (file) => {
|
||||
file.withCredentials = false;
|
||||
};
|
||||
@ -401,8 +401,7 @@ export class NewTemplateDialogComponent implements OnInit {
|
||||
this.progressService.activate();
|
||||
};
|
||||
|
||||
//fileReader.readAsText(file); //web browser out ouf memory when upload large image file
|
||||
fileReader.onloadend(undefined);
|
||||
fileReader.readAsText(file);
|
||||
}
|
||||
|
||||
checkImageFromVersion(image: string): boolean {
|
||||
|
@ -17,7 +17,6 @@ import { ToasterService } from '../../../../services/toaster.service';
|
||||
import { MockedToasterService } from '../../../../services/toaster.service.spec';
|
||||
import { MockedLinkService, MockedNodesDataSource } from '../../project-map.component.spec';
|
||||
import { StartCaptureDialogComponent } from './start-capture.component';
|
||||
import { ProtocolHandlerService } from '../../../../services/protocol-handler.service';
|
||||
|
||||
describe('StartCaptureDialogComponent', () => {
|
||||
let component: StartCaptureDialogComponent;
|
||||
@ -26,8 +25,6 @@ describe('StartCaptureDialogComponent', () => {
|
||||
let mockedToasterService = new MockedToasterService();
|
||||
let mockedLinkService = new MockedLinkService();
|
||||
let mockedNodesDataSource = new MockedNodesDataSource();
|
||||
let protocolHandlerService: ProtocolHandlerService;
|
||||
|
||||
let dialogRef = {
|
||||
close: jasmine.createSpy('close'),
|
||||
};
|
||||
@ -52,13 +49,10 @@ describe('StartCaptureDialogComponent', () => {
|
||||
{ provide: LinkService, useValue: mockedLinkService },
|
||||
{ provide: NodesDataSource, useValue: mockedNodesDataSource },
|
||||
{ provide: PacketCaptureService },
|
||||
ProtocolHandlerService,
|
||||
],
|
||||
declarations: [StartCaptureDialogComponent],
|
||||
schemas: [NO_ERRORS_SCHEMA],
|
||||
}).compileComponents();
|
||||
|
||||
protocolHandlerService = TestBed.inject(ProtocolHandlerService);
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
|
@ -67,7 +67,6 @@ import { SymbolService } from '../../services/symbol.service';
|
||||
import { ThemeService } from '../../services/theme.service';
|
||||
import { ToasterService } from '../../services/toaster.service';
|
||||
import { ToolsService } from '../../services/tools.service';
|
||||
import { ProtocolHandlerService } from '../../services/protocol-handler.service';
|
||||
import { AddBlankProjectDialogComponent } from '../projects/add-blank-project-dialog/add-blank-project-dialog.component';
|
||||
import { ConfirmationBottomSheetComponent } from '../projects/confirmation-bottomsheet/confirmation-bottomsheet.component';
|
||||
import { EditProjectDialogComponent } from '../projects/edit-project-dialog/edit-project-dialog.component';
|
||||
@ -174,7 +173,6 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
||||
private title: Title,
|
||||
private nodeConsoleService: NodeConsoleService,
|
||||
private symbolService: SymbolService,
|
||||
private protocolHandlerService: ProtocolHandlerService,
|
||||
private cd: ChangeDetectorRef,
|
||||
private cfr: ComponentFactoryResolver,
|
||||
private injector: Injector
|
||||
@ -252,7 +250,7 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
||||
this.nodesDataSource.changes.subscribe((nodes: Node[]) => {
|
||||
if (!this.server) return;
|
||||
nodes.forEach(async (node: Node) => {
|
||||
node.symbol_url = `${this.server.protocol}//${this.server.host}:${this.server.port}/v2/symbols/${node.symbol}/raw`;
|
||||
node.symbol_url = `${this.server.protocol}://${this.server.host}:${this.server.port}/v2/symbols/${node.symbol}/raw`;
|
||||
|
||||
// if (node.width == 0 && node.height == 0) {
|
||||
// let symbolDimensions = await this.symbolService.getDimensions(this.server, node.symbol).toPromise();
|
||||
@ -977,7 +975,7 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
||||
) {
|
||||
this.toasterService.error('Project with running nodes cannot be exported.');
|
||||
} else {
|
||||
this.protocolHandlerService.open(this.projectService.getExportPath(this.server, this.project));
|
||||
location.assign(this.projectService.getExportPath(this.server, this.project));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
|
||||
@Injectable()
|
||||
export class ProjectNameValidator {
|
||||
get(projectName) {
|
||||
var pattern = new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\"<>\?]/);
|
||||
var pattern = new RegExp(/[~`!#$%\^&*+=\[\]\\';,/{}|\\":<>\?]/);
|
||||
|
||||
if (!pattern.test(projectName.value)) {
|
||||
return null;
|
||||
|
@ -16,8 +16,8 @@ export class AddServerDialogComponent implements OnInit {
|
||||
{ key: 'basic', name: 'Basic authorization' },
|
||||
];
|
||||
protocols = [
|
||||
{ key: 'http:', name: 'HTTP' },
|
||||
{ key: 'https:', name: 'HTTPS' },
|
||||
{ key: 'http', name: 'HTTP' },
|
||||
{ key: 'https', name: 'HTTPS' },
|
||||
];
|
||||
locations = [];
|
||||
|
||||
@ -28,7 +28,7 @@ export class AddServerDialogComponent implements OnInit {
|
||||
ubridge_path: new FormControl(''),
|
||||
host: new FormControl('', [Validators.required]),
|
||||
port: new FormControl('', [Validators.required, Validators.min(1)]),
|
||||
protocol: new FormControl('http:'),
|
||||
protocol: new FormControl('http'),
|
||||
authorization: new FormControl('none'),
|
||||
login: new FormControl(''),
|
||||
password: new FormControl(''),
|
||||
|
@ -142,10 +142,10 @@ export class TemplateComponent implements OnInit, OnDestroy {
|
||||
}
|
||||
|
||||
getImageSourceForTemplate(template: Template) {
|
||||
return `${this.server.protocol}//${this.server.host}:${this.server.port}/v2/symbols/${template.symbol}/raw`;
|
||||
return `${this.server.protocol}://${this.server.host}:${this.server.port}/v2/symbols/${template.symbol}/raw`;
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,4 +39,4 @@
|
||||
|
||||
<app-progress></app-progress>
|
||||
|
||||
<footer class="footer mat-app-background">GNS3 Web-UI ©2018-{{ currentYear }} v{{ uiVersion }}</footer>
|
||||
<footer class="footer mat-app-background">GNS3 Web UI © 2020 - v{{ uiVersion }}</footer>
|
||||
|
@ -17,7 +17,6 @@ import { version } from './../../version';
|
||||
export class DefaultLayoutComponent implements OnInit, OnDestroy {
|
||||
public isInstalledSoftwareAvailable = false;
|
||||
public uiVersion = version;
|
||||
public currentYear = new Date().getFullYear();
|
||||
|
||||
serverStatusSubscription: Subscription;
|
||||
shouldStopServersOnClosing = true;
|
||||
|
@ -1,7 +1,7 @@
|
||||
export type ServerAuthorization = 'basic' | 'none';
|
||||
export type ServerLocation = 'local' | 'remote' | 'bundled';
|
||||
export type ServerStatus = 'stopped' | 'starting' | 'running';
|
||||
export type ServerProtocol = 'http:' | 'https:';
|
||||
export type ServerProtocol = 'http' | 'https';
|
||||
|
||||
export class Server {
|
||||
id: number;
|
||||
|
@ -10,7 +10,6 @@ export class DockerTemplate {
|
||||
console_http_port: number;
|
||||
console_resolution: string;
|
||||
console_type: string;
|
||||
mac_address: string;
|
||||
custom_adapters: CustomAdapter[];
|
||||
default_name_format: string;
|
||||
environment: string;
|
||||
|
@ -17,7 +17,7 @@ export class ApplianceService {
|
||||
}
|
||||
|
||||
getUploadPath(server: Server, emulator: string, filename: string) {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/compute/${emulator}/images/${filename}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/compute/${emulator}/images/${filename}`;
|
||||
}
|
||||
|
||||
updateAppliances(server: Server): Observable<Appliance[]> {
|
||||
|
@ -14,7 +14,7 @@ export class ComputeService {
|
||||
}
|
||||
|
||||
getUploadPath(server: Server, emulator: string, filename: string) {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/${emulator}/images/${filename}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/${emulator}/images/${filename}`;
|
||||
}
|
||||
|
||||
getStatistics(server: Server): Observable<ComputeStatistics[]> {
|
||||
|
@ -178,7 +178,7 @@ export class HttpServer {
|
||||
if (!server.protocol) {
|
||||
server.protocol = location.protocol as ServerProtocol;
|
||||
}
|
||||
url = `${server.protocol}//${server.host}:${server.port}/v2${url}`;
|
||||
url = `${server.protocol}://${server.host}:${server.port}/v2${url}`;
|
||||
} else {
|
||||
url = `/v2${url}`;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ export class IosService {
|
||||
}
|
||||
|
||||
getImagePath(server: Server, filename: string): string {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/compute/dynamips/images/${filename}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/compute/dynamips/images/${filename}`;
|
||||
}
|
||||
|
||||
getTemplates(server: Server): Observable<IosTemplate[]> {
|
||||
|
@ -22,7 +22,7 @@ export class IouService {
|
||||
}
|
||||
|
||||
getImagePath(server: Server, filename: string): string {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/compute/iou/images/${filename}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/compute/iou/images/${filename}`;
|
||||
}
|
||||
|
||||
addTemplate(server: Server, iouTemplate: any): Observable<any> {
|
||||
|
@ -31,11 +31,6 @@ export class MapSettingsService {
|
||||
} else {
|
||||
localStorage.setItem('symbolScaling', 'true');
|
||||
}
|
||||
if (localStorage.getItem('showInterfaceLabels')) {
|
||||
this.showInterfaceLabels = localStorage.getItem('showInterfaceLabels') === 'true' ? true : false;
|
||||
} else {
|
||||
localStorage.setItem('showInterfaceLabels', 'true');
|
||||
}
|
||||
}
|
||||
|
||||
public getSymbolScaling(): boolean {
|
||||
@ -77,12 +72,6 @@ export class MapSettingsService {
|
||||
|
||||
toggleShowInterfaceLabels(value: boolean) {
|
||||
this.showInterfaceLabels = value;
|
||||
localStorage.removeItem('showInterfaceLabels');
|
||||
if (value) {
|
||||
localStorage.setItem('showInterfaceLabels', 'true');
|
||||
} else {
|
||||
localStorage.setItem('showInterfaceLabels', 'false');
|
||||
}
|
||||
}
|
||||
|
||||
toggleIntegrateInterfaceLabels(value: boolean) {
|
||||
|
@ -67,7 +67,7 @@ export class NodeConsoleService {
|
||||
|
||||
getUrl(server: Server, node: Node) {
|
||||
let protocol:string = "ws"
|
||||
if (server.protocol === "https:") {
|
||||
if (server.protocol === "https") {
|
||||
protocol = "wss"
|
||||
}
|
||||
|
||||
|
@ -5,17 +5,17 @@ import { Server } from '../models/server';
|
||||
export class NotificationService {
|
||||
notificationsPath(server: Server): string {
|
||||
let protocol:string = "ws"
|
||||
if (server.protocol === "https:") {
|
||||
if (server.protocol === "https") {
|
||||
protocol = "wss"
|
||||
}
|
||||
|
||||
return `${protocol}://${server.host}:${server.port}/v2/notifications/ws`;
|
||||
}
|
||||
|
||||
|
||||
|
||||
projectNotificationsPath(server: Server, project_id: string): string {
|
||||
let protocol:string = "ws"
|
||||
if (server.protocol === "https:") {
|
||||
if (server.protocol === "https") {
|
||||
protocol = "wss"
|
||||
}
|
||||
|
||||
|
@ -2,17 +2,14 @@ import { Injectable } from '@angular/core';
|
||||
import { Link } from '../models/link';
|
||||
import { Project } from '../models/project';
|
||||
import { Server } from '../models/server';
|
||||
import { ProtocolHandlerService } from './protocol-handler.service';
|
||||
|
||||
@Injectable()
|
||||
export class PacketCaptureService {
|
||||
|
||||
constructor(private protocolHandlerService: ProtocolHandlerService) {}
|
||||
constructor() {}
|
||||
|
||||
startCapture(server: Server, project: Project, link: Link, name: string) {
|
||||
|
||||
const uri = `gns3+pcap://${server.host}:${server.port}?protocol=${server.protocol.slice(0, -1)}&project_id=${project.project_id}&link_id=${link.link_id}&project=${project.name}&name=${name}`;
|
||||
this.protocolHandlerService.open(uri);
|
||||
|
||||
location.assign(
|
||||
`gns3+pcap://${server.host}:${server.port}?protocol=${server.protocol}&project_id=${project.project_id}&link_id=${link.link_id}&project=${project.name}&name=${name}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -75,11 +75,11 @@ export class ProjectService {
|
||||
}
|
||||
|
||||
getUploadPath(server: Server, uuid: string, project_name: string) {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/projects/${uuid}/import?name=${project_name}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/projects/${uuid}/import?name=${project_name}`;
|
||||
}
|
||||
|
||||
getExportPath(server: Server, project: Project) {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/projects/${project.project_id}/export`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/projects/${project.project_id}/export`;
|
||||
}
|
||||
|
||||
export(server: Server, project_id: string): Observable<any> {
|
||||
|
@ -1,48 +0,0 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { DeviceDetectorService } from 'ngx-device-detector';
|
||||
import { ToasterService } from './toaster.service';
|
||||
|
||||
@Injectable()
|
||||
export class ProtocolHandlerService {
|
||||
|
||||
constructor(private toasterService: ToasterService, private deviceService: DeviceDetectorService) {}
|
||||
|
||||
createHiddenIframe(target: Element, uri: string) {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = uri;
|
||||
iframe.id = "hiddenIframe";
|
||||
iframe.style.display = "none";
|
||||
target.appendChild(iframe);
|
||||
return iframe;
|
||||
}
|
||||
|
||||
openUriUsingFirefox(uri: string) {
|
||||
var iframe = (document.querySelector("#hiddenIframe") as HTMLIFrameElement);
|
||||
|
||||
if (!iframe) {
|
||||
iframe = this.createHiddenIframe(document.body, "about:blank");
|
||||
}
|
||||
|
||||
try {
|
||||
iframe.contentWindow.location.href = uri;
|
||||
} catch (e) {
|
||||
if (e.name === "NS_ERROR_UNKNOWN_PROTOCOL") {
|
||||
this.toasterService.error('Protocol handler does not exist');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open(uri: string) {
|
||||
|
||||
const device = this.deviceService.getDeviceInfo();
|
||||
|
||||
console.log("Launching external protocol handler with " + device.browser + ": " + uri)
|
||||
if (device.browser === "Firefox") {
|
||||
// Use a hidden iframe otherwise Firefox will disconnect
|
||||
// from the GNS3 controller websocket if we use location.assign()
|
||||
this.openUriUsingFirefox(uri);
|
||||
} else {
|
||||
location.assign(uri);
|
||||
}
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ export class QemuService {
|
||||
}
|
||||
|
||||
getImagePath(server: Server, filename: string): string {
|
||||
return `${server.protocol}//${server.host}:${server.port}/v2/compute/qemu/images/${filename}`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/v2/compute/qemu/images/${filename}`;
|
||||
}
|
||||
|
||||
getBinaries(server: Server): Observable<QemuBinary[]> {
|
||||
|
@ -83,7 +83,7 @@ export class ServerService {
|
||||
}
|
||||
|
||||
public getServerUrl(server: Server) {
|
||||
return `${server.protocol}//${server.host}:${server.port}/`;
|
||||
return `${server.protocol}://${server.host}:${server.port}/`;
|
||||
}
|
||||
|
||||
public checkServerVersion(server: Server): Observable<any> {
|
||||
|
@ -256,7 +256,6 @@ export class TemplateMocksService {
|
||||
console_http_port: 80,
|
||||
console_resolution: '1024x768',
|
||||
console_type: 'telnet',
|
||||
mac_address: '',
|
||||
custom_adapters: [],
|
||||
default_name_format: '{name}-{0}',
|
||||
environment: '',
|
||||
|
@ -5,6 +5,6 @@ export function getTestServer(): Server {
|
||||
server.host = '127.0.0.1';
|
||||
server.port = 3080;
|
||||
server.authorization = 'none';
|
||||
server.protocol = 'http:';
|
||||
server.protocol = 'http';
|
||||
return server;
|
||||
}
|
||||
|
@ -38,7 +38,7 @@
|
||||
<body class="mat-app-background" oncontextmenu="return false;">
|
||||
<app-root></app-root>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-0BT7QQV1W1"></script>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5D6FZL9923"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() {
|
||||
@ -46,7 +46,7 @@
|
||||
}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-0BT7QQV1W1');
|
||||
gtag('config', 'G-5D6FZL9923');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
378
yarn.lock
378
yarn.lock
@ -220,13 +220,13 @@
|
||||
|
||||
"@angular/core@9.0.0":
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e"
|
||||
resolved "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz"
|
||||
integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==
|
||||
|
||||
"@angular/core@^12.2.12":
|
||||
version "12.2.17"
|
||||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-12.2.17.tgz#15c70a46de66f3d9500b2dc8e233f30328e83ad0"
|
||||
integrity sha512-XUvTgU0D8XqNH5Y7UlTMk/XjUQaEGC0kZxhw/QSSQr65WrXtXmcD4d8Cg84TJ52uGXmf7IAruKvtbvu1Mbmvug==
|
||||
version "12.2.13"
|
||||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-12.2.13.tgz#fc40acbdcee5c5878bd249ddc0d643be724076c3"
|
||||
integrity sha512-tZ5nAnmOi418JDaJIFiiP9z2JrluMJZvUvXO4QDUs52BXaL2yuP7MJ2LczWOVJXrBLZXeZGfjDjZmaFPA24grg==
|
||||
dependencies:
|
||||
tslib "^2.2.0"
|
||||
|
||||
@ -1785,10 +1785,10 @@
|
||||
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz"
|
||||
integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
|
||||
|
||||
"@socket.io/component-emitter@~3.1.0":
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2"
|
||||
integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==
|
||||
"@socket.io/base64-arraybuffer@~1.0.2":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61"
|
||||
integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==
|
||||
|
||||
"@szmarczak/http-timer@^1.1.2":
|
||||
version "1.1.2"
|
||||
@ -1827,6 +1827,11 @@
|
||||
resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz"
|
||||
integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
|
||||
|
||||
"@types/component-emitter@^1.2.10":
|
||||
version "1.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506"
|
||||
integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==
|
||||
|
||||
"@types/cookie@^0.4.1":
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
|
||||
@ -2984,21 +2989,21 @@ bluebird@^3.5.0, bluebird@^3.5.5:
|
||||
resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
|
||||
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
|
||||
|
||||
body-parser@1.20.3, body-parser@^1.19.0:
|
||||
version "1.20.3"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
|
||||
integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
|
||||
body-parser@1.20.1, body-parser@^1.19.0:
|
||||
version "1.20.1"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
|
||||
integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
|
||||
dependencies:
|
||||
bytes "3.1.2"
|
||||
content-type "~1.0.5"
|
||||
content-type "~1.0.4"
|
||||
debug "2.6.9"
|
||||
depd "2.0.0"
|
||||
destroy "1.2.0"
|
||||
http-errors "2.0.0"
|
||||
iconv-lite "0.4.24"
|
||||
on-finished "2.4.1"
|
||||
qs "6.13.0"
|
||||
raw-body "2.5.2"
|
||||
qs "6.11.0"
|
||||
raw-body "2.5.1"
|
||||
type-is "~1.6.18"
|
||||
unpipe "1.0.0"
|
||||
|
||||
@ -3277,17 +3282,6 @@ call-bind@^1.0.0, call-bind@^1.0.2:
|
||||
function-bind "^1.1.1"
|
||||
get-intrinsic "^1.0.2"
|
||||
|
||||
call-bind@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
|
||||
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
set-function-length "^1.2.1"
|
||||
|
||||
callsites@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
|
||||
@ -3644,7 +3638,7 @@ compare-version@^0.1.2:
|
||||
resolved "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz"
|
||||
integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=
|
||||
|
||||
component-emitter@^1.2.1:
|
||||
component-emitter@^1.2.1, component-emitter@~1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
||||
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
|
||||
@ -3736,11 +3730,6 @@ content-type@~1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
|
||||
|
||||
content-type@~1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
|
||||
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
|
||||
|
||||
convert-source-map@^1.5.1, convert-source-map@^1.7.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz"
|
||||
@ -3753,10 +3742,10 @@ cookie-signature@1.0.6:
|
||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
||||
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
|
||||
|
||||
cookie@0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
|
||||
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
|
||||
cookie@0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
|
||||
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
|
||||
|
||||
cookie@^0.4.1, cookie@~0.4.1:
|
||||
version "0.4.2"
|
||||
@ -4420,13 +4409,6 @@ debug@~3.1.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@~4.3.4:
|
||||
version "4.3.5"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
|
||||
integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debuglog@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz"
|
||||
@ -4486,15 +4468,6 @@ defer-to-connect@^1.0.1:
|
||||
resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz"
|
||||
integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
|
||||
|
||||
define-data-property@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
||||
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
es-errors "^1.3.0"
|
||||
gopd "^1.0.1"
|
||||
|
||||
define-lazy-prop@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
|
||||
@ -4760,9 +4733,9 @@ eev@^0.1.5:
|
||||
integrity sha512-U7+up/+0JaC+ffyrMicGDzb+j2Q04Fy22tKK1Xh6hHFWdVtXwoBF8M2DwFofwsJzJcs3W3NPDvmxcMak5/iQaA==
|
||||
|
||||
ejs@^3.1.6:
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
|
||||
integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
|
||||
version "3.1.8"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
|
||||
integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
|
||||
dependencies:
|
||||
jake "^10.8.5"
|
||||
|
||||
@ -4843,11 +4816,6 @@ encodeurl@^1.0.2, encodeurl@~1.0.2:
|
||||
resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
|
||||
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
|
||||
|
||||
encodeurl@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
|
||||
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
|
||||
|
||||
encoding@^0.1.12:
|
||||
version "0.1.13"
|
||||
resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz"
|
||||
@ -4862,15 +4830,17 @@ end-of-stream@^1.1.0:
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
engine.io-parser@~5.2.1:
|
||||
version "5.2.2"
|
||||
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49"
|
||||
integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==
|
||||
engine.io-parser@~5.0.0:
|
||||
version "5.0.3"
|
||||
resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.3.tgz#ca1f0d7b11e290b4bfda251803baea765ed89c09"
|
||||
integrity sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==
|
||||
dependencies:
|
||||
"@socket.io/base64-arraybuffer" "~1.0.2"
|
||||
|
||||
engine.io@~6.5.2:
|
||||
version "6.5.5"
|
||||
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.5.tgz#430b80d8840caab91a50e9e23cb551455195fc93"
|
||||
integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==
|
||||
engine.io@~6.1.0:
|
||||
version "6.1.2"
|
||||
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.1.2.tgz#e7b9d546d90c62246ffcba4d88594be980d3855a"
|
||||
integrity sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==
|
||||
dependencies:
|
||||
"@types/cookie" "^0.4.1"
|
||||
"@types/cors" "^2.8.12"
|
||||
@ -4880,8 +4850,8 @@ engine.io@~6.5.2:
|
||||
cookie "~0.4.1"
|
||||
cors "~2.8.5"
|
||||
debug "~4.3.1"
|
||||
engine.io-parser "~5.2.1"
|
||||
ws "~8.17.1"
|
||||
engine.io-parser "~5.0.0"
|
||||
ws "~8.2.3"
|
||||
|
||||
enhanced-resolve@^5.10.0, enhanced-resolve@^5.8.0:
|
||||
version "5.12.0"
|
||||
@ -4925,18 +4895,6 @@ error-ex@^1.3.1:
|
||||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
es-define-property@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
|
||||
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
|
||||
dependencies:
|
||||
get-intrinsic "^1.2.4"
|
||||
|
||||
es-errors@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
|
||||
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
||||
|
||||
es-module-lexer@^0.7.1:
|
||||
version "0.7.1"
|
||||
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.7.1.tgz#c2c8e0f46f2df06274cdaf0dd3f3b33e0a0b267d"
|
||||
@ -5196,36 +5154,36 @@ expand-brackets@^2.1.4:
|
||||
to-regex "^3.0.1"
|
||||
|
||||
express@^4.17.1:
|
||||
version "4.21.0"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.21.0.tgz#d57cb706d49623d4ac27833f1cbc466b668eb915"
|
||||
integrity sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==
|
||||
version "4.18.2"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
|
||||
integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
|
||||
dependencies:
|
||||
accepts "~1.3.8"
|
||||
array-flatten "1.1.1"
|
||||
body-parser "1.20.3"
|
||||
body-parser "1.20.1"
|
||||
content-disposition "0.5.4"
|
||||
content-type "~1.0.4"
|
||||
cookie "0.6.0"
|
||||
cookie "0.5.0"
|
||||
cookie-signature "1.0.6"
|
||||
debug "2.6.9"
|
||||
depd "2.0.0"
|
||||
encodeurl "~2.0.0"
|
||||
encodeurl "~1.0.2"
|
||||
escape-html "~1.0.3"
|
||||
etag "~1.8.1"
|
||||
finalhandler "1.3.1"
|
||||
finalhandler "1.2.0"
|
||||
fresh "0.5.2"
|
||||
http-errors "2.0.0"
|
||||
merge-descriptors "1.0.3"
|
||||
merge-descriptors "1.0.1"
|
||||
methods "~1.1.2"
|
||||
on-finished "2.4.1"
|
||||
parseurl "~1.3.3"
|
||||
path-to-regexp "0.1.10"
|
||||
path-to-regexp "0.1.7"
|
||||
proxy-addr "~2.0.7"
|
||||
qs "6.13.0"
|
||||
qs "6.11.0"
|
||||
range-parser "~1.2.1"
|
||||
safe-buffer "5.2.1"
|
||||
send "0.19.0"
|
||||
serve-static "1.16.2"
|
||||
send "0.18.0"
|
||||
serve-static "1.15.0"
|
||||
setprototypeof "1.2.0"
|
||||
statuses "2.0.1"
|
||||
type-is "~1.6.18"
|
||||
@ -5402,13 +5360,13 @@ finalhandler@1.1.2:
|
||||
statuses "~1.5.0"
|
||||
unpipe "~1.0.0"
|
||||
|
||||
finalhandler@1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
|
||||
integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
|
||||
finalhandler@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
|
||||
integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
encodeurl "~2.0.0"
|
||||
encodeurl "~1.0.2"
|
||||
escape-html "~1.0.3"
|
||||
on-finished "2.4.1"
|
||||
parseurl "~1.3.3"
|
||||
@ -5459,9 +5417,9 @@ flatten@^1.0.2:
|
||||
integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
|
||||
|
||||
follow-redirects@^1.0.0:
|
||||
version "1.15.6"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
|
||||
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
|
||||
version "1.14.8"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
|
||||
integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==
|
||||
|
||||
for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
@ -5569,11 +5527,6 @@ function-bind@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||
|
||||
gauge@~2.7.3:
|
||||
version "2.7.4"
|
||||
resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"
|
||||
@ -5607,17 +5560,6 @@ get-intrinsic@^1.0.2:
|
||||
has "^1.0.3"
|
||||
has-symbols "^1.0.3"
|
||||
|
||||
get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
|
||||
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
|
||||
dependencies:
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
has-proto "^1.0.1"
|
||||
has-symbols "^1.0.3"
|
||||
hasown "^2.0.0"
|
||||
|
||||
get-stream@^4.0.0, get-stream@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz"
|
||||
@ -5771,13 +5713,6 @@ globby@^6.1.0:
|
||||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
gopd@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
|
||||
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
|
||||
dependencies:
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
got@^9.6.0:
|
||||
version "9.6.0"
|
||||
resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz"
|
||||
@ -5840,18 +5775,6 @@ has-flag@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
||||
|
||||
has-property-descriptors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
||||
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
||||
dependencies:
|
||||
es-define-property "^1.0.0"
|
||||
|
||||
has-proto@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
|
||||
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
|
||||
|
||||
has-symbols@^1.0.1, has-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz"
|
||||
@ -5917,13 +5840,6 @@ has@^1.0.3:
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hasown@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
|
||||
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
hdr-histogram-js@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.1.tgz#ecb1ff2bcb6181c3e93ff4af9472c28c7e97284e"
|
||||
@ -6223,20 +6139,15 @@ ip-regex@^2.1.0:
|
||||
integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
|
||||
|
||||
ip@^1.1.0, ip@^1.1.5:
|
||||
version "1.1.9"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396"
|
||||
integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==
|
||||
version "1.1.5"
|
||||
resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz"
|
||||
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
|
||||
|
||||
ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
|
||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
||||
|
||||
ipaddr.js@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f"
|
||||
integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==
|
||||
|
||||
is-absolute-url@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698"
|
||||
@ -7247,10 +7158,10 @@ memory-fs@^0.4.1:
|
||||
errno "^0.1.3"
|
||||
readable-stream "^2.0.1"
|
||||
|
||||
merge-descriptors@1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
|
||||
integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
|
||||
merge-descriptors@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
|
||||
integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
|
||||
|
||||
merge-source-map@^1.1.0:
|
||||
version "1.1.0"
|
||||
@ -7435,11 +7346,6 @@ minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minipass@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
|
||||
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
|
||||
|
||||
minizlib@^2.0.0, minizlib@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
|
||||
@ -7512,9 +7418,9 @@ nan@^2.12.1:
|
||||
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
|
||||
|
||||
nanoid@^3.1.23, nanoid@^3.1.30:
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
|
||||
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
|
||||
integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
|
||||
|
||||
nanomatch@^1.2.9:
|
||||
version "1.2.13"
|
||||
@ -7845,10 +7751,10 @@ object-copy@^0.1.0:
|
||||
define-property "^0.2.5"
|
||||
kind-of "^3.0.3"
|
||||
|
||||
object-inspect@^1.13.1:
|
||||
version "1.13.2"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
|
||||
integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
|
||||
object-inspect@^1.9.0:
|
||||
version "1.12.2"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
|
||||
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
|
||||
|
||||
object-is@^1.0.1:
|
||||
version "1.1.5"
|
||||
@ -8192,10 +8098,10 @@ path-parse@^1.0.6:
|
||||
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
path-to-regexp@0.1.10:
|
||||
version "0.1.10"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
|
||||
integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
|
||||
path-to-regexp@0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
|
||||
integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
|
||||
|
||||
path-type@^4.0.0:
|
||||
version "4.0.0"
|
||||
@ -9025,12 +8931,12 @@ qjobs@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
|
||||
integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
|
||||
|
||||
qs@6.13.0:
|
||||
version "6.13.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
|
||||
integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
|
||||
qs@6.11.0:
|
||||
version "6.11.0"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
|
||||
integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
|
||||
dependencies:
|
||||
side-channel "^1.0.6"
|
||||
side-channel "^1.0.4"
|
||||
|
||||
qs@~6.5.2:
|
||||
version "6.5.3"
|
||||
@ -9064,10 +8970,10 @@ range-parser@^1.2.1, range-parser@~1.2.1:
|
||||
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
|
||||
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
||||
|
||||
raw-body@2.5.2:
|
||||
version "2.5.2"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
|
||||
integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
|
||||
raw-body@2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
|
||||
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
|
||||
dependencies:
|
||||
bytes "3.1.2"
|
||||
http-errors "2.0.0"
|
||||
@ -9652,10 +9558,10 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
send@0.19.0:
|
||||
version "0.19.0"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
|
||||
integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
|
||||
send@0.18.0:
|
||||
version "0.18.0"
|
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
|
||||
integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
|
||||
dependencies:
|
||||
debug "2.6.9"
|
||||
depd "2.0.0"
|
||||
@ -9679,9 +9585,9 @@ serialize-error@^7.0.1:
|
||||
type-fest "^0.13.1"
|
||||
|
||||
serialize-javascript@^6.0.0:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
|
||||
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz"
|
||||
integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
|
||||
dependencies:
|
||||
randombytes "^2.1.0"
|
||||
|
||||
@ -9698,33 +9604,21 @@ serve-index@^1.9.1:
|
||||
mime-types "~2.1.17"
|
||||
parseurl "~1.3.2"
|
||||
|
||||
serve-static@1.16.2:
|
||||
version "1.16.2"
|
||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
|
||||
integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
|
||||
serve-static@1.15.0:
|
||||
version "1.15.0"
|
||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
|
||||
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
|
||||
dependencies:
|
||||
encodeurl "~2.0.0"
|
||||
encodeurl "~1.0.2"
|
||||
escape-html "~1.0.3"
|
||||
parseurl "~1.3.3"
|
||||
send "0.19.0"
|
||||
send "0.18.0"
|
||||
|
||||
set-blocking@^2.0.0, set-blocking@~2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-function-length@^1.2.1:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
||||
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
||||
dependencies:
|
||||
define-data-property "^1.1.4"
|
||||
es-errors "^1.3.0"
|
||||
function-bind "^1.1.2"
|
||||
get-intrinsic "^1.2.4"
|
||||
gopd "^1.0.1"
|
||||
has-property-descriptors "^1.0.2"
|
||||
|
||||
set-value@^2.0.0, set-value@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
|
||||
@ -9781,15 +9675,14 @@ shebang-regex@^3.0.0:
|
||||
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
|
||||
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
||||
|
||||
side-channel@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
|
||||
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
|
||||
side-channel@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
|
||||
integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
es-errors "^1.3.0"
|
||||
get-intrinsic "^1.2.4"
|
||||
object-inspect "^1.13.1"
|
||||
call-bind "^1.0.0"
|
||||
get-intrinsic "^1.0.2"
|
||||
object-inspect "^1.9.0"
|
||||
|
||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||
version "3.0.5"
|
||||
@ -9853,34 +9746,31 @@ snyk@^1.1064.0:
|
||||
resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.1064.0.tgz#e73b3a1aff585f6266f73ddd498c5cfd5e67aff0"
|
||||
integrity sha512-f9mNO5rUc5nVVZ1sN+do2i5/RGHKlOQoNk5HiEO9WkPEn2pFllJv2XAw5Bn7sFj1eLXNFVUOUlo6SVqGnX7lXw==
|
||||
|
||||
socket.io-adapter@~2.5.2:
|
||||
version "2.5.5"
|
||||
resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082"
|
||||
integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==
|
||||
dependencies:
|
||||
debug "~4.3.4"
|
||||
ws "~8.17.1"
|
||||
socket.io-adapter@~2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz#4d6111e4d42e9f7646e365b4f578269821f13486"
|
||||
integrity sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==
|
||||
|
||||
socket.io-parser@~4.2.4:
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83"
|
||||
integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==
|
||||
socket.io-parser@~4.0.4:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.5.tgz#cb404382c32324cc962f27f3a44058cf6e0552df"
|
||||
integrity sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==
|
||||
dependencies:
|
||||
"@socket.io/component-emitter" "~3.1.0"
|
||||
"@types/component-emitter" "^1.2.10"
|
||||
component-emitter "~1.3.0"
|
||||
debug "~4.3.1"
|
||||
|
||||
socket.io@^4.2.0:
|
||||
version "4.7.5"
|
||||
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8"
|
||||
integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8"
|
||||
integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==
|
||||
dependencies:
|
||||
accepts "~1.3.4"
|
||||
base64id "~2.0.0"
|
||||
cors "~2.8.5"
|
||||
debug "~4.3.2"
|
||||
engine.io "~6.5.2"
|
||||
socket.io-adapter "~2.5.2"
|
||||
socket.io-parser "~4.2.4"
|
||||
engine.io "~6.1.0"
|
||||
socket.io-adapter "~2.3.3"
|
||||
socket.io-parser "~4.0.4"
|
||||
|
||||
sockjs-client@^1.5.0:
|
||||
version "1.5.2"
|
||||
@ -10336,13 +10226,13 @@ tapable@^2.1.1, tapable@^2.2.0:
|
||||
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
|
||||
|
||||
tar@^6.0.2, tar@^6.1.0:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
|
||||
integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
|
||||
version "6.1.11"
|
||||
resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz"
|
||||
integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==
|
||||
dependencies:
|
||||
chownr "^2.0.0"
|
||||
fs-minipass "^2.0.0"
|
||||
minipass "^5.0.0"
|
||||
minipass "^3.0.0"
|
||||
minizlib "^2.1.1"
|
||||
mkdirp "^1.0.3"
|
||||
yallist "^4.0.0"
|
||||
@ -11230,16 +11120,16 @@ write-file-atomic@^3.0.0:
|
||||
typedarray-to-buffer "^3.1.5"
|
||||
|
||||
ws@^6.2.1:
|
||||
version "6.2.3"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee"
|
||||
integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==
|
||||
version "6.2.2"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
|
||||
integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
|
||||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
|
||||
ws@~8.17.1:
|
||||
version "8.17.1"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b"
|
||||
integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==
|
||||
ws@~8.2.3:
|
||||
version "8.2.3"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
|
||||
integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
|
||||
|
||||
xdg-basedir@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
Reference in New Issue
Block a user