From ac020271c1d228b0b147b46e4c1d22db40c2e158 Mon Sep 17 00:00:00 2001 From: Bronley Plumb Date: Thu, 2 Nov 2023 15:46:03 -0400 Subject: [PATCH 1/6] Enable `noUnusedLocals` tsconfig flag --- src/BrightScriptDeclaration.ts | 3 +- src/BrightScriptReferenceProvider.ts | 1 - src/BrightScriptXmlDefinitionProvider.ts | 4 --- src/DebugConfigurationProvider.spec.ts | 2 -- src/DebugConfigurationProvider.ts | 11 ------ src/DeclarationProvider.ts | 1 - src/DefinitionRepository.ts | 1 - src/LanguageServerManager.spec.ts | 1 - src/LanguageServerManager.ts | 2 +- src/LogDocumentLinkProvider.spec.ts | 2 +- src/LogDocumentLinkProvider.ts | 4 --- src/LogOutputManager.spec.ts | 4 +-- src/LogOutputManager.ts | 29 +-------------- src/SymbolInformationRepository.ts | 4 +-- src/autoIndent.spec.ts | 1 - src/commands/BrighterScriptPreviewCommand.ts | 5 ++- src/commands/CaptureScreenshotCommand.ts | 1 - src/commands/LanguageServerInfoCommand.ts | 3 -- src/extension-web.ts | 3 -- src/extension.spec.ts | 1 - src/extension.ts | 4 +-- src/formatter.ts | 2 -- src/managers/WebviewViewProviderManager.ts | 4 +-- src/managers/WhatsNewManager.spec.ts | 3 -- src/mockVscode.spec.ts | 36 +++++++++---------- src/util.spec.ts | 2 -- src/util.ts | 2 +- src/viewProviders/BaseRdbViewProvider.ts | 1 - .../OnlineDevicesViewProvider.ts | 2 -- .../RokuRegistryViewProvider.spec.ts | 11 ------ tsconfig.json | 4 +-- 31 files changed, 32 insertions(+), 122 deletions(-) diff --git a/src/BrightScriptDeclaration.ts b/src/BrightScriptDeclaration.ts index ade7c290..f15c293b 100644 --- a/src/BrightScriptDeclaration.ts +++ b/src/BrightScriptDeclaration.ts @@ -5,8 +5,7 @@ import type { } from 'vscode'; import { Location, - SymbolKind, - TextDocument + SymbolKind } from 'vscode'; import * as vscode from 'vscode'; diff --git a/src/BrightScriptReferenceProvider.ts b/src/BrightScriptReferenceProvider.ts index 7adffa70..f8498443 100644 --- a/src/BrightScriptReferenceProvider.ts +++ b/src/BrightScriptReferenceProvider.ts @@ -53,7 +53,6 @@ export class BrightScriptReferenceProvider implements vscode.ReferenceProvider { let locations = []; let searchTerm = word; let regex = new RegExp(searchTerm, 'ig'); - let wordLength = word.length; for (const [line, text] of iterlines(input)) { let result; while ((result = regex.exec(text))) { diff --git a/src/BrightScriptXmlDefinitionProvider.ts b/src/BrightScriptXmlDefinitionProvider.ts index db5dfcb0..20438707 100644 --- a/src/BrightScriptXmlDefinitionProvider.ts +++ b/src/BrightScriptXmlDefinitionProvider.ts @@ -1,13 +1,9 @@ import * as vscode from 'vscode'; - import type { CancellationToken, Definition, DefinitionProvider, Position, TextDocument } from 'vscode'; -import { - Range -} from 'vscode'; import { BrightScriptDeclaration } from './BrightScriptDeclaration'; import BrightScriptFileUtils from './BrightScriptFileUtils'; diff --git a/src/DebugConfigurationProvider.spec.ts b/src/DebugConfigurationProvider.spec.ts index efd53e4c..702abb65 100644 --- a/src/DebugConfigurationProvider.spec.ts +++ b/src/DebugConfigurationProvider.spec.ts @@ -1,5 +1,3 @@ -/* eslint-disable no-template-curly-in-string */ -import * as brighterscript from 'brighterscript'; import { assert, expect } from 'chai'; import * as path from 'path'; import { createSandbox } from 'sinon'; diff --git a/src/DebugConfigurationProvider.ts b/src/DebugConfigurationProvider.ts index 279ea0ef..25b6eeb0 100644 --- a/src/DebugConfigurationProvider.ts +++ b/src/DebugConfigurationProvider.ts @@ -18,7 +18,6 @@ import { fileUtils } from 'roku-debug'; import { util } from './util'; import type { TelemetryManager } from './managers/TelemetryManager'; import type { ActiveDeviceManager, RokuDeviceDetails } from './ActiveDeviceManager'; -import { debounce } from 'debounce'; /** * An id to represent the "Enter manually" option in the host picker @@ -68,14 +67,6 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio deactivateOnSessionEnd: false } }; - - let config: any = vscode.workspace.getConfiguration('brightscript') || {}; - this.showDeviceInfoMessages = config.deviceDiscovery?.showInfoMessages; - - vscode.workspace.onDidChangeConfiguration((e) => { - let config: any = vscode.workspace.getConfiguration('brightscript') || {}; - this.showDeviceInfoMessages = config.deviceDiscovery?.showInfoMessages; - }); } //make unit testing easier by adding these imports properties @@ -83,7 +74,6 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio public util = util; private configDefaults: any; - private showDeviceInfoMessages: boolean; /** * Massage a debug configuration just before a debug session is being launched, @@ -390,7 +380,6 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio //replace all environment variable placeholders with their values while ((match = regexp.exec(configValue))) { let environmentVariableName = match[1]; - let environmentVariableValue = envConfig[environmentVariableName]; configValue = configDefaults[key]; console.log(`The configuration value for ${key} was not found in the env file under the name ${environmentVariableName}. Defaulting the value to: ${configValue}`); } diff --git a/src/DeclarationProvider.ts b/src/DeclarationProvider.ts index fcb16c92..85b7008a 100644 --- a/src/DeclarationProvider.ts +++ b/src/DeclarationProvider.ts @@ -137,7 +137,6 @@ export class DeclarationProvider implements Disposable { } private onDidChangeFile(uri: Uri) { - const excludes = getExcludeGlob(); this.dirty.set(uri.fsPath, uri); } diff --git a/src/DefinitionRepository.ts b/src/DefinitionRepository.ts index 5f6a78e9..60b98ff7 100644 --- a/src/DefinitionRepository.ts +++ b/src/DefinitionRepository.ts @@ -4,7 +4,6 @@ import type { Position, TextDocument } from 'vscode'; -import { Uri } from 'vscode'; import { BrightScriptDeclaration } from './BrightScriptDeclaration'; import type { DeclarationProvider } from './DeclarationProvider'; import { getExcludeGlob } from './DeclarationProvider'; diff --git a/src/LanguageServerManager.spec.ts b/src/LanguageServerManager.spec.ts index eec0d799..24893b63 100644 --- a/src/LanguageServerManager.spec.ts +++ b/src/LanguageServerManager.spec.ts @@ -29,7 +29,6 @@ Module.prototype.require = function hijacked(file) { const tempDir = s`${process.cwd()}/.tmp`; describe('extension', () => { - let context: any; let languageServerManager: LanguageServerManager; beforeEach(() => { diff --git a/src/LanguageServerManager.ts b/src/LanguageServerManager.ts index 6e1113e1..3ae371a2 100644 --- a/src/LanguageServerManager.ts +++ b/src/LanguageServerManager.ts @@ -263,7 +263,7 @@ export class LanguageServerManager { this.simpleSubscriptions.push( vscode.languages.registerDefinitionProvider(selector, definitionProvider), vscode.languages.registerDocumentSymbolProvider(selector, new BrightScriptDocumentSymbolProvider(this.declarationProvider)), - vscode.languages.registerWorkspaceSymbolProvider(new BrightScriptWorkspaceSymbolProvider(this.declarationProvider, symbolInformationRepository)), + vscode.languages.registerWorkspaceSymbolProvider(new BrightScriptWorkspaceSymbolProvider(symbolInformationRepository)), vscode.languages.registerReferenceProvider(selector, new BrightScriptReferenceProvider()), vscode.languages.registerSignatureHelpProvider(selector, new BrightScriptSignatureHelpProvider(this.definitionRepository), '(', ',') ); diff --git a/src/LogDocumentLinkProvider.spec.ts b/src/LogDocumentLinkProvider.spec.ts index feb9a4e2..439eedad 100644 --- a/src/LogDocumentLinkProvider.spec.ts +++ b/src/LogDocumentLinkProvider.spec.ts @@ -1,4 +1,4 @@ -import { assert, expect } from 'chai'; +import { expect } from 'chai'; import * as path from 'path'; import * as sinonImport from 'sinon'; diff --git a/src/LogDocumentLinkProvider.ts b/src/LogDocumentLinkProvider.ts index 57aa8b85..71a8530e 100644 --- a/src/LogDocumentLinkProvider.ts +++ b/src/LogDocumentLinkProvider.ts @@ -2,7 +2,6 @@ import * as path from 'path'; import * as rokuDeploy from 'roku-deploy'; import { DocumentLink, Position, Range } from 'vscode'; import * as vscode from 'vscode'; -import { util } from './util'; import BrightscriptFileUtils from './BrightScriptFileUtils'; import type { BrightScriptLaunchConfiguration } from './DebugConfigurationProvider'; @@ -38,7 +37,6 @@ export class LogDocumentLinkProvider implements vscode.DocumentLinkProvider { public fileUtils: BrightscriptFileUtils; public async setLaunchConfig(launchConfig: BrightScriptLaunchConfiguration) { - this.launchConfig = launchConfig; this.fileMaps = {}; let sourceRootDir = launchConfig.sourceDirs ? launchConfig.sourceDirs : [launchConfig.rootDir]; @@ -70,8 +68,6 @@ export class LogDocumentLinkProvider implements vscode.DocumentLinkProvider { public fileMaps: Record; public customLinks: DocumentLink[]; - private launchConfig: BrightScriptLaunchConfiguration; - public provideDocumentLinks(doc: vscode.TextDocument, token: vscode.CancellationToken) { return this.customLinks; } diff --git a/src/LogOutputManager.spec.ts b/src/LogOutputManager.spec.ts index e274c718..e1eca6c2 100644 --- a/src/LogOutputManager.spec.ts +++ b/src/LogOutputManager.spec.ts @@ -20,9 +20,7 @@ Module.prototype.require = function hijacked(file) { import { DeclarationProvider } from './DeclarationProvider'; import { LogDocumentLinkProvider } from './LogDocumentLinkProvider'; import { LogLine, LogOutputManager } from './LogOutputManager'; -import type { BSDebugDiagnostic } from 'roku-debug'; -import { DiagnosticsEvent, LaunchStartEvent, LogOutputEvent } from 'roku-debug'; -import { util } from 'brighterscript'; +import { LaunchStartEvent, LogOutputEvent } from 'roku-debug'; describe('LogOutputManager ', () => { let logOutputManagerMock: Sinon.SinonMock; diff --git a/src/LogOutputManager.ts b/src/LogOutputManager.ts index 9a3dc361..37c141c9 100644 --- a/src/LogOutputManager.ts +++ b/src/LogOutputManager.ts @@ -1,6 +1,5 @@ import * as vscode from 'vscode'; -import type { BSDebugDiagnostic } from 'roku-debug'; -import { isChanperfEvent, isDiagnosticsEvent, isLaunchStartEvent, isLogOutputEvent, isPopupMessageEvent, isRendezvousEvent } from 'roku-debug'; +import { isChanperfEvent, isLaunchStartEvent, isLogOutputEvent, isPopupMessageEvent, isRendezvousEvent } from 'roku-debug'; import type { DeclarationProvider } from './DeclarationProvider'; import type { LogDocumentLinkProvider } from './LogDocumentLinkProvider'; import { CustomDocumentLink } from './LogDocumentLinkProvider'; @@ -31,7 +30,6 @@ export class LogOutputManager { this.loadConfigSettings(); }); - this.context = context; let subscriptions = context.subscriptions; this.includeRegex = null; this.logLevelRegex = null; @@ -85,7 +83,6 @@ export class LogOutputManager { this.clearOutput(); } - private context: any; private displayedLogLines: LogLine[]; private allLogLines: LogLine[]; private markCount: number; @@ -247,30 +244,6 @@ export class LogOutputManager { } } - private getMatches(str, regex) { - const matches = []; - let match; - - if (regex.global) { - regex.lastIndex = 0; - } else { - regex = new RegExp(regex.source, 'g' + - (regex.ignoreCase ? 'i' : '') + - (regex.multiline ? 'm' : '') + - (regex.sticky ? 'y' : '')); - } - - while (match === regex.exec(str)) { - matches.push(match); - - if (regex.lastIndex === match.index) { - regex.lastIndex++; - } - } - - return matches; - } - private showMessage(message: string, severity: string) { const methods = { error: vscode.window.showErrorMessage, diff --git a/src/SymbolInformationRepository.ts b/src/SymbolInformationRepository.ts index 4d16e032..e061e55d 100644 --- a/src/SymbolInformationRepository.ts +++ b/src/SymbolInformationRepository.ts @@ -10,12 +10,10 @@ import type { DeclarationProvider } from './DeclarationProvider'; export class BrightScriptWorkspaceSymbolProvider implements WorkspaceSymbolProvider { - constructor(provider: DeclarationProvider, symbolInformationRepository: SymbolInformationRepository) { - this.declarationProvider = provider; + constructor(symbolInformationRepository: SymbolInformationRepository) { this.repo = symbolInformationRepository; } - private declarationProvider: DeclarationProvider; private repo: SymbolInformationRepository; public provideWorkspaceSymbols(query: string, token: CancellationToken): Promise { diff --git a/src/autoIndent.spec.ts b/src/autoIndent.spec.ts index 9317b392..c1605567 100644 --- a/src/autoIndent.spec.ts +++ b/src/autoIndent.spec.ts @@ -1,5 +1,4 @@ import { readFileSync } from 'fs-extra'; -import * as glob from 'glob'; import { expect } from 'chai'; import undent from 'undent'; interface IndentationRulesJSON { diff --git a/src/commands/BrighterScriptPreviewCommand.ts b/src/commands/BrighterScriptPreviewCommand.ts index 33257814..6b7c00a1 100644 --- a/src/commands/BrighterScriptPreviewCommand.ts +++ b/src/commands/BrighterScriptPreviewCommand.ts @@ -1,6 +1,5 @@ -import { Uri, Position, Range } from 'vscode'; +import { Uri, Range } from 'vscode'; import * as vscode from 'vscode'; -import { extension } from '../extension'; import { util } from '../util'; import * as path from 'path'; import * as querystring from 'querystring'; @@ -129,7 +128,7 @@ export class BrighterScriptPreviewCommand { /** * Sync a source editor to the selection in the preview editor */ - private async syncSourceLocation(uri: vscode.Uri) { + public async syncSourceLocation(uri: vscode.Uri) { let sourceFsPath = this.getSourcePathFromPreviewUri(uri); let activePreview = this.activePreviews[sourceFsPath]; diff --git a/src/commands/CaptureScreenshotCommand.ts b/src/commands/CaptureScreenshotCommand.ts index 58d00a6f..e7bcb42f 100644 --- a/src/commands/CaptureScreenshotCommand.ts +++ b/src/commands/CaptureScreenshotCommand.ts @@ -1,5 +1,4 @@ import * as vscode from 'vscode'; -import * as fsExtra from 'fs-extra'; import * as rokuDeploy from 'roku-deploy'; import type { BrightScriptCommands } from '../BrightScriptCommands'; diff --git a/src/commands/LanguageServerInfoCommand.ts b/src/commands/LanguageServerInfoCommand.ts index a183f120..7f8d7b01 100644 --- a/src/commands/LanguageServerInfoCommand.ts +++ b/src/commands/LanguageServerInfoCommand.ts @@ -5,10 +5,7 @@ import * as path from 'path'; export class LanguageServerInfoCommand { public static commandName = 'extension.brightscript.languageServer.info'; - private context: vscode.ExtensionContext; public register(context: vscode.ExtensionContext) { - this.context = context; - context.subscriptions.push(vscode.commands.registerCommand(LanguageServerInfoCommand.commandName, async () => { const commands = [{ label: `Change Selected BrighterScript Version`, diff --git a/src/extension-web.ts b/src/extension-web.ts index ea973e0f..292aebab 100644 --- a/src/extension-web.ts +++ b/src/extension-web.ts @@ -1,8 +1,5 @@ import type * as vscode from 'vscode'; -//TODO move this to a common file since it's duplicated in extension.ts -const EXTENSION_ID = 'RokuCommunity.brightscript'; - export class Extension { public async activate(context: vscode.ExtensionContext) { diff --git a/src/extension.spec.ts b/src/extension.spec.ts index 55e3c59e..41376bba 100644 --- a/src/extension.spec.ts +++ b/src/extension.spec.ts @@ -21,7 +21,6 @@ Module.prototype.require = function hijacked(file) { }; describe('extension', () => { - let context: any; let originalWebviews; const extensionInstance = extension.extension; diff --git a/src/extension.ts b/src/extension.ts index 0f17ac94..d494977e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -96,14 +96,12 @@ export class Extension { const definitionRepo = new DefinitionRepository(declarationProvider); - let languageServerPromise = languageServerManager.init(context, definitionRepo); - //register a tree data provider for this extension's "RENDEZVOUS" view in the debug area let rendezvousViewProvider = new RendezvousViewProvider(context); vscode.window.registerTreeDataProvider(ViewProviderId.rendezvousView, rendezvousViewProvider); //register a tree data provider for this extension's "Online Devices" view - let onlineDevicesViewProvider = new OnlineDevicesViewProvider(context, activeDeviceManager); + let onlineDevicesViewProvider = new OnlineDevicesViewProvider(activeDeviceManager); vscode.window.registerTreeDataProvider(ViewProviderId.onlineDevicesView, onlineDevicesViewProvider); context.subscriptions.push(vscode.commands.registerCommand('extension.brightscript.rendezvous.clearHistory', async () => { diff --git a/src/formatter.ts b/src/formatter.ts index e5d32520..81bedb37 100644 --- a/src/formatter.ts +++ b/src/formatter.ts @@ -2,11 +2,9 @@ import type { FormattingOptions } from 'brighterscript-formatter'; import { Runner, Formatter as BrighterScriptFormatter } from 'brighterscript-formatter'; import type { DocumentRangeFormattingEditProvider, - ProviderResult, TextDocument } from 'vscode'; import { - EndOfLine, Position, Range, TextEdit, diff --git a/src/managers/WebviewViewProviderManager.ts b/src/managers/WebviewViewProviderManager.ts index 26c9ff5f..061d9b83 100644 --- a/src/managers/WebviewViewProviderManager.ts +++ b/src/managers/WebviewViewProviderManager.ts @@ -11,9 +11,9 @@ import { RokuAutomationViewViewProvider } from '../viewProviders/RokuAutomationV export class WebviewViewProviderManager { constructor( - private context: vscode.ExtensionContext, + context: vscode.ExtensionContext, private rtaManager: RtaManager, - private brightScriptCommands: BrightScriptCommands + brightScriptCommands: BrightScriptCommands ) { for (const webview of this.webviewViews) { diff --git a/src/managers/WhatsNewManager.spec.ts b/src/managers/WhatsNewManager.spec.ts index 41626775..c11aa701 100644 --- a/src/managers/WhatsNewManager.spec.ts +++ b/src/managers/WhatsNewManager.spec.ts @@ -1,12 +1,9 @@ import { expect } from 'chai'; import * as semver from 'semver'; -import { createSandbox } from 'sinon'; import { GlobalStateManager } from '../GlobalStateManager'; import { vscode } from '../mockVscode.spec'; import { WhatsNewManager } from './WhatsNewManager'; -const sinon = createSandbox(); - describe('WhatsNewManager', () => { let whatsNewManager: WhatsNewManager; let globalStateManager: GlobalStateManager; diff --git a/src/mockVscode.spec.ts b/src/mockVscode.spec.ts index d9c45773..865e63ed 100644 --- a/src/mockVscode.spec.ts +++ b/src/mockVscode.spec.ts @@ -261,32 +261,32 @@ export let vscode = { this.line = line; this.character = character; } - private line: number; - private character: number; + public line: number; + public character: number; }, ParameterInformation: class { constructor(label: string, documentation?: any) { this.label = label; this.documentation = documentation; } - private label: string; - private documentation: any; + public label: string; + public documentation: any; }, SignatureHelp: class { constructor() { this.signatures = []; } - private signatures: any[]; - private activeParameter: number; - private activeSignature: number; + public signatures: any[]; + public activeParameter: number; + public activeSignature: number; }, SignatureInformation: class { constructor(label: string, documentation?: any) { this.label = label; this.documentation = documentation; } - private label: string; - private documentation: any; + public label: string; + public documentation: any; }, Range: class { constructor(startLine: number, startCharacter: number, endLine: number, endCharacter: number) { @@ -295,10 +295,10 @@ export let vscode = { this.endLine = endLine; this.endCharacter = endCharacter; } - private startLine: number; - private startCharacter: number; - private endLine: number; - private endCharacter: number; + public startLine: number; + public startCharacter: number; + public endLine: number; + public endCharacter: number; }, SymbolKind: { File: 0, @@ -335,7 +335,7 @@ export let vscode = { } private text: any; - private fileName: string; + public fileName: string; public getText() { return this.text; } @@ -368,14 +368,14 @@ export let vscode = { this.range = range; this.uri = uri; } - private range: any; - private uri: string; + public range: any; + public uri: string; }, MarkdownString: class { constructor(value: string = null) { this.value = value; } - private value: string; + public value: string; }, ThemeColor: class { }, Uri: { @@ -392,7 +392,7 @@ export let vscode = { constructor(value: string = null) { this.value = value; } - private value: string; + public value: string; } }; diff --git a/src/util.spec.ts b/src/util.spec.ts index 67b07cf7..843b3659 100644 --- a/src/util.spec.ts +++ b/src/util.spec.ts @@ -9,8 +9,6 @@ import * as sinonActual from 'sinon'; import { util } from './util'; let sinon = sinonActual.createSandbox(); -const rootDir = path.normalize(path.dirname(__dirname)); - beforeEach(() => { sinon.restore(); }); diff --git a/src/util.ts b/src/util.ts index 447b8333..8469a356 100644 --- a/src/util.ts +++ b/src/util.ts @@ -325,7 +325,7 @@ class Util { } //do value transforms - for (let [key, entry] of result) { + for (let [, entry] of result) { let { value } = entry; for (const secretValue of secretValues) { if (typeof value === 'string') { diff --git a/src/viewProviders/BaseRdbViewProvider.ts b/src/viewProviders/BaseRdbViewProvider.ts index 0b8a804b..83a70c5b 100644 --- a/src/viewProviders/BaseRdbViewProvider.ts +++ b/src/viewProviders/BaseRdbViewProvider.ts @@ -5,7 +5,6 @@ import * as fsExtra from 'fs-extra'; import * as path from 'path'; import { BaseWebviewViewProvider } from './BaseWebviewViewProvider'; -import type { RtaManager } from '../managers/RtaManager'; import { ViewProviderEvent } from './ViewProviderEvent'; import { ViewProviderCommand } from './ViewProviderCommand'; diff --git a/src/viewProviders/OnlineDevicesViewProvider.ts b/src/viewProviders/OnlineDevicesViewProvider.ts index 91b1e105..ac946ae5 100644 --- a/src/viewProviders/OnlineDevicesViewProvider.ts +++ b/src/viewProviders/OnlineDevicesViewProvider.ts @@ -2,7 +2,6 @@ import * as vscode from 'vscode'; import * as semver from 'semver'; import type { ActiveDeviceManager, RokuDeviceDetails } from '../ActiveDeviceManager'; import { icons } from '../icons'; -import { firstBy } from 'thenby'; import { util } from '../util'; import { ViewProviderId } from './ViewProviderId'; @@ -16,7 +15,6 @@ export class OnlineDevicesViewProvider implements vscode.TreeDataProvider { sinon = sinonImport.createSandbox(); - view = { - webview: { - onDidReceiveMessage: (cb) => { - callback = cb; - }, - postMessage: (message) => { } - }, - show: () => { } - }; }); afterEach(() => { sinon.restore(); diff --git a/tsconfig.json b/tsconfig.json index ca7673ab..566e1385 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,7 @@ "target": "es2018", "noImplicitAny": false, "removeComments": false, - "noUnusedLocals": false, + "noUnusedLocals": true, "noImplicitThis": true, "inlineSourceMap": false, "sourceMap": true, @@ -25,4 +25,4 @@ "webviews/src/**/*.ts": "cjs" } } -} \ No newline at end of file +} From ea894c728ca1388e1b5060f8e21c24abf7320c4b Mon Sep 17 00:00:00 2001 From: Bronley Plumb Date: Fri, 3 Nov 2023 21:41:34 -0400 Subject: [PATCH 2/6] Telemtry tracking for roku OS --- package-lock.json | 965 ++++++++++++++++-------------- package.json | 6 +- src/DebugConfigurationProvider.ts | 48 +- src/managers/TelemetryManager.ts | 12 +- 4 files changed, 563 insertions(+), 468 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43563182..1ba8cdc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "backoff": "^2.5.0", "brighterscript": "^0.65.8", "brighterscript-formatter": "^1.6.34", + "clone-deep": "^4.0.1", "debounce": "^1.2.0", "dotenv": "^6.2.0", "eventemitter3": "^5.0.1", @@ -31,7 +32,7 @@ "postman-request": "^2.88.1-postman.32", "pretty-bytes": "^5.6.0", "roku-debug": "^0.20.8", - "roku-deploy": "^3.10.3", + "roku-deploy": "^3.10.4", "roku-test-automation": "^2.0.0-beta.20", "semver": "^7.1.3", "source-map": "^0.7.3", @@ -45,6 +46,7 @@ "@types/backoff": "^2.5.2", "@types/chai": "^4.1.5", "@types/chalk": "^2.2.0", + "@types/clone-deep": "^4.0.3", "@types/fs-extra": "^5.0.4", "@types/glob": "^7.1.1", "@types/mocha": "^7.0.2", @@ -71,7 +73,7 @@ "mocha": "^9.1.3", "node-notifier": "^10.0.1", "nyc": "^15.0.0", - "ovsx": "^0.5.2", + "ovsx": "^0.8.3", "prompt": "^1.3.0", "rimraf": "^3.0.0", "sinon": "^7.2.3", @@ -108,17 +110,89 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", @@ -191,13 +265,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.20.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -246,34 +321,34 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -323,30 +398,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -376,13 +451,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -461,9 +536,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", - "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -498,33 +573,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.5", - "@babel/types": "^7.20.5", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -565,13 +640,13 @@ "dev": true }, "node_modules/@babel/types": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", - "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1216,6 +1291,12 @@ "chalk": "*" } }, + "node_modules/@types/clone-deep": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/clone-deep/-/clone-deep-4.0.3.tgz", + "integrity": "sha512-cFVh3Z2whgGDyXLOa6yuClOXIxBBx6E4vCaj12Jl2Vq18dGXUylQkoEA02MUtXtq4lPA1ofdyER+P+PjR4JlJw==", + "dev": true + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -2298,6 +2379,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "optional": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -2309,6 +2391,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -2674,6 +2757,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -2945,7 +3029,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "dev": true, + "optional": true }, "node_modules/ci-info": { "version": "2.0.0", @@ -3026,6 +3111,27 @@ "node": ">=0.8" } }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -3420,6 +3526,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "optional": true, "dependencies": { "mimic-response": "^3.1.0" }, @@ -3435,6 +3542,7 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, + "optional": true, "engines": { "node": ">=10" }, @@ -3569,6 +3677,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true, + "optional": true, "engines": { "node": ">=8" } @@ -4526,6 +4635,7 @@ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true, + "optional": true, "engines": { "node": ">=6" } @@ -4999,7 +5109,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "dev": true, + "optional": true }, "node_modules/fs-extra": { "version": "7.0.1", @@ -5171,7 +5282,8 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "dev": true, + "optional": true }, "node_modules/glob": { "version": "7.2.3", @@ -5812,7 +5924,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/ignore": { "version": "5.2.1", @@ -6097,6 +6210,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -6228,6 +6352,14 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -6552,6 +6684,7 @@ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "dev": true, "hasInstallScript": true, + "optional": true, "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" @@ -6561,7 +6694,8 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true + "dev": true, + "optional": true }, "node_modules/keyv": { "version": "3.1.0", @@ -6999,7 +7133,8 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "dev": true, + "optional": true }, "node_modules/mocha": { "version": "9.2.2", @@ -7222,7 +7357,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "dev": true, + "optional": true }, "node_modules/natural-compare": { "version": "1.4.0", @@ -7321,6 +7457,7 @@ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.30.0.tgz", "integrity": "sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==", "dev": true, + "optional": true, "dependencies": { "semver": "^7.3.5" }, @@ -7774,17 +7911,18 @@ } }, "node_modules/ovsx": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.2.tgz", - "integrity": "sha512-UbLultRCk46WddeA0Cly4hoRhzBJUiLgbIEViXlgOvV54LbsppClDkMLoCevUUBHoiNdMX2NuiSgURAEXgCZdw==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.8.3.tgz", + "integrity": "sha512-LG7wTzy4eYV/KolFeO4AwWPzQSARvCONzd5oHQlNvYOlji2r/zjbdK8pyObZN84uZlk6rQBWrJrAdJfh/SX0Hg==", "dev": true, "dependencies": { + "@vscode/vsce": "^2.19.0", "commander": "^6.1.0", "follow-redirects": "^1.14.6", "is-ci": "^2.0.0", "leven": "^3.1.0", - "tmp": "^0.2.1", - "vsce": "^2.6.3" + "semver": "^7.5.2", + "tmp": "^0.2.1" }, "bin": { "ovsx": "lib/ovsx" @@ -8247,6 +8385,7 @@ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "dev": true, + "optional": true, "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -8538,9 +8677,9 @@ "dev": true }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8939,9 +9078,9 @@ } }, "node_modules/roku-deploy": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.10.3.tgz", - "integrity": "sha512-COJSQ638QklcM+8AN1nujFuzT04rTZLFuLSww35edm8w/y0l60oF/Iu7TQ46m75DwoGFzGFfomLEmA1ltQk9mA==", + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.10.4.tgz", + "integrity": "sha512-Drl0c78HjZejaC0zovm4f/pJRCw0DbbBzR5Pe+ADKlMfOSJuF4UvNaejJzgbTcGXKkeztgOBvu5xxpOL7gqhWQ==", "dependencies": { "chalk": "^2.4.2", "dateformat": "^3.0.3", @@ -8951,6 +9090,7 @@ "is-glob": "^4.0.3", "jsonc-parser": "^2.3.0", "jszip": "^3.6.0", + "lodash": "^4.17.21", "micromatch": "^4.0.4", "moment": "^2.29.1", "parse-ms": "^2.1.0", @@ -9035,9 +9175,9 @@ } }, "node_modules/roku-test-automation": { - "version": "2.0.0-beta.20", - "resolved": "https://registry.npmjs.org/roku-test-automation/-/roku-test-automation-2.0.0-beta.20.tgz", - "integrity": "sha512-k0LFT4D010aunJvXmNEr09TM2QcRt9fpAQrUxIICWuK5NKX1cVizy++Z3HzWVMoVyMvJv2MOLy7OE/umf4ZAHg==", + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/roku-test-automation/-/roku-test-automation-2.0.0-beta.21.tgz", + "integrity": "sha512-0527imDjnJg7/j3cBiwaTZQJUrUANEP+CYVrYmElT13H4PhFd3dQfb3NZFxltHKCtNngqRguwKzL9zYe+DFY3g==", "dependencies": { "@suitest/types": "^4.6.0", "ajv": "^6.12.6", @@ -9045,7 +9185,7 @@ "http-network-proxy": "^1.0.11", "needle": "^2.9.1", "path": "^0.12.7", - "roku-deploy": "^3.9.2" + "roku-deploy": "^3.10.2" } }, "node_modules/run-parallel": { @@ -9309,6 +9449,25 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9382,7 +9541,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/simple-get": { "version": "4.0.1", @@ -9403,6 +9563,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -9940,6 +10101,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, + "optional": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -9952,6 +10114,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, + "optional": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -9968,6 +10131,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -10242,6 +10406,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, + "optional": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -10606,191 +10771,63 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, - "node_modules/vsce": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.15.0.tgz", - "integrity": "sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==", - "deprecated": "vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead.", - "dev": true, + "node_modules/vscode-debugadapter": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.51.0.tgz", + "integrity": "sha512-mObaXD5/FH/z6aL2GDuyCLbnwLsYRCAJWgFid01vKW9Y5Si8OvINK+Tn+Yl/lRUbetjNuZW3j1euMEz6z8Yzqg==", + "deprecated": "This package has been renamed to @vscode/debugadapter, please update to the new name", "dependencies": { - "azure-devops-node-api": "^11.0.1", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", - "glob": "^7.0.6", - "hosted-git-info": "^4.0.2", - "keytar": "^7.7.0", - "leven": "^3.1.0", - "markdown-it": "^12.3.2", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "semver": "^5.1.0", - "tmp": "^0.2.1", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.4.23", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, + "mkdirp": "^1.0.4", + "vscode-debugprotocol": "1.51.0" + } + }, + "node_modules/vscode-debugadapter/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { - "vsce": "vsce" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 14" + "node": ">=10" } }, - "node_modules/vsce/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "node_modules/vscode-debugprotocol": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.51.0.tgz", + "integrity": "sha512-dzKWTMMyebIMPF1VYMuuQj7gGFq7guR8AFya0mKacu+ayptJfaRuM0mdHCqiOth4FnRP8mPhEroFPx6Ift8wHA==", + "deprecated": "This package has been renamed to @vscode/debugprotocol, please update to the new name" + }, + "node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", "engines": { - "node": ">=4" + "node": ">=8.0.0 || >=10.0.0" } }, - "node_modules/vsce/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "node_modules/vscode-languageclient": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "minimatch": "^3.0.4", + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" }, "engines": { - "node": ">=4" + "vscode": "^1.52.0" } }, - "node_modules/vsce/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/vsce/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/vsce/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/vsce/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/vsce/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/vsce/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/vsce/node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/vscode-debugadapter": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.51.0.tgz", - "integrity": "sha512-mObaXD5/FH/z6aL2GDuyCLbnwLsYRCAJWgFid01vKW9Y5Si8OvINK+Tn+Yl/lRUbetjNuZW3j1euMEz6z8Yzqg==", - "deprecated": "This package has been renamed to @vscode/debugadapter, please update to the new name", - "dependencies": { - "mkdirp": "^1.0.4", - "vscode-debugprotocol": "1.51.0" - } - }, - "node_modules/vscode-debugadapter/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vscode-debugprotocol": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.51.0.tgz", - "integrity": "sha512-dzKWTMMyebIMPF1VYMuuQj7gGFq7guR8AFya0mKacu+ayptJfaRuM0mdHCqiOth4FnRP8mPhEroFPx6Ift8wHA==", - "deprecated": "This package has been renamed to @vscode/debugprotocol, please update to the new name" - }, - "node_modules/vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", - "engines": { - "node": ">=8.0.0 || >=10.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", - "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", - "dependencies": { - "minimatch": "^3.0.4", - "semver": "^7.3.4", - "vscode-languageserver-protocol": "3.16.0" - }, - "engines": { - "vscode": "^1.52.0" - } - }, - "node_modules/vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", - "dependencies": { - "vscode-languageserver-protocol": "3.16.0" - }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" } }, "node_modules/vscode-languageserver-protocol": { @@ -11286,12 +11323,71 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { @@ -11347,13 +11443,14 @@ } }, "@babel/generator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.20.5", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { @@ -11391,28 +11488,28 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { @@ -11450,24 +11547,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -11488,13 +11585,13 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -11557,9 +11654,9 @@ } }, "@babel/parser": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", - "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/runtime": { @@ -11582,30 +11679,30 @@ } }, "@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.5", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.5", - "@babel/types": "^7.20.5", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -11634,13 +11731,13 @@ } }, "@babel/types": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", - "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -12160,6 +12257,12 @@ "chalk": "*" } }, + "@types/clone-deep": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/clone-deep/-/clone-deep-4.0.3.tgz", + "integrity": "sha512-cFVh3Z2whgGDyXLOa6yuClOXIxBBx6E4vCaj12Jl2Vq18dGXUylQkoEA02MUtXtq4lPA1ofdyER+P+PjR4JlJw==", + "dev": true + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -12995,6 +13098,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "optional": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -13006,6 +13110,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "optional": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -13293,6 +13398,7 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "optional": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -13491,7 +13597,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true + "dev": true, + "optional": true }, "ci-info": { "version": "2.0.0", @@ -13556,6 +13663,23 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, "clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -13870,6 +13994,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "optional": true, "requires": { "mimic-response": "^3.1.0" }, @@ -13878,7 +14003,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true + "dev": true, + "optional": true } } }, @@ -13974,7 +14100,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true + "dev": true, + "optional": true }, "diff": { "version": "5.0.0", @@ -14705,7 +14832,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true + "dev": true, + "optional": true }, "express": { "version": "4.18.2", @@ -15080,7 +15208,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "dev": true, + "optional": true }, "fs-extra": { "version": "7.0.1", @@ -15200,7 +15329,8 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true + "dev": true, + "optional": true }, "glob": { "version": "7.2.3", @@ -15676,7 +15806,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true + "dev": true, + "optional": true }, "ignore": { "version": "5.2.1", @@ -15868,6 +15999,14 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -15957,6 +16096,11 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -16217,6 +16361,7 @@ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "dev": true, + "optional": true, "requires": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" @@ -16226,7 +16371,8 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true + "dev": true, + "optional": true } } }, @@ -16568,7 +16714,8 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true + "dev": true, + "optional": true }, "mocha": { "version": "9.2.2", @@ -16744,7 +16891,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true + "dev": true, + "optional": true }, "natural-compare": { "version": "1.4.0", @@ -16833,6 +16981,7 @@ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.30.0.tgz", "integrity": "sha512-qWO5l3SCqbwQavymOmtTVuCWZE23++S+rxyoHjXqUmPyzRcaoI4lA2gO55/drddGnedAyjA7sk76SfQ5lfUMnw==", "dev": true, + "optional": true, "requires": { "semver": "^7.3.5" } @@ -17181,17 +17330,18 @@ } }, "ovsx": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.5.2.tgz", - "integrity": "sha512-UbLultRCk46WddeA0Cly4hoRhzBJUiLgbIEViXlgOvV54LbsppClDkMLoCevUUBHoiNdMX2NuiSgURAEXgCZdw==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/ovsx/-/ovsx-0.8.3.tgz", + "integrity": "sha512-LG7wTzy4eYV/KolFeO4AwWPzQSARvCONzd5oHQlNvYOlji2r/zjbdK8pyObZN84uZlk6rQBWrJrAdJfh/SX0Hg==", "dev": true, "requires": { + "@vscode/vsce": "^2.19.0", "commander": "^6.1.0", "follow-redirects": "^1.14.6", "is-ci": "^2.0.0", "leven": "^3.1.0", - "tmp": "^0.2.1", - "vsce": "^2.6.3" + "semver": "^7.5.2", + "tmp": "^0.2.1" } }, "p-cancelable": { @@ -17547,6 +17697,7 @@ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", "dev": true, + "optional": true, "requires": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -17755,9 +17906,9 @@ "dev": true }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -18069,9 +18220,9 @@ } }, "roku-deploy": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.10.3.tgz", - "integrity": "sha512-COJSQ638QklcM+8AN1nujFuzT04rTZLFuLSww35edm8w/y0l60oF/Iu7TQ46m75DwoGFzGFfomLEmA1ltQk9mA==", + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/roku-deploy/-/roku-deploy-3.10.4.tgz", + "integrity": "sha512-Drl0c78HjZejaC0zovm4f/pJRCw0DbbBzR5Pe+ADKlMfOSJuF4UvNaejJzgbTcGXKkeztgOBvu5xxpOL7gqhWQ==", "requires": { "chalk": "^2.4.2", "dateformat": "^3.0.3", @@ -18081,6 +18232,7 @@ "is-glob": "^4.0.3", "jsonc-parser": "^2.3.0", "jszip": "^3.6.0", + "lodash": "^4.17.21", "micromatch": "^4.0.4", "moment": "^2.29.1", "parse-ms": "^2.1.0", @@ -18146,9 +18298,9 @@ } }, "roku-test-automation": { - "version": "2.0.0-beta.20", - "resolved": "https://registry.npmjs.org/roku-test-automation/-/roku-test-automation-2.0.0-beta.20.tgz", - "integrity": "sha512-k0LFT4D010aunJvXmNEr09TM2QcRt9fpAQrUxIICWuK5NKX1cVizy++Z3HzWVMoVyMvJv2MOLy7OE/umf4ZAHg==", + "version": "2.0.0-beta.21", + "resolved": "https://registry.npmjs.org/roku-test-automation/-/roku-test-automation-2.0.0-beta.21.tgz", + "integrity": "sha512-0527imDjnJg7/j3cBiwaTZQJUrUANEP+CYVrYmElT13H4PhFd3dQfb3NZFxltHKCtNngqRguwKzL9zYe+DFY3g==", "requires": { "@suitest/types": "^4.6.0", "ajv": "^6.12.6", @@ -18156,7 +18308,7 @@ "http-network-proxy": "^1.0.11", "needle": "^2.9.1", "path": "^0.12.7", - "roku-deploy": "^3.9.2" + "roku-deploy": "^3.10.2" } }, "run-parallel": { @@ -18361,6 +18513,21 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -18408,13 +18575,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true + "dev": true, + "optional": true }, "simple-get": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "dev": true, + "optional": true, "requires": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -18855,6 +19024,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, + "optional": true, "requires": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -18867,6 +19037,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, + "optional": true, "requires": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -18880,6 +19051,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "optional": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -19088,6 +19260,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -19364,108 +19537,6 @@ } } }, - "vsce": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.15.0.tgz", - "integrity": "sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==", - "dev": true, - "requires": { - "azure-devops-node-api": "^11.0.1", - "chalk": "^2.4.2", - "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", - "glob": "^7.0.6", - "hosted-git-info": "^4.0.2", - "keytar": "^7.7.0", - "leven": "^3.1.0", - "markdown-it": "^12.3.2", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "semver": "^5.1.0", - "tmp": "^0.2.1", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.4.23", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - } - } - }, "vscode-debugadapter": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.51.0.tgz", diff --git a/package.json b/package.json index 132c68dc..3eefb411 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "backoff": "^2.5.0", "brighterscript": "^0.65.8", "brighterscript-formatter": "^1.6.34", + "clone-deep": "^4.0.1", "debounce": "^1.2.0", "dotenv": "^6.2.0", "eventemitter3": "^5.0.1", @@ -73,7 +74,7 @@ "postman-request": "^2.88.1-postman.32", "pretty-bytes": "^5.6.0", "roku-debug": "^0.20.8", - "roku-deploy": "^3.10.3", + "roku-deploy": "^3.10.4", "roku-test-automation": "^2.0.0-beta.20", "semver": "^7.1.3", "source-map": "^0.7.3", @@ -87,6 +88,7 @@ "@types/backoff": "^2.5.2", "@types/chai": "^4.1.5", "@types/chalk": "^2.2.0", + "@types/clone-deep": "^4.0.3", "@types/fs-extra": "^5.0.4", "@types/glob": "^7.1.1", "@types/mocha": "^7.0.2", @@ -113,7 +115,7 @@ "mocha": "^9.1.3", "node-notifier": "^10.0.1", "nyc": "^15.0.0", - "ovsx": "^0.5.2", + "ovsx": "^0.8.3", "prompt": "^1.3.0", "rimraf": "^3.0.0", "sinon": "^7.2.3", diff --git a/src/DebugConfigurationProvider.ts b/src/DebugConfigurationProvider.ts index 25b6eeb0..a625c748 100644 --- a/src/DebugConfigurationProvider.ts +++ b/src/DebugConfigurationProvider.ts @@ -18,6 +18,10 @@ import { fileUtils } from 'roku-debug'; import { util } from './util'; import type { TelemetryManager } from './managers/TelemetryManager'; import type { ActiveDeviceManager, RokuDeviceDetails } from './ActiveDeviceManager'; +// eslint-disable-next-line @typescript-eslint/no-require-imports +import cloneDeep = require('clone-deep'); +import { rokuDeploy } from 'roku-deploy'; +import type { DeviceInfo } from 'roku-deploy'; /** * An id to represent the "Enter manually" option in the host picker @@ -79,38 +83,48 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio * Massage a debug configuration just before a debug session is being launched, * e.g. add all missing attributes to the debug configuration. */ - public async resolveDebugConfiguration(folder: WorkspaceFolder | undefined, config: any, token?: CancellationToken): Promise { + public async resolveDebugConfiguration(folder: WorkspaceFolder | undefined, config: BrightScriptLaunchConfiguration, token?: CancellationToken): Promise { + let deviceInfo: DeviceInfo; try { // merge user and workspace settings into the config - config = this.processUserWorkspaceSettings(config); - - //send telemetry about this debug session (don't worry, it gets sanitized...we're just checking if certain features are being used) - this.telemetryManager?.sendStartDebugSessionEvent(config); + let result = this.processUserWorkspaceSettings(config); //force a specific staging folder path because sometimes this conflicts with bsconfig.json - config.stagingFolderPath = path.join('${outDir}/.roku-deploy-staging'); + result.stagingFolderPath = path.join('${outDir}/.roku-deploy-staging'); - config = await this.sanitizeConfiguration(config, folder); - config = await this.processEnvFile(folder, config); - config = await this.processHostParameter(config); - config = await this.processPasswordParameter(config); - config = await this.processDeepLinkUrlParameter(config); - config = await this.processLogfilePath(folder, config); + result = await this.sanitizeConfiguration(result, folder); + result = await this.processEnvFile(folder, result); + result = await this.processHostParameter(result); + result = await this.processPasswordParameter(result); + result = await this.processDeepLinkUrlParameter(result); + result = await this.processLogfilePath(folder, result); - await this.context.workspaceState.update('enableDebuggerAutoRecovery', config.enableDebuggerAutoRecovery); + deviceInfo = await rokuDeploy.getDeviceInfo({ host: result.host, remotePort: result.remotePort, enhance: true }); + + if (!deviceInfo.developerEnabled) { + throw new Error(`Cannot deploy: '${result.host}' has not enabled developer mode`); + } - return config; + await this.context.workspaceState.update('enableDebuggerAutoRecovery', result.enableDebuggerAutoRecovery); + + return result; } catch (e) { //log any exceptions to the extension panel this.extensionOutputChannel.append((e as Error).stack); throw e; + } finally { + //send telemetry about this debug session (don't worry, it gets sanitized...we're just checking if certain features are being used) + this.telemetryManager?.sendStartDebugSessionEvent( + this.processUserWorkspaceSettings(config) as any, + deviceInfo + ); } } /** * There are several debug-level config values that can be stored in user settings, so get those */ - private processUserWorkspaceSettings(config: BrightScriptLaunchConfiguration) { + private processUserWorkspaceSettings(config: BrightScriptLaunchConfiguration): BrightScriptLaunchConfiguration { const workspaceConfig = vscode.workspace.getConfiguration('brightscript.debug'); let userWorkspaceSettings = {} as BrightScriptLaunchConfiguration; @@ -135,9 +149,9 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio //merge the user/workspace settings in with the config (the config wins on conflict) const result = { ...userWorkspaceSettings ?? {}, - ...config ?? {} + ...cloneDeep(config ?? {}) }; - return result; + return result as BrightScriptLaunchConfiguration; } /** diff --git a/src/managers/TelemetryManager.ts b/src/managers/TelemetryManager.ts index 64fa20eb..e025929b 100644 --- a/src/managers/TelemetryManager.ts +++ b/src/managers/TelemetryManager.ts @@ -3,6 +3,7 @@ import type { Disposable } from 'vscode'; import type { BrightScriptLaunchConfiguration } from '../DebugConfigurationProvider'; import type { RemoteControlModeInitiator } from './RemoteControlManager'; import * as vscode from 'vscode'; +import type { DeviceInfo } from 'roku-deploy'; const APP_INSIGHTS_KEY = '8618f206-4732-4729-88ed-d07dcf17f199'; @@ -31,7 +32,7 @@ export class TelemetryManager implements Disposable { /** * Track when a debug session has been started */ - public sendStartDebugSessionEvent(event: BrightScriptLaunchConfiguration & { preLaunchTask: string }) { + public sendStartDebugSessionEvent(event: BrightScriptLaunchConfiguration & { preLaunchTask: string }, deviceInfo?: DeviceInfo) { this.reporter.sendTelemetryEvent('startDebugSession', { enableDebugProtocol: boolToString(event.enableDebugProtocol), retainDeploymentArchive: boolToString(event.retainDeploymentArchive), @@ -45,7 +46,14 @@ export class TelemetryManager implements Disposable { isLogfilePathDefined: isDefined(event.logfilePath), isExtensionLogfilePathDefined: isDefined( vscode.workspace.getConfiguration('brightscript').get('extensionLogfilePath') - ) + ), + // include some deviceInfo data + deviceInfoSoftwareVersion: deviceInfo?.softwareVersion, + deviceInfoSoftwareBuild: deviceInfo?.softwareBuild?.toString(), + deviceInfoBrightscriptDebuggerVersion: deviceInfo?.brightscriptDebuggerVersion, + deviceInfoCountry: deviceInfo?.country, + deviceInfoLocale: deviceInfo?.locale, + deviceInfoUiResolution: deviceInfo?.uiResolution }); } From 2c659abd61127230b60a1d8fe6713d2a2e0e7582 Mon Sep 17 00:00:00 2001 From: Bronley Plumb Date: Fri, 3 Nov 2023 21:49:20 -0400 Subject: [PATCH 3/6] More gracefully recover if deviceInfo query failed --- src/DebugConfigurationProvider.spec.ts | 3 +++ src/DebugConfigurationProvider.ts | 9 +++++++-- src/viewProviders/RokuAutomationViewViewProvider.ts | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/DebugConfigurationProvider.spec.ts b/src/DebugConfigurationProvider.spec.ts index 702abb65..602791d7 100644 --- a/src/DebugConfigurationProvider.spec.ts +++ b/src/DebugConfigurationProvider.spec.ts @@ -12,6 +12,7 @@ import { standardizePath as s } from 'brighterscript'; import * as fsExtra from 'fs-extra'; import type { RokuDeviceDetails } from './ActiveDeviceManager'; import { ActiveDeviceManager } from './ActiveDeviceManager'; +import { rokuDeploy } from 'roku-deploy'; const sinon = createSandbox(); const Module = require('module'); @@ -78,6 +79,8 @@ describe('BrightScriptConfigurationProvider', () => { // Override any properties that would cause a prompt if not overridden configDefaults.host = '192.168.1.100'; configDefaults.password = 'aaaa'; + //return an empty deviceInfo response + sinon.stub(rokuDeploy, 'getDeviceInfo').returns(Promise.reject(new Error('Failure during test'))); }); afterEach(() => { diff --git a/src/DebugConfigurationProvider.ts b/src/DebugConfigurationProvider.ts index a625c748..0c020572 100644 --- a/src/DebugConfigurationProvider.ts +++ b/src/DebugConfigurationProvider.ts @@ -99,9 +99,14 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio result = await this.processDeepLinkUrlParameter(result); result = await this.processLogfilePath(folder, result); - deviceInfo = await rokuDeploy.getDeviceInfo({ host: result.host, remotePort: result.remotePort, enhance: true }); + try { + deviceInfo = await rokuDeploy.getDeviceInfo({ host: result.host, remotePort: result.remotePort, enhance: true }); + } catch (e) { + // a failed deviceInfo request should NOT fail the launch + console.error(`Failed to fetch device info for ${result.host}`, e); + } - if (!deviceInfo.developerEnabled) { + if (deviceInfo && !deviceInfo.developerEnabled) { throw new Error(`Cannot deploy: '${result.host}' has not enabled developer mode`); } diff --git a/src/viewProviders/RokuAutomationViewViewProvider.ts b/src/viewProviders/RokuAutomationViewViewProvider.ts index e9539fdd..b0feebb9 100644 --- a/src/viewProviders/RokuAutomationViewViewProvider.ts +++ b/src/viewProviders/RokuAutomationViewViewProvider.ts @@ -129,7 +129,7 @@ export class RokuAutomationViewViewProvider extends BaseRdbViewProvider { await ecp.sendText(step.value); break; case 'sendKeyPress': - await ecp.sendKeyPress(step.value as any); + await ecp.sendKeypress(step.value as any); break; } } From 273347b4333f96155956289b69fa7621d7e0716d Mon Sep 17 00:00:00 2001 From: Bronley Plumb Date: Fri, 3 Nov 2023 22:19:31 -0400 Subject: [PATCH 4/6] latest vsce --- package-lock.json | 37 +++++++++++-------------------------- package.json | 2 +- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ba8cdc3..1a7de0c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,7 +59,7 @@ "@types/yargs": "^17.0.10", "@typescript-eslint/eslint-plugin": "^5.14.0", "@typescript-eslint/parser": "^5.14.0", - "@vscode/vsce": "^2.19.0", + "@vscode/vsce": "^2.22.0", "chai": "^4.2.0", "chalk": "^4.1.2", "changelog-parser": "^2.8.0", @@ -1784,15 +1784,15 @@ } }, "node_modules/@vscode/vsce": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.19.0.tgz", - "integrity": "sha512-dAlILxC5ggOutcvJY24jxz913wimGiUrHaPkk16Gm9/PGFbz1YezWtrXsTKUtJws4fIlpX2UIlVlVESWq8lkfQ==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz", + "integrity": "sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A==", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", + "commander": "^6.2.1", "glob": "^7.0.6", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", @@ -1802,7 +1802,7 @@ "minimatch": "^3.0.3", "parse-semver": "^1.1.1", "read": "^1.0.7", - "semver": "^5.1.0", + "semver": "^7.5.2", "tmp": "^0.2.1", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", @@ -1885,15 +1885,6 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/@vscode/vsce/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/@vscode/vsce/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -12634,15 +12625,15 @@ "integrity": "sha512-XgyUoWWRQExTmd9DynIIUQo1NPex/zIeetdUAXeBjVuW9ioojM1TcDaSqOa/5QLC7lx+oEXwSU1r0XSBgzyz6w==" }, "@vscode/vsce": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.19.0.tgz", - "integrity": "sha512-dAlILxC5ggOutcvJY24jxz913wimGiUrHaPkk16Gm9/PGFbz1YezWtrXsTKUtJws4fIlpX2UIlVlVESWq8lkfQ==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.22.0.tgz", + "integrity": "sha512-8df4uJiM3C6GZ2Sx/KilSKVxsetrTBBIUb3c0W4B1EWHcddioVs5mkyDKtMNP0khP/xBILVSzlXxhV+nm2rC9A==", "dev": true, "requires": { "azure-devops-node-api": "^11.0.1", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", - "commander": "^6.1.0", + "commander": "^6.2.1", "glob": "^7.0.6", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", @@ -12653,7 +12644,7 @@ "minimatch": "^3.0.3", "parse-semver": "^1.1.1", "read": "^1.0.7", - "semver": "^5.1.0", + "semver": "^7.5.2", "tmp": "^0.2.1", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", @@ -12715,12 +12706,6 @@ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", diff --git a/package.json b/package.json index 3eefb411..75de9142 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "@types/yargs": "^17.0.10", "@typescript-eslint/eslint-plugin": "^5.14.0", "@typescript-eslint/parser": "^5.14.0", - "@vscode/vsce": "^2.19.0", + "@vscode/vsce": "^2.22.0", "chai": "^4.2.0", "chalk": "^4.1.2", "changelog-parser": "^2.8.0", From 8843494439f2a9bc00acc0a26570ba8a0e3fdbc5 Mon Sep 17 00:00:00 2001 From: Bronley Plumb Date: Fri, 3 Nov 2023 22:25:41 -0400 Subject: [PATCH 5/6] statigen@0.5.2 to fix some audit issues --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a7de0c8..fa077467 100644 --- a/package-lock.json +++ b/package-lock.json @@ -78,7 +78,7 @@ "rimraf": "^3.0.0", "sinon": "^7.2.3", "source-map-support": "^0.5.21", - "statigen": "^0.5.1", + "statigen": "^0.5.2", "terminal-overwrite": "^2.0.1", "ts-node": "^10.9.1", "tslib": "^2.3.1", @@ -9720,9 +9720,9 @@ } }, "node_modules/statigen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/statigen/-/statigen-0.5.1.tgz", - "integrity": "sha512-RQbmYx8P7/tWS5GBDSnNPBO/WVQL4eMGcQfKspv7qbMzzU+rk+qHZBel/so/5xUEYUouhzCwTLmWNgshbAB34A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/statigen/-/statigen-0.5.2.tgz", + "integrity": "sha512-Ke7gxNno5wB6g1cN1Nc31NFrAo0o54gFF9Evp/vnbVNVRgyyqNS6mrRisO5Rm3wQ/BSV65yE1JSy0fqyfXWZaQ==", "dev": true, "dependencies": { "@compodoc/live-server": "^1.2.3", @@ -9736,9 +9736,9 @@ "fast-glob": "^3.2.11", "front-matter": "^4.0.2", "fs-extra": "^10.0.1", - "latest-version": "5.1.0", "marked": "^4.0.12", "moment": "^2.29.2", + "semver": "^7.5.4", "yargs": "^17.4.0" }, "bin": { @@ -18699,9 +18699,9 @@ "dev": true }, "statigen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/statigen/-/statigen-0.5.1.tgz", - "integrity": "sha512-RQbmYx8P7/tWS5GBDSnNPBO/WVQL4eMGcQfKspv7qbMzzU+rk+qHZBel/so/5xUEYUouhzCwTLmWNgshbAB34A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/statigen/-/statigen-0.5.2.tgz", + "integrity": "sha512-Ke7gxNno5wB6g1cN1Nc31NFrAo0o54gFF9Evp/vnbVNVRgyyqNS6mrRisO5Rm3wQ/BSV65yE1JSy0fqyfXWZaQ==", "dev": true, "requires": { "@compodoc/live-server": "^1.2.3", @@ -18715,9 +18715,9 @@ "fast-glob": "^3.2.11", "front-matter": "^4.0.2", "fs-extra": "^10.0.1", - "latest-version": "5.1.0", "marked": "^4.0.12", "moment": "^2.29.2", + "semver": "^7.5.4", "yargs": "^17.4.0" }, "dependencies": { diff --git a/package.json b/package.json index 75de9142..c75e2aab 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "rimraf": "^3.0.0", "sinon": "^7.2.3", "source-map-support": "^0.5.21", - "statigen": "^0.5.1", + "statigen": "^0.5.2", "terminal-overwrite": "^2.0.1", "ts-node": "^10.9.1", "tslib": "^2.3.1", From 84b1cfd7dfd2337ca5fb45a50c54bc3b261629f8 Mon Sep 17 00:00:00 2001 From: Bronley Plumb Date: Sun, 5 Nov 2023 07:31:20 -0500 Subject: [PATCH 6/6] Tweak messaging of "dev mode disabled" popup --- src/DebugConfigurationProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DebugConfigurationProvider.ts b/src/DebugConfigurationProvider.ts index 0c020572..5fdd6183 100644 --- a/src/DebugConfigurationProvider.ts +++ b/src/DebugConfigurationProvider.ts @@ -107,7 +107,7 @@ export class BrightScriptDebugConfigurationProvider implements DebugConfiguratio } if (deviceInfo && !deviceInfo.developerEnabled) { - throw new Error(`Cannot deploy: '${result.host}' has not enabled developer mode`); + throw new Error(`Cannot deploy: developer mode is disabled on '${result.host}'`); } await this.context.workspaceState.update('enableDebuggerAutoRecovery', result.enableDebuggerAutoRecovery);